@customize-agent/server 4.38.0 → 4.39.0

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.
Files changed (45) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +22 -22
  3. package/.next/prerender-manifest.json +3 -3
  4. package/.next/server/chunks/4507.js +18 -25
  5. package/.next/server/chunks/8204.js +1 -1
  6. package/.next/server/middleware-build-manifest.js +1 -1
  7. package/.next/server/pages/404.html +1 -1
  8. package/.next/server/pages/500.html +1 -1
  9. package/.next/server/pages/asset-library.html +1 -1
  10. package/.next/server/pages/document-roles.html +1 -1
  11. package/.next/server/pages/documents.html +1 -1
  12. package/.next/server/pages/guide.html +1 -1
  13. package/.next/server/pages/index.html +1 -1
  14. package/.next/server/pages/knowledge/file-detail.html +1 -1
  15. package/.next/server/pages/knowledge/files.html +1 -1
  16. package/.next/server/pages/knowledge/manage.html +1 -1
  17. package/.next/server/pages/knowledge.html +1 -1
  18. package/.next/server/pages/models.html +1 -1
  19. package/.next/server/pages/overview.html +1 -1
  20. package/.next/server/pages/prompt.html +1 -1
  21. package/.next/server/pages/settings.html +1 -1
  22. package/.next/server/pages/system/logs.html +1 -1
  23. package/.next/server/pages-manifest.json +29 -29
  24. package/.next/static/chunks/{289-35ac595388bbd018.js → 289-12dfcb3abec1c4b4.js} +1 -1
  25. package/.next/static/chunks/563-2b116a2500a97dba.js +1 -0
  26. package/.next/static/chunks/788-961761f5858f9189.js +1 -0
  27. package/.next/static/chunks/pages/{_app-255c1f704deb9f22.js → _app-a762db84bfbda479.js} +11 -11
  28. package/.next/static/chunks/pages/documents-0e4216df99b9ec32.js +1 -0
  29. package/.next/static/chunks/pages/knowledge/files-7b78e962e432d199.js +1 -0
  30. package/.next/static/chunks/pages/knowledge/manage-7535b873ab505397.js +1 -0
  31. package/.next/static/chunks/pages/{models-218c880823283110.js → models-6ef838f3e00ba21e.js} +1 -1
  32. package/.next/static/chunks/pages/prompt-2c242e541f2e77a9.js +1 -0
  33. package/.next/static/chunks/pages/system/logs-c5a8920c6506a7e8.js +1 -0
  34. package/.next/static/yoAzkYjsXznDq-XxfwR5I/_buildManifest.js +1 -0
  35. package/package.json +9 -10
  36. package/.next/package.json +0 -1
  37. package/.next/static/YhPKcRc4g7LdFbsxK0fxU/_buildManifest.js +0 -1
  38. package/.next/static/chunks/563-b12f299d34bb9e44.js +0 -1
  39. package/.next/static/chunks/788-3afeb069ed706ac0.js +0 -1
  40. package/.next/static/chunks/pages/documents-d796eb8dca722e02.js +0 -1
  41. package/.next/static/chunks/pages/knowledge/files-8e25066889a85834.js +0 -1
  42. package/.next/static/chunks/pages/knowledge/manage-d0d0e0716e9d705b.js +0 -1
  43. package/.next/static/chunks/pages/prompt-5e1fb81efc656866.js +0 -1
  44. package/.next/static/chunks/pages/system/logs-6f45ef8d862759a2.js +0 -1
  45. /package/.next/static/{YhPKcRc4g7LdFbsxK0fxU → yoAzkYjsXznDq-XxfwR5I}/_ssgManifest.js +0 -0
@@ -9,12 +9,12 @@ ${q}
9
9
 
10
10
  资料:
11
11
  ${o}`,{signal:e,maxTokens:1800,temperature:0,diagnostics:f});return((0,n.Te)(e),s?.facts?.length)?{facts:s.facts.filter(a=>a.key&&a.value).map(a=>{let b=p.find(b=>b.id===a.fieldId||b.name===a.fieldName||b.name===a.key);return{key:b?.name||a.key,fieldId:b?.id||a.fieldId,fieldName:b?.name||a.fieldName,value:(0,n.lG)(a.value),sourceFile:a.sourceFile||"",roleId:a.roleId||"llm",processingType:a.processingType,confidence:a.confidence??.8,sourceRef:{filePath:a.sourceFile||"",roleId:a.roleId||"llm",processingType:a.processingType}}}),stages:[{type:"fact_extraction",roleId:"llm-json",status:"success",message:`LLM 按动态 schema 抽取 ${s.facts.length} 条事实`}]}:{facts:[],stages:g}}let B=["投标保证金的金额、收款账户名称、开户行与账号","电子投标文件加密方式与解密方式","开标时间、开标地点与开标程序","评标委员会组成与评标办法","招标人联系人、联系电话、邮箱与地址","投标文件递交方式与递交截止时间","空白表格填写说明与上传下载指引","公共资源交易平台监督管理部门"],C=/签章|盖章|联系人|联系电话|电话|邮箱|解密方式|开标时间|开标地点|评标办法|评标委员会|投标保证金|保证金账户|电子交易系统|空白|填写|上传|下载|递交方式|递交截止|公共资源交易监督管理|监管部门|开评标程序|采购范围|是否|符合/u;async function D(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=(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){let a=[...e.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} 存在多个来源值:${a}`)}}return j.slice(0,8)}function E(a){return(0,n.lG)(a).replace(/\s*[##]{1,6}\s*/gu,"")}function F(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()}let G=[{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 H(a,b){let c=F((0,n.lG)(b));return!(!a||!c||c.length>260||/###|第\s*\d+\s*页|共\s*\d+\s*页|律师代理费|投标文件的编制|备选投标方案|投标将被否决|投标人提供|投标有效期|电子交易系统|公共资源交易监督管理部门|中标候选|评标委员会|实质性内容作出响应/u.test(c)||/签章|盖章|联系人|联系电话|电话|邮箱|解密|开标|评标|保证金|交易系统|空白|填写|上传|下载|递交/u.test(c))&&("schedule_requirement"===a?c.length<=90&&/\d+(?:\.\d+)?\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 I=/\||第\s*\d+\s*页|共\s*\d+\s*页|[##]{1,6}| 资料参数行摘要|(?<=[日天])\s*[0-9]+(?:\.[0-9]+)?(?=[\s]*(?:招标|建设|质量|合同|项目|工程|资金|投标|开标|评标|付款|工期|开工|计划|计价|现场|资质|标段|[0-9]{1,3}[.、.]|[,,。;;]|$))/u,J=/规模|范围|工期|周期|project_scope|project_scale/iu,K=/^[A-Za-z0-9\-_.()()]+$/u,L=/(?:招标项目编号|项目编号|工程编号|标段编号|合同编号|编号)[::为是]*([A-Za-z0-9][A-Za-z0-9\-_.()()]{3,79})/gu;function M(a,b,c){let d,e=[];for(let f of a){let a=(0,n.lG)(f.value).trim();if(!a)continue;let g=I.exec(a),h=a;g&&(h=a.slice(0,g.index).replace(/[\s::,,、;;\-—|]+$/u,"").trim());let i=h!==a;if(h.length<2){c.dropped+=1;continue}let j="project_code"===f.fieldId||/编号|代码/u.test(`${f.fieldName||""}${f.key||""}`);if(j&&!K.test(h)||h.length>120&&!J.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 E((0,n.lG)(c.content)).replace(/\s+/gu,"").matchAll(L)){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 N(a){let b={localFacts:(0,q.am)(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=E(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),a.scope),projectBasicFacts:(0,q.am)(function(a){let b=[],c=new Set;for(let d of a)for(let a of E((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=F(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 G){let f=e.pattern.exec(a),g=f?.[1]?.trim();if(!g||!H(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.slice(0,80)}(a.evidence),a.scope),preciseFacts:(0,q.am)(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),a.scope),structuredTables:(0,q.am)(u(a.evidence),a.scope)},c={truncated:0,dropped:0,repaired:0};if(b.localFacts=M(b.localFacts,a.evidence,c),b.projectBasicFacts=M(b.projectBasicFacts,a.evidence,c),b.preciseFacts=M(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 O(a){return`${a.key} ${a.fieldName||""} ${a.value} ${a.roleId} ${a.processingType||""} ${a.sourceFile}`}function P(a){return/合同估算价|合同估算价格|投资估算|估算价格|工程估算价|项目估算价|最高投标限价|招标控制价/u.test(a)}function Q(a){let b=O(a);return!P(b)&&/投标保证金|发票类型|开标时间|公共资源交易监督管理|不良行为记录|投诉举报|资质投诉|投标承诺|违约金|中标服务费|交易平台|保证金账户|投标有效期|报价明细|投标报价|单价|合价|税率|增值税|利润|结算/u.test(b)}function R(a){return(0,n.lG)(a).replace(/\s+/gu," ").trim()}function S(a,b=[]){return[...new Set([a,...b,...a.split(/[\s、,。;;::/\\_-]+/u)].map(R).filter(a=>a.length>=2))]}function T(a,b,c){var d,e;let f=R(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(R).filter(Boolean):S(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 U(a,b,c,d,e,f=[]){"do_not_use"!==c.usagePolicy&&"diagnostic_only"!==c.usagePolicy&&"forbidden"!==c.derivationPolicy&&T(a,b,{label:c.name,category:c.category,required:e,source:d,fieldId:c.id,queries:S(c.name,[...c.aliases,...f])})}function V(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||[])T(c,b,{label:d,category:(0,h.oC)(b,d)?.category||"required",required:!0,source:"template"});for(let d of a.chapter.sections||[])T(c,b,{label:d,category:"section",required:!1,source:"section",queries:S(d,[a.chapter.title])});for(let d of a.plan?.requiredContents||[])T(c,b,{label:d,category:(0,h.oC)(b,d)?.category||"plan",required:!0,source:"plan"});for(let d of a.plan?.evidenceNeeds||[])T(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&&T(c,b,{label:e.name,category:(0,h.oC)(b,e.name)?.category||"spec",required:!0,source:"spec",fieldId:e.id,queries:S(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)||S(e.name,f?.aliases||[]).some(a=>d.includes(a))||a.chapter.requiredFacts.some(a=>a.includes(e.name)||e.name.includes(a)))&&T(c,b,{label:e.name,category:f?.category||"spec",required:!0,source:"spec",fieldId:e.id,queries:S(e.name,[g])})}for(let a of b.factFields)[a.name,...a.aliases].some(a=>a.length>=2&&d.includes(a))&&U(c,b,a,"profile","must_use"===a.usagePolicy,[d]);let f=R(a.requirement||"");if(f)for(let a of b.factFields)[a.name,...a.aliases].some(a=>a.length>=2&&f.includes(a))&&U(c,b,a,"requirement",!0,[f]);let g=R(a.promptTexts||"");if(g)for(let d of b.factFields)[d.name,...d.aliases].some(a=>a.length>=2&&g.includes(a))&&U(c,b,d,"prompt","must_use"===d.usagePolicy,[a.chapter.title]);return c}function W(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 X(a){let b=a.profile||h.p4,c=a.excludedEvidenceKeys,d=W([...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(O(a))?.05:0,g=W(d.filter(a=>(function(a,b,c){let d=O(a);if(Q(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 Y(a){return W(a.flatMap(a=>a.facts))}function Z(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}=${$(b.value)}${b.sourceFile?`(${e.basename(b.sourceFile)})`:""}`),c=a.facts.length?[]:(a.evidence||[]).slice(0,2).map(a=>`证据片段:${$(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
- ${b.join("\n")}`:""}function $(a){return(0,n.lG)(a).replace(/\s+/gu," ").trim().slice(0,220)}let _=/[\u3400-\u4DBF\u{20000}-\u{3FFFF}]/gu,aa=/(?:R\d+C\d+|COL\d+|第\d+行第\d+列)/giu;function ab(a){let b=a.match(/([\u4e00-\u9fa5]{2,8}?(?:镇|乡|县|市|区|街道|村))/u);return b?.[1]}function ac(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 ad(a){let b=`${a.key||""}${a.fieldName||""}${a.fieldId||""}`,c=F((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(aa.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 ae(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(_)].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!!aa.test(b)&&!!(b.replace(aa,"").trim().length<=24)}(a)).map(ad).filter(a=>(0,n.lG)(a.value).trim().length>0),c=b.find(a=>("项目名称"===a.key||"project_name"===a.fieldId)&&(0,n.lG)(a.value).trim().length>=6),d=c?F((0,n.lG)(c.value)).trim():"",e=d?ab(d):void 0;return e?b.map(a=>{let b=`${a.key||""}${a.fieldName||""}${a.fieldId||""}`,c=F((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 ac(c,e)?{...a,value:""}:a;let d=b.filter(a=>!ac(a,e));return 0===d.length?{...a,value:""}:{...a,value:d.join(";")}}return/项目名称候选|项目名称|工程名称/u.test(b)&&ac(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)||P(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,O(a))||(0,h.E1)(d,O(a))),f=a.filter(a=>{let b=O(a);return a.confidence>=.58&&!Q(a)&&!(0,h.rF)(d,b)&&!(0,h.d2)(d,b)&&!(0,h.E1)(d,b)}),g=[...b.filter(a=>!Q(a)),...f.filter(a=>m.sv.test(O(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(O(a))),j=f.filter(a=>"drawing"===a.processingType||/drawing|dwg|图纸|施工图|设计图|平面图|剖面图|大样图|详图/u.test(O(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 D(a,d,e)}}},1358:(a,b,c)=>{c.d(b,{JV:()=>k,O7:()=>h,QP:()=>l,SR:()=>g,c$:()=>j,e$:()=>i,rj:()=>f,sl:()=>r});var d=c(22157);function e(a){return a.replace(/[\s,,.。::;;||()()《》<>【】"“”'‘’]/gu,"").toLowerCase()}function f(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 g(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))&&(!(a.length<4)||!!/\d/u.test(a))}function h(a){let b=String(a.value||"").trim(),c=`${a.label}${b}`;return!(!/项目|工程|编号|地点|规模|范围|工期|质量|安全|资源|材料|设备|验收|\d/u.test(c)||!g(b)||/^(?:技术参数|精确参数)$/u.test(a.label))}function i(a,b){let c=new Set,g=[];for(let h of[...b.project,...b.schedule,...b.quality,...b.safety,...b.resources,...b.preciseFacts,...b.bills,...b.drawings,...b.rules,...b.specifications]){let b=f((0,d.lG)(h.value).replace(/\s+/gu," ").trim()),i=h.fieldName||h.key||h.fieldId||"资料事实",j=`${i}:${b}`;!b||c.has(j)||(c.add(j),g.push({label:i,value:b,sourceFile:h.sourceFile,status:!function(a,b){let c=e(a),d=e(b);if(!d||d.length<2||c.includes(d))return!0;{let a=b.split(/[;;。\n]|、|,|,/u).map(a=>e(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=>e(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=>e(a).length>=2&&c.includes(e(a)))}(a,b)?"unplaced":"used",confidence:h.confidence}))}return g}function j(a,b={}){let c=a.filter(a=>"unplaced"===a.status&&h(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}个)`:""}`}))}function k(a,b){let c=b.tables||[],d=[],f=e(a);for(let a of c){let b=a.headers.map(a=>a.replace(/\s+/gu,"").toLowerCase()),c=b.findIndex(a=>/项目名称|名称|清单项|分部分项|项目特征|工程内容|材料名称|设备名称/u.test(a)),g=b.findIndex(a=>/编码|编号|序号|项目编码/u.test(a)),h=b.findIndex(a=>/数量|工程量/u.test(a)),i=b.findIndex(a=>/单位/u.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=e(j),o=e(k),p=n.length>=3&&f.includes(n.slice(0,12))||o.length>=3&&f.includes(o.slice(0,8));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:p})}}return d.sort((a,b)=>a.placed===b.placed?0:a.placed?1:-1)}function l(a,b={}){let c=a.filter(a=>!a.placed);if(0===c.length)return[];let d=a.length,e=(d-c.length)/d,f=[];return e<.3?f.push({level:"warning",message:`BOQ 清单行级落位严重不足:${d-c.length}/${d} 行(${Math.round(100*e)}%)`,suggestion:`清单明细数量较大,建议优先补充主要分部分项、关键规格和大额工程量。未落位清单项示例:${c.slice(0,5).map(a=>`${a.itemName} ${a.quantity}${a.unit}`).join(";")}`}):e<.6&&f.push({level:"warning",message:`BOQ 清单行级落位不足:${d-c.length}/${d} 行(${Math.round(100*e)}%)`,suggestion:`建议补充落位:${c.slice(0,5).map(a=>a.itemName).join("、")}`}),f}let m=/公厕|厕所|过路涵|涵洞|涵管|污水|排水沟|水沟|清淤|沟塘|小菜园|菜园|菜地|花池|树池|挡墙|护栏|路灯|检查井|化粪池|泵站|生态池|生态塘|护坡|驳岸|栈道|步道|管网|管道|道路|铺装|绿化|景观|基础|结构|防水|屋面|外墙|内墙|地面|门窗|栏杆|电梯|电气|给水|排水|消防|通风|空调|智能化|幕墙|基坑/u,n=/^(?:管网|管道|道路|铺装|绿化|景观|基础|结构|防水|屋面|外墙|内墙|地面|门窗|栏杆|电梯|电气|给水|排水|消防|通风|空调|智能化|幕墙|基坑)$/u,o={公厕:["公共厕所","厕所"],厕所:["公厕","公共厕所"],菜地:["菜园","小菜园"],菜园:["菜地"],小菜园:["菜地"]},p=/^(?:挖|回填|运|运输|拆除|清理|浇筑|绑扎|安装|铺设|砌筑|抹灰|刷|喷|摊铺|碾压|夯实|整平|找平|支模|搭设|检测|试验|防腐|除锈)/u,q=/计价|费用|税金|规费|暂列|暂估|合计|汇总|小计|措施项目|其他项目|税金项目/u;function r(a,b,c){if(0===(c.tables||[]).length)return[];let d=b.filter(a=>/施工方法|施工方案|施工工艺|主要施工内容|分部分项/u.test(a.title)),f=d.map(a=>a.content||"").join("\n");if(!f)return[];let g=e(f),h=k(a,c),i=[],j=new Set;for(let a of h){let b=(a.itemName||"").trim();if(!b||q.test(b)||p.test(b))continue;let c=[...b.matchAll(RegExp(m.source,"gu"))].map(a=>a[0]);if(0===c.length)continue;let d=c.filter(a=>!n.test(a));if(0===d.length)continue;let f=a=>g.includes(e(a))||(o[a]||[]).some(a=>g.includes(e(a)));if(d.some(f))continue;let h=b.slice(0,12);j.has(h)||(j.add(h),i.push(`${b.slice(0,30)}${a.quantity?` ${a.quantity}${a.unit}`:""}`))}return 0===i.length?[]:[{level:"error",severity:"blocker",category:"evidence_coverage",owner:"llm",repairability:"llm_repairable",chapterId:d[0]?.id,message:`施工方法章分项覆盖缺失:${i.slice(0,6).join(";")}${i.length>6?` 等共 ${i.length} 个清单分项`:""}`,suggestion:"施工方法章必须逐项覆盖工程量清单中的全部分部分项(含公厕/过路涵/污水管网/排水沟/沟塘清淤/小菜园等专项分项):为每个缺失分项补齐施工方法小节(施工概况/施工流程/施工方法三要素齐全),禁止只写道路、铺装、绿化等大类而遗漏清单独有分项。"}]}},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:[]}),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,paths:[`quantities.${a}.value`,...(b.groups??[]).map((b,c)=>`quantities.${a}.groups[${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=>(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`]})),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","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.find(a=>"机动工期"===a.label);return d&&b.push(`- 机动工期:${d.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=>0===a.length?[]:[`- 工程量清单(合计口径;分村/分工程明细为合法多值):${a.map(a=>`${a.label} ${a.value}${a.unit}`+(a.groups?.length?`(分工程:${a.groups.map(a=>`${a.group} ${a.value}`).join("、")})`:"")).join("、")}`],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("、")}`],test:a=>0===a.length?[]:[`- 试验计划(推导口径,不得自设):${a.map(a=>`${i(a.label,"试验计划:")} ${a.value}${a.unit}`).join("、")}`],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(/[×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}let c=a?.tenderRequirements?.assemblyRate?.text;if(c)return b(c)}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_:()=>C,Fc:()=>p,Ht:()=>B,Mp:()=>k,VS:()=>i,_k:()=>r,j7:()=>n,jG:()=>j,vh:()=>h,w_:()=>A,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(/(?:[,,]\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){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 t(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 u(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 v(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 w(a){let b=a;return(b=(b=b.replace(/([\u4e00-\u9fa5A-Za-z]{2,16})工程工作包/gu,"$1工程")).replace(/(按|以|按每个|每个|的)工作包/gu,"$1专业工程")).replace(/工作包/gu,"专业工程")}function x(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 y(a){let b=a.split(/\n\s*\n/u),c=[],d=!1;for(let a of b){if(function(a){let b=a.trim();return!!(/^(?:上表|本表)/u.test(b)&&/(?:一致|修正为)/u.test(b)||/(?:全文|正文|文中)(?:不再出现|不得出现|不得再出现|不应出现|不会再出现)/u.test(b)||/不得出现跨章冲突|跨章冲突不得出现|不得与其他章节(?:矛盾|冲突)/u.test(b))}(a.replace(/\n/gu,""))){d=!0;continue}let b=a.split(/(?<=[。!?!?;;])/u),e=b.filter(a=>{var b;return b=a.replace(/\n/gu,"").trim(),!(/不得出现其他[^。;\n]{0,12}口径/u.test(b)||/[^。;\n]{0,10}口径必须(?:唯一|一致|统一)/u.test(b))});e.length!==b.length&&(d=!0),c.push(e.join(""))}return d?c.filter(Boolean).join("\n\n"):a}function z(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 A(a,b){var c,e;let g=w(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{2,}/u).map(a=>{if(/^\s*(#{1,6}\s+|[-*+]\s+|\|)/u.test(a)||a.length<=380)return a;let b=a.split(/(?<=[。;])/u).flatMap(a=>{let b=a.trim();return b?b.length>360?b.split(/(?<=[,,])/u).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")}).join("\n\n"),g=(0,d.wi)(g),g=u(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=function(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}(g=z(g=t(g=v(g=s(g=(0,f.wq)(g))))))),g=(0,d.cf)(g),y(g=x(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 B(a){return y(x(s((0,f.wq)((0,f.jM)((0,d.cf)((0,d.p8)(t(v(u(w(z(a))))))))))))}function C(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?`【最高优先级:配置写作主控提示词】
12
+ ${b.join("\n")}`:""}function $(a){return(0,n.lG)(a).replace(/\s+/gu," ").trim().slice(0,220)}let _=/[\u3400-\u4DBF\u{20000}-\u{3FFFF}]/gu,aa=/(?:R\d+C\d+|COL\d+|第\d+行第\d+列)/giu;function ab(a){let b=a.match(/([\u4e00-\u9fa5]{2,8}?(?:镇|乡|县|市|区|街道|村))/u);return b?.[1]}function ac(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 ad(a){let b=`${a.key||""}${a.fieldName||""}${a.fieldId||""}`,c=F((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(aa.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 ae(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(_)].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!!aa.test(b)&&!!(b.replace(aa,"").trim().length<=24)}(a)).map(ad).filter(a=>(0,n.lG)(a.value).trim().length>0),c=b.find(a=>("项目名称"===a.key||"project_name"===a.fieldId)&&(0,n.lG)(a.value).trim().length>=6),d=c?F((0,n.lG)(c.value)).trim():"",e=d?ab(d):void 0;return e?b.map(a=>{let b=`${a.key||""}${a.fieldName||""}${a.fieldId||""}`,c=F((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 ac(c,e)?{...a,value:""}:a;let d=b.filter(a=>!ac(a,e));return 0===d.length?{...a,value:""}:{...a,value:d.join(";")}}return/项目名称候选|项目名称|工程名称/u.test(b)&&ac(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)||P(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,O(a))||(0,h.E1)(d,O(a))),f=a.filter(a=>{let b=O(a);return a.confidence>=.58&&!Q(a)&&!(0,h.rF)(d,b)&&!(0,h.d2)(d,b)&&!(0,h.E1)(d,b)}),g=[...b.filter(a=>!Q(a)),...f.filter(a=>m.sv.test(O(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(O(a))),j=f.filter(a=>"drawing"===a.processingType||/drawing|dwg|图纸|施工图|设计图|平面图|剖面图|大样图|详图/u.test(O(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 D(a,d,e)}}},1358:(a,b,c)=>{c.d(b,{JV:()=>k,O7:()=>h,QP:()=>l,SR:()=>g,c$:()=>j,e$:()=>i,rj:()=>f,sl:()=>r});var d=c(22157);function e(a){return a.replace(/[\s,,.。::;;||()()《》<>【】"“”'‘’]/gu,"").toLowerCase()}function f(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 g(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))&&(!(a.length<4)||!!/\d/u.test(a))}function h(a){let b=String(a.value||"").trim(),c=`${a.label}${b}`;return!(!/项目|工程|编号|地点|规模|范围|工期|质量|安全|资源|材料|设备|验收|\d/u.test(c)||!g(b)||/^(?:技术参数|精确参数)$/u.test(a.label))}function i(a,b){let c=new Set,g=[];for(let h of[...b.project,...b.schedule,...b.quality,...b.safety,...b.resources,...b.preciseFacts,...b.bills,...b.drawings,...b.rules,...b.specifications]){let b=f((0,d.lG)(h.value).replace(/\s+/gu," ").trim()),i=h.fieldName||h.key||h.fieldId||"资料事实",j=`${i}:${b}`;!b||c.has(j)||(c.add(j),g.push({label:i,value:b,sourceFile:h.sourceFile,status:!function(a,b){let c=e(a),d=e(b);if(!d||d.length<2||c.includes(d))return!0;{let a=b.split(/[;;。\n]|、|,|,/u).map(a=>e(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=>e(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=>e(a).length>=2&&c.includes(e(a)))}(a,b)?"unplaced":"used",confidence:h.confidence}))}return g}function j(a,b={}){let c=a.filter(a=>"unplaced"===a.status&&h(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}个)`:""}`}))}function k(a,b){let c=b.tables||[],d=[],f=e(a);for(let a of c){let b=a.headers.map(a=>a.replace(/\s+/gu,"").toLowerCase()),c=b.findIndex(a=>/项目名称|名称|清单项|分部分项|项目特征|工程内容|材料名称|设备名称/u.test(a)),g=b.findIndex(a=>/编码|编号|序号|项目编码/u.test(a)),h=b.findIndex(a=>/数量|工程量/u.test(a)),i=b.findIndex(a=>/单位/u.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=e(j),o=e(k),p=n.length>=3&&f.includes(n.slice(0,12))||o.length>=3&&f.includes(o.slice(0,8));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:p})}}return d.sort((a,b)=>a.placed===b.placed?0:a.placed?1:-1)}function l(a){let b=a.filter(a=>!a.placed);if(0===b.length)return[];let c=a.length,d=(c-b.length)/c,e=[];return d<.3?e.push({level:"warning",message:`BOQ 清单行级落位严重不足:${c-b.length}/${c} 行(${Math.round(100*d)}%)`,suggestion:`清单明细数量较大,建议优先补充主要分部分项、关键规格和大额工程量。未落位清单项示例:${b.slice(0,5).map(a=>`${a.itemName} ${a.quantity}${a.unit}`).join(";")}`}):d<.6&&e.push({level:"warning",message:`BOQ 清单行级落位不足:${c-b.length}/${c} 行(${Math.round(100*d)}%)`,suggestion:`建议补充落位:${b.slice(0,5).map(a=>a.itemName).join("、")}`}),e}let m=/公厕|厕所|过路涵|涵洞|涵管|污水|排水沟|水沟|清淤|沟塘|小菜园|菜园|菜地|花池|树池|挡墙|护栏|路灯|检查井|化粪池|泵站|生态池|生态塘|护坡|驳岸|栈道|步道|管网|管道|道路|铺装|绿化|景观|基础|结构|防水|屋面|外墙|内墙|地面|门窗|栏杆|电梯|电气|给水|排水|消防|通风|空调|智能化|幕墙|基坑/u,n=/^(?:管网|管道|道路|铺装|绿化|景观|基础|结构|防水|屋面|外墙|内墙|地面|门窗|栏杆|电梯|电气|给水|排水|消防|通风|空调|智能化|幕墙|基坑)$/u,o={公厕:["公共厕所","厕所"],厕所:["公厕","公共厕所"],菜地:["菜园","小菜园"],菜园:["菜地"],小菜园:["菜地"]},p=/^(?:挖|回填|运|运输|拆除|清理|浇筑|绑扎|安装|铺设|砌筑|抹灰|刷|喷|摊铺|碾压|夯实|整平|找平|支模|搭设|检测|试验|防腐|除锈)/u,q=/计价|费用|税金|规费|暂列|暂估|合计|汇总|小计|措施项目|其他项目|税金项目/u;function r(a,b,c){if(0===(c.tables||[]).length)return[];let d=b.filter(a=>/施工方法|施工方案|施工工艺|主要施工内容|分部分项/u.test(a.title)),f=d.map(a=>a.content||"").join("\n");if(!f)return[];let g=e(f),h=k(a,c),i=[],j=new Set;for(let a of h){let b=(a.itemName||"").trim();if(!b||q.test(b)||p.test(b))continue;let c=[...b.matchAll(RegExp(m.source,"gu"))].map(a=>a[0]);if(0===c.length)continue;let d=c.filter(a=>!n.test(a));if(0===d.length)continue;let f=a=>g.includes(e(a))||(o[a]||[]).some(a=>g.includes(e(a)));if(d.some(f))continue;let h=b.slice(0,12);j.has(h)||(j.add(h),i.push(`${b.slice(0,30)}${a.quantity?` ${a.quantity}${a.unit}`:""}`))}return 0===i.length?[]:[{level:"error",severity:"blocker",category:"evidence_coverage",owner:"llm",repairability:"llm_repairable",chapterId:d[0]?.id,message:`施工方法章分项覆盖缺失:${i.slice(0,6).join(";")}${i.length>6?` 等共 ${i.length} 个清单分项`:""}`,suggestion:"施工方法章必须逐项覆盖工程量清单中的全部分部分项(含公厕/过路涵/污水管网/排水沟/沟塘清淤/小菜园等专项分项):为每个缺失分项补齐施工方法小节(施工概况/施工流程/施工方法三要素齐全),禁止只写道路、铺装、绿化等大类而遗漏清单独有分项。"}]}},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:[]}),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,paths:[`quantities.${a}.value`,...(b.groups??[]).map((b,c)=>`quantities.${a}.groups[${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=>(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`]})),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","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.find(a=>"机动工期"===a.label);return d&&b.push(`- 机动工期:${d.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=>0===a.length?[]:[`- 工程量清单(合计口径;分村/分工程明细为合法多值):${a.map(a=>`${a.label} ${a.value}${a.unit}`+(a.groups?.length?`(分工程:${a.groups.map(a=>`${a.group} ${a.value}`).join("、")})`:"")).join("、")}`],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("、")}`],test:a=>0===a.length?[]:[`- 试验计划(推导口径,不得自设):${a.map(a=>`${i(a.label,"试验计划:")} ${a.value}${a.unit}`).join("、")}`],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(/[×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_:()=>C,Fc:()=>p,Ht:()=>B,Mp:()=>k,VS:()=>i,_k:()=>r,j7:()=>n,jG:()=>j,vh:()=>h,w_:()=>A,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(/(?:[,,]\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){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 t(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 u(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 v(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 w(a){let b=a;return(b=(b=b.replace(/([\u4e00-\u9fa5A-Za-z]{2,16})工程工作包/gu,"$1工程")).replace(/(按|以|按每个|每个|的)工作包/gu,"$1专业工程")).replace(/工作包/gu,"专业工程")}function x(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 y(a){let b=a.split(/\n\s*\n/u),c=[],d=!1;for(let a of b){if(function(a){let b=a.trim();return!!(/^(?:上表|本表)/u.test(b)&&/(?:一致|修正为)/u.test(b)||/(?:全文|正文|文中)(?:不再出现|不得出现|不得再出现|不应出现|不会再出现)/u.test(b)||/不得出现跨章冲突|跨章冲突不得出现|不得与其他章节(?:矛盾|冲突)/u.test(b))}(a.replace(/\n/gu,""))){d=!0;continue}let b=a.split(/(?<=[。!?!?;;])/u),e=b.filter(a=>{var b;return b=a.replace(/\n/gu,"").trim(),!(/不得出现其他[^。;\n]{0,12}口径/u.test(b)||/[^。;\n]{0,10}口径必须(?:唯一|一致|统一)/u.test(b))});e.length!==b.length&&(d=!0),c.push(e.join(""))}return d?c.filter(Boolean).join("\n\n"):a}function z(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 A(a,b){var c,e;let g=w(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{2,}/u).map(a=>{if(/^\s*(#{1,6}\s+|[-*+]\s+|\|)/u.test(a)||a.length<=380)return a;let b=a.split(/(?<=[。;])/u).flatMap(a=>{let b=a.trim();return b?b.length>360?b.split(/(?<=[,,])/u).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")}).join("\n\n"),g=(0,d.wi)(g),g=u(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=function(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}(g=z(g=t(g=v(g=s(g=(0,f.wq)(g))))))),g=(0,d.cf)(g),y(g=x(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 B(a){return y(x(s((0,f.wq)((0,f.jM)((0,d.cf)((0,d.p8)(t(v(u(w(z(a))))))))))))}function C(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?`【最高优先级:配置写作主控提示词】
13
13
  ${h}`:"",i?`【章节/格式提示词】
14
14
  ${i}`:""].filter(Boolean).join("\n\n"),promptDetails:f}}},18027:(a,b,c)=>{c.d(b,{Hpz:()=>cS.Hp,h0x:()=>d.h0,bVF:()=>d.bV,bsz:()=>cS.bs,OXS:()=>dA,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(73186),n=c(1218),o=c(51190),p=c(64406),q=c(30949),r=c(80439);async function s(a){let b=(0,m.Su)(a.chapterDrafts.flatMap(a=>a.evidence||[]),a.projectMaterialScope);(0,m.U2)(b,a.projectMaterialScope,"finalize:chapter-evidence"),b.length>0&&(a.allEvidence.push(...b),a.allEvidence.splice(0,a.allEvidence.length,...(0,g.QR)(a.allEvidence,{preservePinned:!0})));let c=(0,m.Su)(a.allEvidence,a.projectMaterialScope);a.allEvidence.splice(0,a.allEvidence.length,...c),(0,m.U2)(a.allEvidence,a.projectMaterialScope,"finalize:all-evidence"),(0,e.Te)(a.signal);let d=(0,g.QR)(a.allEvidence,{preservePinned:!0});a.allEvidence.splice(0,a.allEvidence.length,...(0,m.Su)(d,a.projectMaterialScope)),(0,m.U2)(a.allEvidence,a.projectMaterialScope,"finalize:post-file-understanding"),a.facts=(0,n.B2)(a.template,a.allEvidence,a.documentSpec);let{localFacts:f,projectBasicFacts:h,preciseFacts:i,structuredTables:j}=(0,n.d6)({evidence:a.allEvidence,template:a.template,spec:a.documentSpec,profile:a.domainProfile,scope:a.projectMaterialScope,diagnostics:a.generationDiagnostics}),l=[...f,...h,...i],s={facts:[],stages:[{type:"fact_extraction",roleId:"llm-json",status:"skipped",message:"已有本地/资料事实覆盖主要必需字段,跳过 LLM 全量事实抽取"}]};if((0,n.N2)(l,a.template,a.documentSpec)){let b=(0,g.QR)(a.allEvidence,{preservePinned:!0});try{s=await (0,n.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 s.stages)(0,r.fx)(a.progressStages,b);let t=(0,o.UT)(a.allEvidence);for(let b of(a.structuredFacts=(0,m.am)((0,k.Oc)([...f,...h,...i,...s.facts,...t],a.allEvidence),a.projectMaterialScope),a.governedStructuredFacts=(0,o.A)(a.structuredFacts,a.scopeConflicts??(0,o.KX)(a.structuredFacts)),a.governedStructuredFacts))a.facts[b.key]=`${(0,e.lG)(b.value)}(来源:${b.sourceFile},角色:${b.roleId})`;a.factsModel=await (0,n.d7)(a.governedStructuredFacts,j,a.missingItems,a.documentSpec,a.domainProfile);let u=(0,o.qD)({facts:a.governedStructuredFacts,projectRoot:a.projectRoot,requirement:a.requirement||"",templateId:a.template.id});a.factsModel.canonical=u,a.scheduleAuthority=(0,p.GG)(a.factsModel),a.assemblyRateAuthority=(0,p.hI)(a.factsModel),a.scaleSummary=(0,p.Pt)(a.factsModel),a.supportAuthority=(0,p.P3)(a.factsModel),a.decisionLockEntries=(0,q.Pd)({facts:[...f,...h,...i],evidence:a.allEvidence})}function t(a){return/--|延期到|资料|附件|扫描|目录|汇总|打包|备份|\d{1,2}\.\d{1,2}/u.test(a)}function u(a){return a.replace(/[((]\d+[))]/gu,"").replace(/副本|最终版|扫描件|定稿/gu,"").replace(/[\s,。,.;;::《》“”‘’()()_-]+/gu,"").toLowerCase()}function v(a,b){let c=u(b);if(!c||c.length<4)return!0;let d=u(a);return!!d.includes(c)||c.length>=12&&d.includes(c.slice(0,Math.max(8,Math.floor(.72*c.length))))}var w=c(73859);function x(a){return a.replace(/[((]\d+[))]/gu,"").replace(/副本|最终版|扫描件|定稿/gu,"").replace(/\s+/gu,"").replace(/[,。,.;;::《》“”‘’()()_\-—–―─-〜~·•]/gu,"").toLowerCase()}function y(a,b,c){let d=a.trim();if((0,w.d2)(b,d)||(0,w.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)||c&&/项目名称|工程名称/u.test(c)&&(/所在地|地址|详见|见前附表|见招标/u.test(d)||/检查井|化粪池|机箱|碎石|路灯|井盖|监控系统|吊顶|抹灰|楼面|顶棚/u.test(d)))return"";let e=/\d+(?:\.\d+)?\s*(?:日历天|天|个月|月)/u.exec(d)?.[0],f=x(e&&/工期|总工期|合同工期|计划工期|施工周期|质保期|有效期|养护期/u.test(`${c||""} ${d}`)?e:d);return!f||f.length>80?"":f}var z=c(40299),A=c(52639),B=c(95622),C=c(23760),D=c(85016),E=c(10751),F=c(30836);let G=[{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:"招标项目编号"}],H=/(?:劳动力|人力|用工|工人|民工|工种|普工|技工|管理人员|作业人员|人数|保勤|人员|班组|峰值|高峰|机械|机具|设备|车辆|台班|挖掘机|装载机|自卸|搅拌|塔吊|吊车|起重机|进度|工期|日历天|节点|阶段|开工|竣工|进场|退场|保养|维修|周转|材料|物资|水泥|砂石|碎石|钢筋|钢管|钢材|管材|灯具|路灯|电缆|光缆|通信|线缆|配线|配管|双绞|JDG|SC管|PC管|电源|电压|照明|工作站|服务器|存储|工具|角磨|垫板|苗木|绿植|种植|养护期|保修|储备|堆放|供应|工程量|桩号|里程|K\d|管网|管道|胸径|地径|冠幅|冠丛|蓬径|工长|负责人|施工员|完成率|计划|拆除|人行道|侧石|缘石|杆件|砖基础|圈梁|构造柱|矩形柱|矩形梁|基础梁|过梁|有梁板|天沟|挑檐|雨篷|楼梯|散水|坡道|块料|墙面|吊顶|砌体|砖墙|多孔砖|实心砖|金属门|木质门|金属窗|百叶窗|百页窗|门窗|扶手|栏杆|桥架|管道基础|包管|压顶|独立基础|墙基|防潮层|给水|排水|空调|公厕|停车场|零星)/u,I=/(?:混凝土|砼|砂浆|强度|等级|标号|配合比|坍落度|水灰比|掺量|养护|浇筑|振捣|模板|支架|脚手架|搭接|锚固|保护层|垫层|找平|找坡|坡度|防水|涂膜|卷材|闭水|蓄水|淋水|回填|夯实|压实|分层|虚铺|沟槽|基槽|基坑|边坡|标高|高程|厚度|间距|埋深|覆土|管径|PPR|冷水管|井室|抹灰|腻子|涂料|面层|基层|安装|提升泵|扬程|焊接|法兰|试压|冲洗|消毒|调试|接地|防雷|绝缘|电阻|验收|检验|检测|试验|取样|频率|焊缝|防腐|除锈|开挖|平整|清底|土方|路床|碾压|摊铺|温度|降雨|雨量|接头|管枕|接口|承插|热熔|连接|封堵|距地|挂墙|挂装|嵌墙|暗配|明配|暗装|敷设|过桥|随桥|排管|人孔|通棒|内径|管孔|垂直度|偏差|漏风|通风|壁厚|接缝|遍数|密植|分叉|栽植|浇灌|试运转|严密性|渗水|牌号|材质|分辨率|图像|稳压|压力降|风速|纵距|横距|步距|立杆|连墙件|施工现场|场区|硬化|围挡|反光|封闭段|渣土)/u,J=/(?:(?<![\d.])\d+\s*(?:座|辆|根|处|盏|株|道|孔|眼|樘|d(?![A-Za-z0-9]))|\d+(?:\.\d+)?\s*(?:%|℃|人日|工日)|(?:DN|Φ|φ|HRB|HPB)\s*\d+(?:\.\d+)?)/gu;function K(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 L(a){return H.test(a)?"derivation-gap":I.test(a)?"process-gap":"unattributed"}var M=c(40693),N=c(1358),O=c(11248);function P(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,O.K3)(`${a.fieldName||a.key} ${(0,e.lG)(a.value)}`),c=(0,O.K3)((0,e.lG)(a.value));return c&&c!==b?[b,c]:[b]}).join("\n")}function Q(a,b){let c=[{label:"工期",corpus:P({...b,project:[],quality:[],safety:[],resources:[],preciseFacts:[],bills:[],drawings:[],rules:[],specifications:[]}),required:/工期|日历天|合同工期|计划工期/u},{label:"质量",corpus:P({...b,project:[],schedule:[],safety:[],resources:[],preciseFacts:[],bills:[],drawings:[],rules:[],specifications:[]}),required:/质量目标|质量标准|验收|复验/u},{label:"安全",corpus:P({...b,project:[],schedule:[],quality:[],resources:[],preciseFacts:[],bills:[],drawings:[],rules:[],specifications:[]}),required:/安全|文明|风险|应急/u},{label:"资源",corpus:P({...b,project:[],schedule:[],quality:[],safety:[],preciseFacts:[],bills:[],drawings:[],rules:[],specifications:[]}),required:/资源|材料|设备|劳动力/u},{label:"工程量",corpus:P({...b,project:[],schedule:[],quality:[],safety:[],resources:[],preciseFacts:[],drawings:[],rules:[],specifications:[]}),required:/工程量|清单|建筑面积|长度|吨|台|套|项/u}],d=(0,O.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 R(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 S(a,b){let c=[];if(!b)return c;let d=a.map(a=>`${a.title}
15
15
  ${a.content}`).join("\n\n");if(/进度|工期/u.test(d)&&/资源|材料|设备|劳动力/u.test(d)){let d=a.find(a=>/资源|材料|设备|劳动力/u.test(a.title)),e=d?b.get(d.title):void 0;e?.contentNeeds.resource||c.push({level:"warning",message:"章节逻辑依赖不足:进度章节与资源章节之间缺少明显支撑关系",suggestion:"请在资源章节补充与工期目标相匹配的劳动力、材料、设备投入和调配计划。"})}return/质量/u.test(d)&&/施工|工艺|技术/u.test(d)&&(a.some(a=>b.get(a.title)?.contentNeeds.quality||b.get(a.title)?.contentNeeds.construction)||c.push({level:"warning",message:"章节逻辑依赖不足:质量章节未明显支撑施工工艺控制",suggestion:"请在施工技术和质量章节之间补齐工艺控制点、验收要求和整改复验闭环。"})),/安全|文明|风险/u.test(d)&&(a.some(a=>b.get(a.title)?.contentNeeds.safety)||c.push({level:"warning",message:"章节逻辑依赖不足:安全章节缺少检查整改和应急支撑",suggestion:"请补齐风险识别、检查整改、应急响应和演练闭环。"})),c}let T=/安全|文明|质量|绿色施工|环保|扬尘|消防|应急|危大|风险|规范|标准|管理要求|施工工艺|技术措施|验收/u,U=/项目名称|工程名称|建设地点|建设单位|招标人|发包人|建设规模|招标范围|合同工期|计划工期|质量标准|危大工程清单|工程量|材料规格|设备型号|图纸参数|报价|单价|利润|税率|合同金额|联系方式|品牌/u,V=/报价|单价|合价|金额|利润|税率|增值税|招标控制价|最高投标限价|中标价|合同价|暂列金额/u,W=/联网增强|联网检索|网页资料|搜索结果|根据网页|互联网资料|在线资料|浏览器|搜索引擎/u,X=["项目名称","工程名称","建设地点","建设单位","招标人","发包人","建设规模","招标范围","合同工期","计划工期","工程量","报价","单价"];function Y(a){return a.replace(/&amp;/gu,"&").replace(/&lt;/gu,"<").replace(/&gt;/gu,">").replace(/&quot;/gu,'"').replace(/&#39;/gu,"'").replace(/<[^>]+>/gu,"").replace(/\s+/gu," ").trim()}async function Z(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=Y(a[1]||""),c=Y(a[2]||""),d=Y(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||U.test(b)||V.test(b)||W.test(b)||d.some(a=>a&&b.includes(a)))&&(0===c.length||c.some(b=>a.url.includes(b)))}).slice(0,b):[]}async function $(a){if(!a.config.enabled||!function(a,b){let c=`${a} ${b.join(" ")}`;return!(!T.test(c)||/项目概况|工程概况|建设地点|建设规模|招标范围|工程量|报价|造价/u.test(c)&&!/安全|文明|质量|危大|环保|工艺|措施/u.test(c))}(a.chapterTitle,a.sectionTitles))return{evidence:[],queries:[],filtered:0};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(U,"")} 公开规范 通用要求`.trim();return[...new Set(e.length?e:[f])].slice(0,c)}(a.chapterTitle,a.sectionTitles,a.config.maxQueriesPerChapter),c=[],d=0;for(let e of b)try{for(let b of(await Z(e,a.config.maxResultsPerQuery,a.config.trustedDomains,a.runtimeRules.forbiddenTerms||[],a.signal))){let e=function(a,b){let c=a;for(let a of X)c=c.replace(RegExp(`${a}[^。;;
16
16
  ]{0,80}`,"gu"),"");for(let a of b.map(a=>{var b;return null==(b=a.value)?"":"string"==typeof b||"number"==typeof b||"boolean"==typeof b?String(b).trim():""}).filter(a=>a.length>=3&&a.length<=80))c=c.replace(RegExp(a.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&"),"gu"),"");return c.replace(V,"").trim()}(b.snippet,a.localFacts);if(!e||e.length<20){d+=1;continue}c.push({chapterId:a.chapterId,filePath:b.url,score:.42,content:`参考依据:${b.title}
17
- ${e}`,source:function(a){let b=a.toLowerCase();return b.includes(".gov.cn")||b.includes("mohurd")||b.includes("zjt")||a.includes("住建")?"web-policy":"web-evidence"}(b.url),sectionTitle:a.chapterTitle})}}catch{d+=1}return{evidence:c,queries:b,filtered:d}}let _=[{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"],patterns:[/([\p{Script=Han}A-Za-z0-9]+(?:机|吊|泵|车))\s*[^\n|]{0,12}(\d+)\s*(台|套|辆)/u],locations:"机械表、平面布置、进度保障、安全专项方案"},{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 aa(a){return a.replace(/[\s,。;;::|]/gu,"").trim()}let ab=/塔式起重机|履带吊|汽车吊|卷扬机|脚手架|扣件|钢管|模板|噪声|PM2\.5|PM10|TSP|扬尘在线监测|临电|消防|安全网|围挡|洗车台|沉淀池|雾炮/u,ac=/不使用|不采用|不配置|无需|未采用|不得使用|禁止使用/u;function ad(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(aa).filter(Boolean)}var ae=c(37047),af=c(63516);let ag=/([\u4e00-\u9fa5A-Za-z0-9()()]{1,12}?)(\d+(?:\.\d+)?)\s*(mm|cm|m|米|MPa|kN|kV|kW|℃|°C|万元|元|人|天|日|个|层|樘|处|套|台|t|吨)([\u4e00-\u9fa5A-Za-z0-9()()]{0,8})/gu,ah=["直径","厚度","宽度","长度","高度","深度","间距","距离","标高","偏差","数量","面积","体积","重量","压力","温度","强度","等级","坡度","规格","尺寸","层数","次数","跨度","半径"],ai=/自然村|村组|标段|区域|点位|养护/u,aj=["开挖","封闭","回填","浇筑","铺筑","摊铺","供应","编制","提交","签订","安装","养护","试验","拆除","砌筑"];async function ak(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(ag.source,"gu"))){let c=(a[1]||"").trim(),d=Number(a[2]),f=a[3]||"",g=(a[4]||"").trim(),h=`${c}${g}`.replace(/[\s,,、;;::]/gu,"");if(h.length<2||!/[\u4e00-\u9fa5A-Za-z]{2,}/u.test(h)||!Number.isFinite(d)||d<=0||ah.some(a=>h.replace(/(?:mm|cm|m|MPa|kN|kV|kW|℃|元|万元|人|天|日|个|层|樘|处|套|台|t|吨)/gu,"").replace(/[\s,,、;;::()()]/gu,"")===a)||ai.test(h))continue;let i={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],a[2],a[3]||""),valueText:a[2]},j=b.get(a[0]);if(j){j.occurrences.push(i);continue}b.set(a[0],{concept:h,value:d,unit:f,raw:a[0],occurrences:[i]})}}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,ae.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=b.map(a=>aj.find(b=>a.raw.includes(b))||"");if(c.length>=2&&c.every(a=>""!==a)&&new Set(c).size===c.length||b.every(b=>b.occurrences.some(c=>/违约金|解除合同|提高至|自第|逾期超过/u.test(a.slice(Math.max(0,c.matchIndex-30),c.matchIndex+b.raw.length+40)))))continue;let d=[...new Set(b.map(a=>a.value))];if(d.length<2)continue;let e=Math.max(...d);if(!(e-Math.min(...d)<=.02*e)&&!(b.filter(b=>b.occurrences.some(c=>/[、/](?:与)?[A-Za-z]?\d/u.test(a.slice(c.matchIndex,c.matchIndex+b.raw.length+12)))).length>=2)&&(i.push({concept:b[0].concept,values:b}),i.length>=4))break}if(i.length>=4)break}return{groups:i}}function al(a){return a.replace(/㎡/gu,"m2").replace(/m²/giu,"m2").replace(/m³/giu,"m3").replace(/\s+/gu,"").toLowerCase()}function am(a){return a.replace(/[((][^))]*[))]/gu,"").replace(/[\s,,、;;::]/gu,"")}function an(a,b){if(!b.billFactLock||a.values.length<2)return{verdict:"no-anchor"};let c=a.values.map(a=>({value:a,matches:function(a,b){let c=b.billFactLock;if(!c||0===c.entries.length)return[];let d=Math.max(.01,.001*a.value),e=al(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.entries){if(!Number.isFinite(b.quantity)||b.quantity<=0||Math.abs(b.quantity-a.value)>d)continue;let c=al(b.unit);if(e&&c&&e!==c)continue;let h=function(a,b){let c=am(a),d=am(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}(a,b)}));if(c.every(a=>a.matches.length>0)&&c.every((a,b)=>c.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:c.map(a=>`「${a.matches[0].entry.name}」(${a.value.value}${a.value.unit})`).join("、")};let d=c.filter(a=>a.matches.length>0),e=c.filter(a=>0===a.matches.length);if(1===d.length&&e.length>0){let a=d[0].matches.find(a=>a.nameRelated);if(a)return{verdict:"single-lock-entry",lockValue:a.entry.quantity,lockUnit:a.entry.unit,entryName:a.entry.name,nonLock:e.map(a=>a.value)}}return{verdict:"no-anchor"}}async function ao(a,b){let c=await ak(a);if(c.degraded)return[c.degraded];if(0===c.groups.length)return[];let d=[],e=[];for(let f of c.groups){let c=an(f,{markdown:a,billFactLock:b?.billFactLock});"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 ap=["电梯","幕墙","智能化","消防","暖通","给排水","电气","燃气","人防","室外","园林","绿化","景观","钢结构","防水","保温","门窗","通风","空调","防雷","接地","动力","照明","拆除","加固","装修","装饰"];var aq=c(27625);let ar=/[二三四五六七八九十\d]{1,4}\s*个?\s*阶段/u,as={一:1,二:2,三:3,四:4,五:5,六:6,七:7,八:8,九:9};function at(a){return/(\d+|[一二三四五六七八九十]+)\s*个?\s*阶段/u.exec(a)?.[1]??null}function au(a){let b=a.map(at).filter(a=>null!==a).map(a=>/^\d+$/u.test(a)?parseInt(a,10):/^[一二三四五六七八九十]+$/u.test(a)?"十"===a?10:1===a.length?as[a]??null:a.startsWith("十")?10+(as[a[1]]??0):a.endsWith("十")?(as[a[0]]??0)*10:(as[a[0]]??0)*10+(as[a[2]]??0):null).filter(a=>null!==a);return 0===b.length?null:1===new Set(b).size?b[0]:null}async function av(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=ar.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,ae.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(au).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 aw=c(41991);let ax=/应急预案|应急措施|应急响应|应急救援|突发事件|应急管理|应急物资|应急演练|应急组织|应急保障/u,ay=/应急|突发|救援|预案|抢险|疏散/u,az=["应急预案的编制与响应流程","突发事件应急处置措施","应急救援组织体系与保障"],aA=["应急照明系统安装调试","应急电源配置与切换方案"],aB={organization:"应急管理领导小组、应急救援队伍的组织机构与职责分工",procedure:"应急处置程序、应急响应流程与应急演练安排",resource:"应急物资、应急器材设备的储备与保障措施"},aC=/应急物资|急救箱|灭火器|沙袋|发电机|水泵|对讲机|应急照明|应急灯|防护服|救援绳|救生衣|铁锹|编织袋|抽水泵|警示带|应急器材/u,aD=/配备|储备|保障|配置|数量|不少于|共计|套|具|个|台|把|只/u,aE=["应急物资储备清单与配备数量","应急救援器材的配置与保障"],aF=["应急照明灯具数量与回路设计","应急电源的电气系统设计"];async function aG(a){return(0,aw.A)({prototypes:[...az],negativePrototypes:[...aA],embedDocuments:a})}async function aH(a){return(0,aw.A)({prototypes:[...aE],negativePrototypes:[...aF],embedDocuments:a})}async function aI(a,b){let c=a.split(/\r?\n/u),d=[],e=c.map(a=>{let b=/^(#{2,4})\s+(.+)$/u.exec(a.trim());if(b)return{level:b[1].length,title:b[2].replace(/^\d+(?:\.\d+)*\s+/u,"").trim()}}).filter(a=>void 0!==a).filter(a=>!ax.test(a.title)&&ay.test(a.title)),f=await aG(b),g=e.length>0?await f(e.map(a=>a.title)):[],h=new Set(e.filter((a,b)=>g[b]).map(a=>a.title)),i=a=>ax.test(a)||h.has(a),j=!1,k=[],l=[],m="",n=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(i(c)){j=!0,k.push(c);continue}a<=3&&j&&(j=!1);continue}if(j&&a.trim()&&!/^\s*\|/u.test(a)){l.push(a);let b=a.replace(/\s+/gu,"");m+=b,n+=b.length}}if(0===k.length)return d;let o=[];n<300&&o.push(`字数仅 ${n} 字(要求 ≥300 字)`);let p=m.match(/.{1,200}/gu)||[],q=Object.values(aB),r=await (0,ae.Mv)(p,q),s=a=>p.some(b=>r(b,a)>=ae.Eh);s(aB.organization)||o.push("应急组织体系"),s(aB.procedure)||o.push("应急处置程序/演练");let t=await aH(b),u=l.join("。").split(/[。;;]/u).map(a=>a.trim()).filter(a=>aC.test(a)&&aD.test(a)),v=u.length>0?await t(u):[];return s(aB.resource)||v.some(Boolean)||o.push("应急物资保障"),o.length>0&&d.push({level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"llm_repairable",message:`应急预案小节深度不足:${k.join("、")}(缺少:${o.join("、")})`,suggestion:"补写应急组织体系(领导小组/抢险队与职责)、应急处置程序与演练安排、应急物资清单与保障措施,达到可落地深度。",sectionTitle:k[0]}),d}var aJ=c(70208),aK=c(91943),aL=c(54185);function aM(a){return a.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&")}function aN(a){let b=Number.parseFloat(a.replace(/[,,\s]/gu,""));return Number.isFinite(b)?b:void 0}function aO(a,b){return Math.abs(a-b)<=.01+1e-6*Math.max(Math.abs(a),Math.abs(b))}function aP(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}let aQ=/(?:每|厚度|宽度|高度|深度|长度|直径|间距|净距|坡度|标高|偏差|误差|系数|等级|龄期|温度|含水率|压实度|密度|功率|电压|照度|色温|耐火|强度|抗渗|配合比|搭接|错缝|含水|埋深|覆土|预留|预埋|伸缩|沉降|变形|垂直度|平整度|倾角|坡度|模数|螺距|壁厚|净空|层高|埋设|位置|距离|半径|周长|坡度)/u,aR=/(?:合计|共计|总计|总共|总量|总数|总长|全长|总长度|总数量|总面积|总重量|小计)(?:为|达|约|共|计)?\s*([\d,,]+(?:\.\d+)?)\s*(立方米|m³|m3|平方米|㎡|m²|m2|公里|千米|km|kg|吨|t|座|个|套|处|盏|棵|株|樘|扇|根|块|片|组|件|孔|间|栋|幢|户|米|m)(?![a-zA-Z0-9²³])/gu;function aS(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 aT(a,b){let c=function(a){switch(aP(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 aM((a||"").trim())}}(b.unit);for(let d 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 e=aM(d);if(RegExp(`${e}\\s*(?:${c})|(?:${c})\\s*${e}`,"u").test(a)||b.value>=100&&RegExp(`(?<![\\d.])${e}(?![\\d])`,"u").test(a))return!0}return!1}function aU(a,b,c){let d=a.filter(a=>a.name.length>=2&&aS(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],f=d[c];if(!(e.name===f.name&&aO(e.value,f.value))&&aO(e.value+f.value,b))return[e,f]}return[]}function aV(a,b,c,d,e){let f=new Map;for(let a of d.entries){if(!(a.value>0)||aP(a.unit)!==b)continue;let c=`${a.source}\u0000${a.name}`;f.set(c,(f.get(c)||0)+a.value)}let g=[];for(let[a,b]of f)if(aS(a.slice(a.indexOf("\0")+1),c)&&(g.some(a=>aO(a,b))||g.push(b),g.length>=24))break;if(0===g.length)return!1;let h=b=>aO(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(aO(a[d],b))return!0;return!1}(e,a-b);if(g.some(a=>h(a)))return!0;for(let a=0;a<g.length;a+=1)for(let b=a+1;b<g.length;b+=1)if(h(g[a]+g[b]))return!0;return!1}let aW=/(?: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])/gu,aX=/(?:埋深|覆土(?:厚度|深度)?|管顶覆土)(?:不小于|不大于|不低于|不超过|约|为|达|控制在|一般|宜|应)?[^。;;\n|]{0,10}?([\d,,]+(?:\.\d+)?)\s*(mm|cm|米|m)(?![a-zA-Z0-9²³])/gu,aY=/(?:约为|大约|约计|约|将近|近)\s*([\d,,]+(?:\.\d+)?)\s*(点|处|座|个|套|盏|棵|株|樘|扇|根|块|片|组|件|孔|间|栋|幢|户|米|公里|km|m2|㎡|m²|平方米|m3|m³|立方米|kg|吨|t|l|升|kw|w)(?![a-zA-Z0-9²³³])/giu,aZ=/([\d,,]+(?:\.\d+)?)\s*余\s*(点|处|座|个|套|盏|棵|株|樘|扇|根|块|片|组|件|孔|间|栋|幢|户|米|公里|km|m2|㎡|m²|平方米|m3|m³|立方米|kg|吨|t)(?![a-zA-Z0-9²³])/gu,a$=/[节制合履签违公盟密租最接靠邻附距离]/u,a_=/^(?:管道|工程|材料|项目|施工|工作|设备|设施|系统|区域|场地|道路|建筑|结构|基础|主体|管网|土建|安装|装饰|装修|土方|绿化|照明|给水|排水|电气|挖方|填方|回填|弃方|外运|运输|检测|试验|测量|清理|拆除|清淤|维护|养护|管理|服务|其他|以上|以下|其中|包括|采用|使用|型号|规格|数量|单位|合计|总计|长度|面积|体积|重量)$/u,a0=/(木质|木|铝合金|铝|不锈钢|塑钢|塑料|塑|钢|铁|砼|混凝土|铸铁|铜|复合)(门|窗|井|灯|护栏|围栏|盖板|雨水口)/gu;async function a1(a){let b=await (0,C.Z2)(a.markdown,a.factsModel,{scopeClassifier:a.factTokenScopeClassifier}),c=(0,af.Uk)(a.tenderRequirements).map(({item:a})=>(0,af.E6)(a)),d=a.markdown.split(/\n/u).filter(a=>/^#{2,4}\s/u.test(a.trim())).map(a=>(0,af.NT)(a)).filter(Boolean).slice(0,80),e=(0,p.s3)(a.markdown),f=await (0,ae.Mv)(c,[...d,...e]),g=await (0,ae.Mv)(a.evaluationCriteriaItems||[],d),i=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,C.gN)(a.markdown),...(0,C.f8)(a.markdown)]),...(0,l.yT)("section-numbering",()=>(0,C.Jn)(a.markdown)),...(0,l.yT)("section-count-overflow",()=>(0,C.VW)(a.chapters)),...(0,l.yT)("heading-duplicate",()=>(0,C.kw)(a.markdown)),...(0,l.yT)("structure-integrity",()=>(0,aK.dC)(a.markdown)),...(0,l.yT)("templated-label",()=>(0,aL.D9)(a.markdown)),...(0,l.yT)("title-integrity",()=>(0,aL.uw)(a.markdown)),...(0,l.yT)("evaluation-criteria-coverage",()=>(0,C.wl)(a.markdown,a.evaluationCriteriaItems||[],{semanticSimilarity:g})),...await (0,l.ll)("requirements-coverage",()=>(0,af.FH)(a.markdown,a.tenderRequirements,{semanticSimilarity:f,bodyTexts:e})),...(0,l.yT)("fabricated-start-date",()=>(0,p.cf)(a.markdown,a.factsModel)),...(0,l.yT)("field-value-mismatch",()=>(0,p.a8)(a.markdown,a.factsModel)),...(0,l.yT)("area-arithmetic",()=>(0,p.u2)(a.markdown)),...(0,l.yT)("resource-consistency",()=>(0,p.rA)(a.markdown,{laborPeakAuthority:(0,E.yB)(a.blueprintData)})),...(0,l.yT)("node-schedule-consistency",()=>(0,p.Et)(a.markdown)),...(0,l.yT)("cross-section-numeric-conflict",()=>(0,p.H)(a.markdown)),...(0,l.yT)("fact-reconciliation",()=>(function(a){let b=a.markdown||"";if(!b)return[];let c=function(a){let b=[],c=[],d=new Map,e=a.billFactLock;if(e)for(let a of e.entries){let e=Number.isFinite(a.quantity)?a.quantity:void 0;for(let f of(void 0!==e&&(b.push({name:(a.name||"").trim(),value:e,unit:(a.unit||"").trim(),description:a.description||"",source:"bill"}),c.push(e)),a.specQuantityPairs||[])){let b=(f.spec||"").replace(/\s+/gu,"").toLowerCase(),e=/^([\d,,]+(?:\.\d+)?)\s*(.*)$/u.exec((f.quantity||"").trim()),g=e?aN(e[1]):void 0;if(!b||void 0===g)continue;let h=d.get(b)||[];h.push({value:g,unit:(e?.[2]||"").trim(),entryName:a.name,spec:(f.spec||"").trim()}),d.set(b,h),c.push(g)}}for(let[d,e]of Object.entries(a.blueprintData?.quantities??{}))if("number"==typeof e?.value&&Number.isFinite(e.value))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);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}}(a);if(0===c.entries.length&&0===c.numberPool.length)return[];let d=[...function(a,b){let c=[];if(0===b.entries.length)return c;let d=new Set,e=[...b.numberPool].sort((a,b)=>a-b);for(let f of a.matchAll(aR)){let g=aN(f[1]);if(void 0===g)continue;let h=aP(f[2]),i=f.index??0,j=b.entries.filter(a=>a.value>0&&aP(a.unit)===h);if(0===j.length)continue;let k=a.slice(Math.max(0,i-40),i+f[0].length+40),l=a.slice(Math.max(0,i-20),i+f[0].length),m=j.filter(a=>a.name.length>=3&&l.includes(a.name)).sort((a,b)=>b.name.length-a.name.length)[0];if(m){if(aO(m.value,g)){let b=aU(j,g,k);if(b.length>=2){let e=a.slice(Math.max(0,i-150),i+f[0].length+150),h=b.filter(a=>!aT(e,a));if(h.length>0){let a=b.map(a=>`「${a.name}」${a.value}${a.unit}`).join(" + "),e=`合计数值应分项显式:「${m.name} ${g}${f[2]}」= ${a},但正文未展示分项(缺 ${h.map(a=>`${a.name} ${a.value}${a.unit}`).join("、")}),无法核对合计来源`;d.has(e)||(d.add(e),c.push({level:"warning",severity:"warning",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:e,suggestion:`在合计值附近补充分项明细(${a}),使合计数值可逐项核对;分项值必须取自工程量清单原文,不得改动。`}))}}continue}let l=g-m.value,n=j.find(a=>a!==m&&a.name!==m.name&&aO(a.value,l));if(n){let b=a.slice(Math.max(0,i-150),i+f[0].length+150);if(aT(b,m)&&aT(b,n))continue;let e=`合计值与权威不符:「${m.name}」清单权威 ${m.value}${f[2]};正文 ${g}${f[2]} \u2248 ${m.value} + ${n.value}(「${n.name}」)——若「${n.name}」应计入「${m.name}」合计,须在正文显式分项;若不应计入(重复计入),须改回权威值 ${m.value}${f[2]}`;d.has(e)||(d.add(e),c.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:e,suggestion:`核对合计口径:「${m.name}」合计为 ${m.value}${f[2]}(清单权威)。若正文需表达 ${m.value} + ${n.value},则显式写成「${m.name} ${m.value}${f[2]}、${n.name} ${n.value}${f[2]},合计 ${g}${f[2]}」;否则将合计改回 ${m.value}${f[2]}(差额 ${Math.round(1e4*l)/1e4}${f[2]} 属「${n.name}」,不得并入)。`}));continue}if(aV(g,h,k,b,e))continue;let o=`合计值与权威不符:「${m.name}」合计为 ${m.value}${f[2]}(清单权威),正文写 ${g}${f[2]},且差额不属任何清单条目,需核对合计口径`;d.has(o)||(d.add(o),c.push({level:"warning",severity:"warning",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:o,suggestion:`核对「${m.name}」的合计口径:若为多分项之和,请写明与权威一致的分项分解;若为单一总量,改为清单权威值 ${m.value}${m.unit||f[2]}。`}));continue}let n=aU(j,g,k);if(n.length>=2){let b=a.slice(Math.max(0,i-150),i+f[0].length+150),e=n.filter(a=>!aT(b,a));if(e.length>0){let a=n.map(a=>`「${a.name}」${a.value}${a.unit}`).join(" + "),b=`合计数值应分项显式:正文合计 ${g}${f[2]} = ${a},但未展示分项(缺 ${e.map(a=>`${a.name} ${a.value}${a.unit}`).join("、")}),无法核对合计来源`;d.has(b)||(d.add(b),c.push({level:"warning",severity:"warning",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:b,suggestion:`在合计值附近补充分项明细(${a});分项值必须取自工程量清单原文,不得改动。`}))}continue}{let a=new Map;for(let b of j)a.set(b.name,(a.get(b.name)||0)+b.value);let b=!1;for(let c of a.values())if(aO(c,g)){b=!0;break}if(b)continue}if(aV(g,h,k,b,e))continue;let o=j.filter(a=>aS(a.name,k)),p=j.some(a=>aO(a.value,g)),q=b.numberPool.some(a=>aO(a,g));if(!p&&!q&&o.length>0){let a=`合计值无权威来源:正文「${f[0].trim()}」在清单事实锁与蓝图参数桶中找不到同值来源,违反无据不写`;if(d.has(a))continue;d.add(a),c.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:a,suggestion:"删除该合计数值或改为与清单权威一致的合计值;无权威来源的合计数不得进入交付文本。"})}}return c}(b,c),...function(a,b){let c=[];if(0===b.specValues.size)return c;let d=new Set;for(let e of a.matchAll(aW)){let f,g=e[0].replace(/\s+/gu,"").toLowerCase(),h=b.specValues.get(g);if(!h)continue;let i=a.slice((e.index??0)+e[0].length,(e.index??0)+e[0].length+36),j=/^([^。;;\n|]{0,16}?)([\d,,]+(?:\.\d+)?)\s*(座|个|套|米|m|km|公里|平方米|m2|㎡|m²|立方米|m3|m³|吨|t|kg)(?![a-zA-Z0-9²³])/u.exec(i);if(!j||aQ.test(j[1])||/不大于|不超过|不得大于|不得超过/.test(j[1]))continue;let k=aN(j[2]);if(void 0===k||h.some(a=>aO(a.value,k)))continue;let l=new Map;for(let a of h)l.set(a.entryName,(l.get(a.entryName)||0)+a.value);if(h.length>=2&&[...l.values()].some(a=>aO(a,k)))continue;for(let[a,c]of b.specValues){if(a===g)continue;let b=c.find(a=>aO(a.value,k));if(b){f={spec:b.spec||a,entryName:b.entryName};break}}if(!f||j[1]&&aS(f.entryName,j[1]))continue;let m=`规格-数值绑定错位:正文「${e[0]} ${k}${j[3]}」中 ${k}${j[3]} 属规格「${f.spec}」(清单条目「${f.entryName}」),不属于「${e[0]}」的清单数量`;d.has(m)||(d.add(m),c.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:m,suggestion:`「${e[0]}」的数量必须引用清单中该规格条目的原值(如 ${h.map(a=>`${a.value}${a.unit}`).join("、")});「${f.spec}」的数量不得张冠李戴至「${e[0]}」。`}))}return c}(b,c),...function(a,b){let c=[],d=new Set;for(let e of a.matchAll(aX)){let a=aN(e[1]);if(void 0===a)continue;let f=e[2];if(("mm"===f?a/1e3:"cm"===f?a/100:a)<=10)continue;let g=b.entries.find(b=>aO(b.value,a)&&/总长|全长|总长度|长度|管线/u.test(b.name)),h=`数值语义槽位错位:正文「${e[0].trim()}」——埋深/覆土数值 ${a}${f} 超出物理合理范围(管道埋深一般 <10m)${g?`,且该数值与权威「${g.name}」(${g.value}${g.unit})一致,疑似把总长/长度口径误用作埋深`:",疑似口径混用"}`;d.has(h)||(d.add(h),c.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:h,suggestion:`核对槽位语义:埋深/覆土深度应在 0.3~10m 合理区间(以设计图纸为准);总长/长度类数值不得用于埋深描述${g?`(「${g.name}」为 ${g.value}${g.unit})`:""}。`}))}return c}(b,c),...function(a,b){let c=[];if(0===b.numberPool.length)return c;let d=new Set,e=(a,e,f)=>{let g=aN(a);if(void 0===g||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)))}(g,b.numberPool))return;let h=`近似数值不可推导:正文「${f.trim()}」的 ${g}${e} 在清单/蓝图/事实主表中无同值或近似来源,违反无据不写`;d.has(h)||(d.add(h),c.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:h,suggestion:"删除该近似表述,或改用权威数据可推导的数值(清单/蓝图同值口径);「约/近」类近似数值必须可闭合到权威来源。"}))};for(let b of a.matchAll(aY)){let c=b.index??0,d=a.slice(Math.max(0,c-1),c);a$.test(d)||e(b[1],b[2],b[0])}for(let b of a.matchAll(aZ))e(b[1],b[2],b[0]);return c}(b,c),...function(a,b,c){let d=[],e=new Set,f=b.entries.map(a=>`${a.name} ${a.description}`).join("\n"),g=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=g.get(b.name)||[];a.push(b.sum),g.set(b.name,a)}}let h=new Map,i=new Map,j=new Map,k=(a,c,d)=>{let e=`${a}\u0000${c}`,f=h.get(e);if(f||(f=b.entries.filter(b=>b.name===a&&aP(b.unit)===c&&b.value>0).map(a=>Math.round(100*a.value)),h.set(e,f)),f.length<2)return!1;let g=`${e}\u0000${Math.round(100*d)}`,j=i.get(g);if(void 0!==j)return j;let k=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 i.set(g,k),k},l=(a,c)=>{let d=g.get(a)||[];if(0===d.length)return!1;let e=`${a}\u0000${Math.round(100*c)}`,f=j.get(e);if(void 0!==f)return f;let h=d.some(a=>b.numberPool.some(b=>aO(a+b,c)));return j.set(e,h),h};if(c)for(let f of c.entries){let c=(f.name||"").trim();if(c.length<2||a_.test(c)||!Number.isFinite(f.quantity))continue;let h=0,i=0;for(;i<6;){let j=a.indexOf(c,h);if(j<0)break;if(h=j+c.length,i+=1,/\d$/u.test(c)&&/^[\d.]/u.test(a.slice(j+c.length,j+c.length+1))){h=j+1;continue}if("量"===a.slice(j+c.length,j+c.length+1))continue;let m=a.slice(j+c.length,j+c.length+20),n=/^([^。;;\n|]{0,12}?)([\d,,]+(?:\.\d+)?)\s*(座|个|套|处|盏|棵|株|樘|扇|根|块|片|组|件|孔|间|栋|幢|户|米|m|km|公里|平方米|m2|㎡|m²|立方米|m3|m³|kg|吨|t)(?![a-zA-Z0-9²³])/u.exec(m);if(!n||aQ.test(n[1]))continue;let o=aN(n[2]);if(void 0===o||aO(o,f.quantity))continue;let p=aP(n[3]);if(p!==aP(f.unit)||b.entries.some(a=>a.name===c&&aO(a.value,o)&&aP(a.unit)===p)||(g.get(c)||[]).some(a=>aO(a,o))||k(c,p,o)||l(c,o))continue;let q=a.slice(Math.max(0,j-32),j+c.length+20);if(function(a,b,c,d){for(let[e,f]of d)if(e!==b&&(e.includes(b)||b.includes(e)||aS(e,c))&&f.some(b=>aO(b,a)))return!0;return!1}(o,c,q,g))continue;let r=b.entries.find(a=>a.name!==c&&aO(a.value,o)&&aP(a.unit)===p);if(r&&aS(r.name,q))continue;if(r){let a=`名称-数值绑定错位:「${c}」处数值 ${o}${n[3]} 属清单条目「${r.name}」(${r.value}${r.unit}),与「${c}」清单数量 ${f.quantity}${f.unit} 不符`;if(e.has(a))continue;e.add(a),d.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:a,suggestion:`核对「${c}」的数量口径:清单权威值为 ${f.quantity}${f.unit};引用「${r.name}」数量时须明确对象名称,不得张冠李戴。`});continue}if(function(a,b,c,d){let e=a.slice(Math.max(0,b-40),b+c+40),f=[];for(let a of e.matchAll(/\d+(?:\.\d+)?/gu)){let b=Number.parseFloat(a[0]);Number.isFinite(b)&&!aO(b,d)&&f.push(b)}for(let a=0;a<f.length;a+=1)for(let b=a+1;b<f.length;b+=1)if(aO(f[a]+f[b],d)||aO(Math.abs(f[a]-f[b]),d))return!0;return!1}(a,j,c.length,o)||b.numberPool.some(a=>aO(a,o)))continue;let s=`名称-数值绑定无源:「${c}」处数值 ${o}${n[3]} 与清单权威 ${f.quantity}${f.unit} 不符,且在全部权威数据中找不到同值来源`;e.has(s)||(e.add(s),d.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:s,suggestion:`将「${c}」的数量改为清单权威值 ${f.quantity}${f.unit};无权威来源的数值不得与清单条目名称绑定出现。`}))}}for(let c of a.matchAll(a0)){let g=c[0];if(f.includes(g))continue;let h=c[2],i=a.slice((c.index??0)+g.length,(c.index??0)+g.length+16),j=/^([^。;;\n|]{0,10}?)([\d,,]+(?:\.\d+)?)\s*(樘|扇|套|座|盏|个)(?![a-zA-Z0-9²³])/u.exec(i);if(!j)continue;let k=aN(j[2]);if(void 0===k)continue;let l=b.entries.find(a=>a.name.includes(h)&&aO(a.value,k)&&aP(a.unit)===aP(j[3]));if(!l)continue;let m=`名称口径不符:正文「${g} ${k}${j[3]}」——${k}${j[3]} 对应清单「${l.name}」条目,清单中不存在「${g}」,名称与清单权威不符`;e.has(m)||(e.add(m),d.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:m,suggestion:`名称必须与清单条目口径一致:将「${g}」改为「${l.name}」(或清单原文名称);名称与数量绑定不得自行替换材质/类型限定词。`}))}return d}(b,c,a.billFactLock)],e=[],f=new Set;for(let a of d){let b=`${a.severity||a.level}|${a.message}`;if(!f.has(b)&&(f.add(b),e.push(a),e.length>=60))break}return e})({markdown:a.markdown,billFactLock:a.billFactLock,blueprintData:a.blueprintData,factsModel:a.factsModel})),...(0,l.yT)("greening-maintenance-mismatch",()=>(0,p.x5)(a.markdown,a.factsModel)),...(0,l.yT)("street-light-count-mismatch",()=>(0,p.Tz)(a.markdown,a.factsModel)),...(0,l.yT)("spec-location-mismatch",()=>(0,p.$$)(a.markdown,a.factsModel.specAuthorityMap)),...await (0,l.ll)("blueprint-citation-consistency",async()=>a.blueprintData?(await (0,q.dr)(a.markdown,a.blueprintData)).filter(a=>"error"===a.level):[]),...await (0,l.ll)("cross-project-value-copy",()=>(0,p.iy)(a.markdown,(0,E.L$)(a.blueprintData))),...(0,l.yT)("phase-labor-mixing",()=>(0,p.cv)(a.markdown,(0,E.i2)(a.blueprintData))),...(0,l.yT)("equipment-batch-conflict",()=>(0,p.KE)(a.markdown,(0,E.Be)(a.blueprintData))),...(0,l.yT)("preliminary-action-timing",()=>(0,p.fg)(a.markdown,a.blueprintData?.contract.totalDays)),...(0,l.yT)("foundation-form-residue",()=>(0,p.ex)(a.markdown)),...(0,l.yT)("ambiguous-either-or",()=>(0,p.Fr)(a.markdown)),...(0,l.yT)("excavation-depth-lock",()=>(0,p.bq)(a.markdown)),...(0,l.yT)("excavation-hazard-classification",()=>(0,p.LA)(a.markdown,a.factsModel)),...(0,l.yT)("support-form-fact-consistency",()=>(0,p.ek)(a.markdown,a.factsModel)),...(0,l.yT)("equipment-entry-timing",()=>(0,p.fQ)(a.markdown,a.factsModel)),...(0,l.yT)("fabricated-award",()=>(0,p.hu)(a.markdown,a.factsModel,a.tenderRequirements)),...(0,l.yT)("bidder-qualification-section",()=>(0,p.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,aJ.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,aJ.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,p.cT)(a.markdown)),...(0,l.yT)("duplicate-table",()=>(0,p.ub)(a.markdown)),...(0,l.yT)("duplicate-paragraph",()=>(0,p.cl)(a.markdown)),...(0,l.yT)("paragraph-tail-repeat",()=>(0,p.AD)(a.markdown)),...(0,l.yT)("collision-numbered-heading",()=>(0,p.xR)(a.markdown)),...(0,l.yT)("inverted-date-range",()=>(0,p.jP)(a.markdown)),...(0,l.yT)("resource-triad-section-hierarchy",()=>(0,p.zP)(a.markdown)),...await (0,l.yT)("support-system-conflict",()=>(0,p.r8)(a.markdown,(0,p.P3)(a.factsModel))),...(0,l.yT)("dangerous-list-consistency",()=>(0,p.vH)(a.markdown)),...(0,l.yT)("hazard-exclusion-contradiction",()=>(0,p.m6)(a.markdown)),...await (0,l.yT)("six-hundred-percent-coverage",()=>(0,p.sn)(a.markdown)),...await (0,l.yT)("self-undermining-candidate",()=>(0,p.YN)(a.markdown)),...(0,l.yT)("paragraph-opening-repeat",()=>(0,p.y2)(a.markdown)),...(0,l.yT)("flow-form-repeat",()=>(0,aL.Q9)(a.markdown)),...(0,l.yT)("skeleton-fingerprint",()=>(0,aL.o0)(a.markdown)),...(0,l.yT)("repeated-word",()=>(0,p.Xc)(a.markdown)),...await (0,l.yT)("commercial-data-in-body",()=>(0,p.mC)(a.markdown)),...(0,l.yT)("overview-recap",()=>(0,p.l4)(a.markdown)),...(0,l.yT)("closure-phrase-density-cap",()=>(0,p.dF)(a.markdown)),...await (0,l.ll)("parameter-concept-conflict",()=>ao(a.markdown,{billFactLock:a.billFactLock})),...await (0,l.ll)("internal-terminology-anchor",()=>(0,D.WT)(a.markdown)),...(0,l.yT)("construction-system-coverage",()=>(function(a){let b=[...new Set(a.flatMap(a=>ap.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",()=>(0,aq.e6)(a.markdown)),...(0,l.yT)("innovation-tech-coverage",()=>(0,C.Ef)(a.markdown,a.effectiveChapters||a.template.chapters||[])),...(0,l.yT)("instruction-like-heading",()=>(0,C.K1)(a.markdown)),...(0,l.yT)("formal-heading-hierarchy",()=>(0,C.Fv)(a.markdown)),...(0,l.yT)("formal-content-integrity",()=>(0,C.k0)(a.markdown)),...(0,l.yT)("punctuation-artifact",()=>(0,C.vZ)(a.markdown)),...(0,l.yT)("table-quality",()=>(0,C.NS)(a.markdown)),...(0,l.yT)("table-spam",()=>(0,C.SN)(a.markdown)),...(0,l.yT)("basis-regulations-coverage",()=>(0,C.AN)(a.markdown,a.blueprintData)),...(0,l.yT)("resource-breakdown-consistency",()=>(0,C.EJ)(a.markdown,a.blueprintData)),...(0,l.yT)("section-content-integrity",()=>(0,C.qK)(a.markdown,a.chapters)),...(0,l.yT)("professional-content",()=>(0,C.ji)(a.chapters,i)),...(0,l.yT)("professional-score",()=>(0,C.i0)(a.chapters,i)),...(0,l.yT)("generic-professional-content",()=>(0,C.ST)(a.chapters,i)),...(0,l.yT)("management-measure-number",()=>(0,C.xX)(a.chapters,i)),...await (0,l.yT)("closed-loop-density",()=>(0,C.Zu)(a.markdown)),...await (0,l.yT)("cross-chapter-consistency",()=>(0,C.qm)(a.markdown,a.factsModel,a.scopeConflicts,i)),...await (0,l.yT)("process-spec-conflict",()=>(0,C.hr)(a.markdown,a.factsModel)),...(0,l.yT)("evidence-usage-coverage",()=>Q(a.markdown,a.factsModel)),...await (0,l.yT)("paragraph-generic",()=>R(a.markdown,a.professionalDepthClassifier)),...await (0,l.yT)("construction-org-generic-language",()=>(0,M.Fw)(a.chapters)),...(0,l.yT)("construction-org-control-loop",()=>(0,M.Hl)(a.chapters)),...(0,l.yT)("construction-org-professional-chain",()=>(0,M.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 _){let e=ad(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=aa(d[1]||d[0]||"");!ac.test(a)&&a.length>=2&&a.length<=80&&c.push(a)}}return[...new Set(c)]})(a,d.patterns).filter(a=>!ab.test(a)&&!function(a,b){return 0===b.length||b.some(b=>b.includes(a)||a.includes(b)||a.length>=4&&b.includes(a.slice(0,4)))}(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=ad(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,M.Av)(a.chapters,a.markdown)),...(0,l.yT)("construction-org-division-section",()=>(0,M.CS)(a.chapters,a.markdown)),...(0,l.yT)("major-content-governance",()=>(0,M.l5)(a.markdown)),...(0,l.yT)("construction-org-bonus-module",()=>(0,M.b7)(a.chapters)),...(0,l.yT)("chapter-dependency",()=>S(a.chapters,i)),...(0,l.yT)("document-delivery-score",()=>(function(a,b,c,d){let e={factuality:2*!(0,C.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,C.i0)(b,d).length?2:1,executable:0===S(b,d).length?2:1,evidence:0===Q(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,i)),...(0,l.yT)("generated-fact-verification",()=>b),...(0,l.yT)("duplicate-basic-info",()=>(0,C.iC)(a.markdown)),...await (0,l.yT)("formal-style",()=>(0,C.BV)(a.markdown)),...(0,l.yT)("tertiary-heading",()=>(0,z.dh)(a.markdown)),...(0,l.yT)("min-chapter-section",()=>(0,C.Ty)(a.chapters)),...await (0,l.yT)("precise-fact-usage",()=>(0,C.N1)(a.markdown,a.factsModel,a.chapters)),...await (0,l.yT)("boq-placement",()=>(0,C.S2)(a.markdown,a.chapters,a.factsModel)),...await (0,l.yT)("stage-phrasing",()=>av(a.markdown)),...await (0,l.yT)("emergency-section-depth",()=>aI(a.markdown)),...(0,l.yT)("boq-row-trace",()=>(0,N.QP)((0,N.JV)(a.markdown,a.factsModel))),...(0,l.yT)("drawing-reference",()=>(0,C.yd)(a.markdown,a.factsModel)),...(0,l.yT)("web-evidence-leakage",()=>(function(a){let b=[];return W.test(a)&&b.push({level:"warning",message:"正文包含联网增强过程性表述",suggestion:"请删除联网检索、网页资料、搜索结果等过程性话术,改为正式交付语言。"}),b})(a.markdown)),...(0,l.yT)("formal-placeholder",()=>(0,C.bM)(a.markdown)),...(0,l.yT)("prompt-example-leak",()=>(0,C.M$)(a.markdown,a.promptBindings)),...(0,l.yT)("degenerate-content",()=>(0,C.AC)(a.markdown,a.chapters)),...(0,l.yT)("planned-auto-spec-gate",()=>(0,C.mR)(a.markdown,a.template)),...(0,l.yT)("bid-composition-body-table",()=>(0,z.NN)(a.markdown,a.bodyTableForbidden)),...(0,l.yT)("planned-structure",()=>(0,z.UG)(a.markdown,a.template,a.bodyTableForbidden)),...await (0,l.yT)("prompt-document-rule",()=>(0,z.Ed)(a.markdown,a.promptDocumentRules,void 0,{bodyTableForbidden:a.bodyTableForbidden,coverForbidden:a.coverForbidden})),...await (0,l.yT)("local-adaptation-keyword",()=>(0,p.cJ)(a.markdown,a.factsModel)),...(0,l.yT)("boq-division-coverage",()=>(0,N.sl)(a.markdown,a.chapters,a.factsModel))]}let a2={project:"项目基础事实",schedule:"工期与节点",quality:"质量目标与验收",safety:"安全文明要求",resources:"资源投入依据",quantities:"清单/图纸/工程量事实",rules:"规范规则与验收要求"};var a3=c(52922);let a4=["精心组织","科学统筹","科学管理","精益求精","全力保障","高效推进","力争优质","力争一流","一流水平","完善体系","最大限度","显著提升","大力落实","严格把控","充分确保","竭力打造","现代化管理","加强管理","提高意识","强化监督","持续完善","及时处理","全方位","常态化","提质增效","高标准","统筹推进"];[...a4];let a5=["危险性较大的分部分项工程安全管理","扬尘污染防治措施","建筑工人实名制管理","农民工工资专用账户与工资支付保障","生产安全事故应急预案与应急演练","绿色施工与四节一环保措施"],a6=["危险源辨识与风险识别评估","编制专项施工方案","组织专家论证并履行审批程序","对作业人员进行安全技术交底","施工过程监测与监控量测","分部分项工程验收","三级配电系统","两级漏电保护装置","漏电保护器与接地保护","实名制考勤与人员管理","农民工工资专用账户银行代发","应急预案编制与响应","绿色施工措施与评价"];function a7(a){return a.replace(/^第[一二三四五六七八九十百千万\d]+[章节]\s*/u,"").replace(/^\d+(?:\.\d+)*[、..\s]+/u,"").replace(/^[((]?[一二三四五六七八九十]+[))、..\s]+/u,"").replace(/\s+/gu,"").trim()}async function a8(a){let{blocks:b,completeBlocks:c}=await (0,a3.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 a9=/目录|层级|编号|表格|表头|分隔线|页码|空小节|缺少规划小节|小节只有标题|缺节/u,ba=/跨章一致性复核|事实一致性冲突|事实冲突|评分项要求|可靠精确参数|应急预案|属地创优|工伤保险|专业评分|深度不足|事实反查|存在多个值|已确认事实未在正文中落位|事实未在正文中落位/u,bb=/缺少规划小节|小节只有标题|空小节|只有标题或表格无正文|小节内容补写未完成|小节生成未达标|同名小节|H4 标题|正文缺少章节标题|小节正文过短/u;async function bc(a,b){let c=await (0,a3.Bt)(a,b),d=(0,a3.Ye)(a),e=a.split(/\n+/u).filter(a=>a.trim()&&!/^\s*(#{1,6}\s+|\||[-*+]\s|>)/u.test(a)).flatMap(a=>a.split(/[。;;]/u)).map(a=>a.replace(/[\s,,、::()()【】[\]《》“”"'`]/gu,"")).filter(a=>a.length>=12),f=e.length?(e.length-new Set(e).size)/e.length:0,g=await (0,a3.gE)(a,b),h=(0,a3.nY)(a);return{level:g.heavyTemplated?"heavy":c.level,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:f,crossProjectResidue:h,difficultyCountermeasureRatio:g.ratio,difficultyBothCount:g.bothCount,difficultyCountermeasures:g.countermeasures,difficultyHeavyTemplated:g.heavyTemplated}}async function bd(a){let b=a.markdown.split(/\n{2,}/u).filter(a=>a.trim().length>=30),c=await (0,ae.Mv)(b,[...a5,...a6],a.embedDocuments),d=a=>b.some(b=>c(b,a)>=ae.Eh),e=await (0,a3.Bt)(a.markdown,a.embedDocuments);return{completeness:function(a,b,c,d){let e=[...a.matchAll(/^#{1,3}\s+(.+)$/gmu)].map(a=>a7(a[1]||"")).filter(a=>a.length>=2),f=1,g=c?.chapters||[];if(g.length>0){let a=g.map(a=>a7(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(a7(a.title))||a7(a.title).includes(b))).length/b.length);return Math.round((.55*f+.45*(a5.filter(d).length/a5.length))*100)}(a.markdown,a.chapters,a.template,d),specificity:function(a,b,c){let d=c.filter(N.O7),e=d.filter(a=>"used"===a.status),f=d.length?e.length/d.length:1,g=e.map(a=>String(a.value||"").replace(/\s+/gu," ").trim()).filter(a=>a.length>=4&&a.length<=60),h=b.map(a=>(a.content||"").replace(/\s+/gu," ")),i=g.filter(a=>h.filter(b=>b.includes(a)).length>=2).length;return Math.round((.55*f+.45*(g.length?i/g.length:1))*100)}(a.markdown,a.chapters,a.factTraces),compliance:function(a,b){let c=a6.filter(b).length/a6.length,d=(0,a3.JD)(a);return Math.round((.8*c+.1*(d.twoStepComplete?1:d.categories.length>0&&d.graded?.6:.3*(d.categories.length>0))+.1*(0,a3.bH)(a).coverage)*100)}(a.markdown,d),executability:await a8(a.markdown),normalization:function(a){let b=a=>"table"===a.category||"format"===a.category||("structure"===a.category?bb.test(a.message):!a.category&&!ba.test(a.message)&&a9.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=a4.filter(b=>a.includes(b)).length,d=b.vagueSemanticSentences,e=100*Math.max(0,b.ratio-.1),f=a.split(/\n+/u).filter(a=>a.trim()&&!/^\s*(#{1,6}\s+|\||[-*+]\s|>)/u.test(a)).flatMap(a=>a.split(/[。;;]/u)).map(a=>a.replace(/[\s,,、::()()【】[\]《》“”"'`]/gu,"")).filter(a=>a.length>=12);return Math.max(0,Math.round(100-4*c-6*d-.5*e-60*(f.length?(f.length-new Set(f).size)/f.length:0)))}(a.markdown,e)}}async function be(a){let b=await bd({markdown:a.markdown,chapters:a.chapters,template:a.template,factTraces:a.factTraces,issues:a.issues,embedDocuments:a.embedDocuments}),c=Math.round((.3*b.completeness+.25*b.specificity+.2*b.compliance+.15*b.executability+.1*b.normalization)*Math.min(1,b.uniqueness/90)),d=a.issues.filter(a=>"error"===a.level).length,e=Math.max(0,Math.min(99,Math.round(c-8*d))),f=a.knowledgeCoverage.score>=95?95:85;return{overall:c,deliveryProbability:e,target:f,passed:e>=f&&0===d,scores:b,templating:await bc(a.markdown,a.embedDocuments),summary:`交付置信度 ${e}% / 目标 ${f}%,综合评分 ${c}/100(资料完整性 ${b.completeness}、方案针对性 ${b.specificity}、合规性 ${b.compliance}、可落地性 ${b.executability}、编制规范性 ${b.normalization}、低雷同性 ${b.uniqueness})`,actions:e>=f&&0===d?["已达到当前质量目标,建议保持事实口径和导出前复核。"]:["按招标评审口径补齐短板维度:章节与强制模块缺失补完整性、项目专属数据补针对性、危大闭环与强制制度补合规性、责任频次闭环句式补可落地性、表格层级与数据一致补规范性、清理空话禁用词与重复句式降雷同。","系统需优先修复阻断问题、扩大本地知识库检索、补抽结构化事实,并将未落位事实写入对应章节。"]}}let bf=new Set(["fact-coverage","overview-recap","internal-terminology-anchor","global-consistency-snapshot","data-consistency-snapshot"]);function bg(...a){return a.flat()}var bh=c(91977),bi=c(51144);function bj(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 bk(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,bi.Cr)(d,a=>(0,bi.Ox)(a),{maxItems:16,maxChars:1200},"retrieval-sections").selected,g=(0,bi.Cr)(e,a=>(0,bi.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,bi.Cr)(l,a=>(0,bi.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},limit:h,weights:{keyword:.62,vector:.32,rewrite:.9,hybridBonus:.28},generationMode:!0});return(c={chapter:a.chapter,results:d.results.filter(b=>a.scopedFilePaths.includes(b.filePath)),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 bl=c(32434),bm=c(36003),bn=c(95734);async function bo(a,b){let c=(0,z.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,bm.AI)(e,(0,bm.Ym)(e,a.chapter,a.evidence),b),i=(0,bm.uQ)(e,g,h);i&&d.push(`${e}:${i}`)}return d}function bp(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 bq(a){return"string"==typeof a?a:a&&"object"==typeof a&&"message"in a?String(a.message):JSON.stringify(a)}function br(a){let b=Number(process.env[a]);return Number.isFinite(b)&&b>0?Math.ceil(b):0}async function bs(a){var b;(0,e.Te)(a.signal);let c=a.chapters.map(a=>{let b=a.content.replace(/#{1,6}\s+/gu,"").replace(/\*\*/gu,"").replace(/\|/gu," ").replace(/[\n\r]+/gu," ").trim(),c=function(a){let b=[];for(let c of[/(?:总建筑面积|建设规模|总用地面积|总占地面积)[^\n。;;]{0,18}\d+(?:[.,]\d+)?\s*万?\s*(?:㎡|m²|m2|平方米)/gu,/(?:合同估算价|合同估算价格|投资估算|最高投标限价|招标控制价|工程总投资|总投资|工程造价)[^\n。;;]{0,18}\d+(?:[.,]\d+)?\s*万?\s*(?:万元|亿元|元)/gu,/(?:计划工期|合同工期|总工期|施工周期)[^\n。;;]{0,18}\d+\s*(?:日历天|天|个月|月)/gu,/(?:质量标准|质量目标)[^\n。;;]{0,26}/gu,/(?:找平层|抹灰层|防水层|保温层|结合层|垫层|面层|粘结层)[^\n。;;]{0,24}\d+:\d+(?:\.\d+)?/gu]){let d=[...new Set(a.match(c)||[])].slice(0,4);b.push(...d)}return[...new Set(b.map(a=>a.replace(/\s+/gu," ").trim()).filter(Boolean))].join(";")}(a.content);return`章节:${a.title}
17
+ ${e}`,source:function(a){let b=a.toLowerCase();return b.includes(".gov.cn")||b.includes("mohurd")||b.includes("zjt")||a.includes("住建")?"web-policy":"web-evidence"}(b.url),sectionTitle:a.chapterTitle})}}catch{d+=1}return{evidence:c,queries:b,filtered:d}}let _=[{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"],patterns:[/([\p{Script=Han}A-Za-z0-9]+(?:机|吊|泵|车))\s*[^\n|]{0,12}(\d+)\s*(台|套|辆)/u],locations:"机械表、平面布置、进度保障、安全专项方案"},{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 aa(a){return a.replace(/[\s,。;;::|]/gu,"").trim()}let ab=/塔式起重机|履带吊|汽车吊|卷扬机|脚手架|扣件|钢管|模板|噪声|PM2\.5|PM10|TSP|扬尘在线监测|临电|消防|安全网|围挡|洗车台|沉淀池|雾炮/u,ac=/不使用|不采用|不配置|无需|未采用|不得使用|禁止使用/u;function ad(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(aa).filter(Boolean)}var ae=c(37047),af=c(63516);let ag=/([\u4e00-\u9fa5A-Za-z0-9()()]{1,12}?)(\d+(?:\.\d+)?)\s*(mm|cm|m|米|MPa|kN|kV|kW|℃|°C|万元|元|人|天|日|个|层|樘|处|套|台|t|吨)([\u4e00-\u9fa5A-Za-z0-9()()]{0,8})/gu,ah=["直径","厚度","宽度","长度","高度","深度","间距","距离","标高","偏差","数量","面积","体积","重量","压力","温度","强度","等级","坡度","规格","尺寸","层数","次数","跨度","半径"],ai=/自然村|村组|标段|区域|点位|养护/u,aj=["开挖","封闭","回填","浇筑","铺筑","摊铺","供应","编制","提交","签订","安装","养护","试验","拆除","砌筑"];async function ak(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(ag.source,"gu"))){let c=(a[1]||"").trim(),d=Number(a[2]),f=a[3]||"",g=(a[4]||"").trim(),h=`${c}${g}`.replace(/[\s,,、;;::]/gu,"");if(h.length<2||!/[\u4e00-\u9fa5A-Za-z]{2,}/u.test(h)||!Number.isFinite(d)||d<=0||ah.some(a=>h.replace(/(?:mm|cm|m|MPa|kN|kV|kW|℃|元|万元|人|天|日|个|层|樘|处|套|台|t|吨)/gu,"").replace(/[\s,,、;;::()()]/gu,"")===a)||ai.test(h))continue;let i={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],a[2],a[3]||""),valueText:a[2]},j=b.get(a[0]);if(j){j.occurrences.push(i);continue}b.set(a[0],{concept:h,value:d,unit:f,raw:a[0],occurrences:[i]})}}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,ae.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=b.map(a=>aj.find(b=>a.raw.includes(b))||"");if(c.length>=2&&c.every(a=>""!==a)&&new Set(c).size===c.length||b.every(b=>b.occurrences.some(c=>/违约金|解除合同|提高至|自第|逾期超过/u.test(a.slice(Math.max(0,c.matchIndex-30),c.matchIndex+b.raw.length+40)))))continue;let d=[...new Set(b.map(a=>a.value))];if(d.length<2)continue;let e=Math.max(...d);if(!(e-Math.min(...d)<=.02*e)&&!(b.filter(b=>b.occurrences.some(c=>/[、/](?:与)?[A-Za-z]?\d/u.test(a.slice(c.matchIndex,c.matchIndex+b.raw.length+12)))).length>=2)&&(i.push({concept:b[0].concept,values:b}),i.length>=4))break}if(i.length>=4)break}return{groups:i}}function al(a){return a.replace(/㎡/gu,"m2").replace(/m²/giu,"m2").replace(/m³/giu,"m3").replace(/\s+/gu,"").toLowerCase()}function am(a){return a.replace(/[((][^))]*[))]/gu,"").replace(/[\s,,、;;::]/gu,"")}function an(a,b){if(!b.billFactLock||a.values.length<2)return{verdict:"no-anchor"};let c=a.values.map(a=>({value:a,matches:function(a,b){let c=b.billFactLock;if(!c||0===c.entries.length)return[];let d=Math.max(.01,.001*a.value),e=al(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.entries){if(!Number.isFinite(b.quantity)||b.quantity<=0||Math.abs(b.quantity-a.value)>d)continue;let c=al(b.unit);if(e&&c&&e!==c)continue;let h=function(a,b){let c=am(a),d=am(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}(a,b)}));if(c.every(a=>a.matches.length>0)&&c.every((a,b)=>c.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:c.map(a=>`「${a.matches[0].entry.name}」(${a.value.value}${a.value.unit})`).join("、")};let d=c.filter(a=>a.matches.length>0),e=c.filter(a=>0===a.matches.length);if(1===d.length&&e.length>0){let a=d[0].matches.find(a=>a.nameRelated);if(a)return{verdict:"single-lock-entry",lockValue:a.entry.quantity,lockUnit:a.entry.unit,entryName:a.entry.name,nonLock:e.map(a=>a.value)}}return{verdict:"no-anchor"}}async function ao(a,b){let c=await ak(a);if(c.degraded)return[c.degraded];if(0===c.groups.length)return[];let d=[],e=[];for(let f of c.groups){let c=an(f,{markdown:a,billFactLock:b?.billFactLock});"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 ap=["电梯","幕墙","智能化","消防","暖通","给排水","电气","燃气","人防","室外","园林","绿化","景观","钢结构","防水","保温","门窗","通风","空调","防雷","接地","动力","照明","拆除","加固","装修","装饰"];var aq=c(27625);let ar=/[二三四五六七八九十\d]{1,4}\s*个?\s*阶段/u,as={一:1,二:2,三:3,四:4,五:5,六:6,七:7,八:8,九:9};function at(a){return/(\d+|[一二三四五六七八九十]+)\s*个?\s*阶段/u.exec(a)?.[1]??null}function au(a){let b=a.map(at).filter(a=>null!==a).map(a=>/^\d+$/u.test(a)?parseInt(a,10):/^[一二三四五六七八九十]+$/u.test(a)?"十"===a?10:1===a.length?as[a]??null:a.startsWith("十")?10+(as[a[1]]??0):a.endsWith("十")?(as[a[0]]??0)*10:(as[a[0]]??0)*10+(as[a[2]]??0):null).filter(a=>null!==a);return 0===b.length?null:1===new Set(b).size?b[0]:null}async function av(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=ar.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,ae.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(au).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 aw=c(41991);let ax=/应急预案|应急措施|应急响应|应急救援|突发事件|应急管理|应急物资|应急演练|应急组织|应急保障/u,ay=/应急|突发|救援|预案|抢险|疏散/u,az=["应急预案的编制与响应流程","突发事件应急处置措施","应急救援组织体系与保障"],aA=["应急照明系统安装调试","应急电源配置与切换方案"],aB={organization:"应急管理领导小组、应急救援队伍的组织机构与职责分工",procedure:"应急处置程序、应急响应流程与应急演练安排",resource:"应急物资、应急器材设备的储备与保障措施"},aC=/应急物资|急救箱|灭火器|沙袋|发电机|水泵|对讲机|应急照明|应急灯|防护服|救援绳|救生衣|铁锹|编织袋|抽水泵|警示带|应急器材/u,aD=/配备|储备|保障|配置|数量|不少于|共计|套|具|个|台|把|只/u,aE=["应急物资储备清单与配备数量","应急救援器材的配置与保障"],aF=["应急照明灯具数量与回路设计","应急电源的电气系统设计"];async function aG(a){return(0,aw.A)({prototypes:[...az],negativePrototypes:[...aA],embedDocuments:a})}async function aH(a){return(0,aw.A)({prototypes:[...aE],negativePrototypes:[...aF],embedDocuments:a})}async function aI(a,b){let c=a.split(/\r?\n/u),d=[],e=c.map(a=>{let b=/^(#{2,4})\s+(.+)$/u.exec(a.trim());if(b)return{level:b[1].length,title:b[2].replace(/^\d+(?:\.\d+)*\s+/u,"").trim()}}).filter(a=>void 0!==a).filter(a=>!ax.test(a.title)&&ay.test(a.title)),f=await aG(b),g=e.length>0?await f(e.map(a=>a.title)):[],h=new Set(e.filter((a,b)=>g[b]).map(a=>a.title)),i=a=>ax.test(a)||h.has(a),j=!1,k=[],l=[],m="",n=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(i(c)){j=!0,k.push(c);continue}a<=3&&j&&(j=!1);continue}if(j&&a.trim()&&!/^\s*\|/u.test(a)){l.push(a);let b=a.replace(/\s+/gu,"");m+=b,n+=b.length}}if(0===k.length)return d;let o=[];n<300&&o.push(`字数仅 ${n} 字(要求 ≥300 字)`);let p=m.match(/.{1,200}/gu)||[],q=Object.values(aB),r=await (0,ae.Mv)(p,q),s=a=>p.some(b=>r(b,a)>=ae.Eh);s(aB.organization)||o.push("应急组织体系"),s(aB.procedure)||o.push("应急处置程序/演练");let t=await aH(b),u=l.join("。").split(/[。;;]/u).map(a=>a.trim()).filter(a=>aC.test(a)&&aD.test(a)),v=u.length>0?await t(u):[];return s(aB.resource)||v.some(Boolean)||o.push("应急物资保障"),o.length>0&&d.push({level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"llm_repairable",message:`应急预案小节深度不足:${k.join("、")}(缺少:${o.join("、")})`,suggestion:"补写应急组织体系(领导小组/抢险队与职责)、应急处置程序与演练安排、应急物资清单与保障措施,达到可落地深度。",sectionTitle:k[0]}),d}var aJ=c(70208),aK=c(91943),aL=c(54185);function aM(a){return a.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&")}function aN(a){let b=Number.parseFloat(a.replace(/[,,\s]/gu,""));return Number.isFinite(b)?b:void 0}function aO(a,b){return Math.abs(a-b)<=.01+1e-6*Math.max(Math.abs(a),Math.abs(b))}function aP(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}let aQ=/(?:每|厚度|宽度|高度|深度|长度|直径|间距|净距|坡度|标高|偏差|误差|系数|等级|龄期|温度|含水率|压实度|密度|功率|电压|照度|色温|耐火|强度|抗渗|配合比|搭接|错缝|含水|埋深|覆土|预留|预埋|伸缩|沉降|变形|垂直度|平整度|倾角|坡度|模数|螺距|壁厚|净空|层高|埋设|位置|距离|半径|周长|坡度)/u,aR=/(?:合计|共计|总计|总共|总量|总数|总长|全长|总长度|总数量|总面积|总重量|小计)(?:为|达|约|共|计)?\s*([\d,,]+(?:\.\d+)?)\s*(立方米|m³|m3|平方米|㎡|m²|m2|公里|千米|km|kg|吨|t|座|个|套|处|盏|棵|株|樘|扇|根|块|片|组|件|孔|间|栋|幢|户|米|m)(?![a-zA-Z0-9²³])/gu;function aS(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 aT(a,b){let c=function(a){switch(aP(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 aM((a||"").trim())}}(b.unit);for(let d 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 e=aM(d);if(RegExp(`${e}\\s*(?:${c})|(?:${c})\\s*${e}`,"u").test(a)||b.value>=100&&RegExp(`(?<![\\d.])${e}(?![\\d])`,"u").test(a))return!0}return!1}function aU(a,b,c){let d=a.filter(a=>a.name.length>=2&&aS(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],f=d[c];if(!(e.name===f.name&&aO(e.value,f.value))&&aO(e.value+f.value,b))return[e,f]}return[]}function aV(a,b,c,d,e){let f=new Map;for(let a of d.entries){if(!(a.value>0)||aP(a.unit)!==b)continue;let c=`${a.source}\u0000${a.name}`;f.set(c,(f.get(c)||0)+a.value)}let g=[];for(let[a,b]of f)if(aS(a.slice(a.indexOf("\0")+1),c)&&(g.some(a=>aO(a,b))||g.push(b),g.length>=24))break;if(0===g.length)return!1;let h=b=>aO(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(aO(a[d],b))return!0;return!1}(e,a-b);if(g.some(a=>h(a)))return!0;for(let a=0;a<g.length;a+=1)for(let b=a+1;b<g.length;b+=1)if(h(g[a]+g[b]))return!0;return!1}let aW=/(?: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])/gu,aX=/(?:埋深|覆土(?:厚度|深度)?|管顶覆土)(?:不小于|不大于|不低于|不超过|约|为|达|控制在|一般|宜|应)?[^。;;\n|]{0,10}?([\d,,]+(?:\.\d+)?)\s*(mm|cm|米|m)(?![a-zA-Z0-9²³])/gu,aY=/(?:约为|大约|约计|约|将近|近)\s*([\d,,]+(?:\.\d+)?)\s*(点|处|座|个|套|盏|棵|株|樘|扇|根|块|片|组|件|孔|间|栋|幢|户|米|公里|km|m2|㎡|m²|平方米|m3|m³|立方米|kg|吨|t|l|升|kw|w)(?![a-zA-Z0-9²³³])/giu,aZ=/([\d,,]+(?:\.\d+)?)\s*余\s*(点|处|座|个|套|盏|棵|株|樘|扇|根|块|片|组|件|孔|间|栋|幢|户|米|公里|km|m2|㎡|m²|平方米|m3|m³|立方米|kg|吨|t)(?![a-zA-Z0-9²³])/gu,a$=/[节制合履签违公盟密租最接靠邻附距离]/u,a_=/^(?:管道|工程|材料|项目|施工|工作|设备|设施|系统|区域|场地|道路|建筑|结构|基础|主体|管网|土建|安装|装饰|装修|土方|绿化|照明|给水|排水|电气|挖方|填方|回填|弃方|外运|运输|检测|试验|测量|清理|拆除|清淤|维护|养护|管理|服务|其他|以上|以下|其中|包括|采用|使用|型号|规格|数量|单位|合计|总计|长度|面积|体积|重量)$/u,a0=/(木质|木|铝合金|铝|不锈钢|塑钢|塑料|塑|钢|铁|砼|混凝土|铸铁|铜|复合)(门|窗|井|灯|护栏|围栏|盖板|雨水口)/gu;async function a1(a){let b=await (0,C.Z2)(a.markdown,a.factsModel,{scopeClassifier:a.factTokenScopeClassifier}),c=(0,af.Uk)(a.tenderRequirements).map(({item:a})=>(0,af.E6)(a)),d=a.markdown.split(/\n/u).filter(a=>/^#{2,4}\s/u.test(a.trim())).map(a=>(0,af.NT)(a)).filter(Boolean).slice(0,80),e=(0,p.s3)(a.markdown),f=await (0,ae.Mv)(c,[...d,...e]),g=await (0,ae.Mv)(a.evaluationCriteriaItems||[],d),i=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,C.gN)(a.markdown),...(0,C.f8)(a.markdown)]),...(0,l.yT)("section-numbering",()=>(0,C.Jn)(a.markdown)),...(0,l.yT)("section-count-overflow",()=>(0,C.VW)(a.chapters)),...(0,l.yT)("heading-duplicate",()=>(0,C.kw)(a.markdown)),...(0,l.yT)("structure-integrity",()=>(0,aK.dC)(a.markdown)),...(0,l.yT)("templated-label",()=>(0,aL.D9)(a.markdown)),...(0,l.yT)("title-integrity",()=>(0,aL.uw)(a.markdown)),...(0,l.yT)("evaluation-criteria-coverage",()=>(0,C.wl)(a.markdown,a.evaluationCriteriaItems||[],{semanticSimilarity:g})),...await (0,l.ll)("requirements-coverage",()=>(0,af.tH)({markdown:a.markdown,entries:(0,af.Uk)(a.tenderRequirements).map(({item:a})=>a),bodyTexts:e,semanticSimilarity:f})),...(0,l.yT)("fabricated-start-date",()=>(0,p.cf)(a.markdown,a.factsModel)),...(0,l.yT)("field-value-mismatch",()=>(0,p.a8)(a.markdown,a.factsModel)),...(0,l.yT)("area-arithmetic",()=>(0,p.u2)(a.markdown)),...(0,l.yT)("resource-consistency",()=>(0,p.rA)(a.markdown,{laborPeakAuthority:(0,E.yB)(a.blueprintData)})),...(0,l.yT)("node-schedule-consistency",()=>(0,p.Et)(a.markdown)),...(0,l.yT)("cross-section-numeric-conflict",()=>(0,p.H)(a.markdown)),...(0,l.yT)("fact-reconciliation",()=>(function(a){let b=a.markdown||"";if(!b)return[];let c=function(a){let b=[],c=[],d=new Map,e=a.billFactLock;if(e)for(let a of e.entries){let e=Number.isFinite(a.quantity)?a.quantity:void 0;for(let f of(void 0!==e&&(b.push({name:(a.name||"").trim(),value:e,unit:(a.unit||"").trim(),description:a.description||"",source:"bill"}),c.push(e)),a.specQuantityPairs||[])){let b=(f.spec||"").replace(/\s+/gu,"").toLowerCase(),e=/^([\d,,]+(?:\.\d+)?)\s*(.*)$/u.exec((f.quantity||"").trim()),g=e?aN(e[1]):void 0;if(!b||void 0===g)continue;let h=d.get(b)||[];h.push({value:g,unit:(e?.[2]||"").trim(),entryName:a.name,spec:(f.spec||"").trim()}),d.set(b,h),c.push(g)}}for(let[d,e]of Object.entries(a.blueprintData?.quantities??{}))if("number"==typeof e?.value&&Number.isFinite(e.value))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);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}}(a);if(0===c.entries.length&&0===c.numberPool.length)return[];let d=[...function(a,b){let c=[];if(0===b.entries.length)return c;let d=new Set,e=[...b.numberPool].sort((a,b)=>a-b);for(let f of a.matchAll(aR)){let g=aN(f[1]);if(void 0===g)continue;let h=aP(f[2]),i=f.index??0,j=b.entries.filter(a=>a.value>0&&aP(a.unit)===h);if(0===j.length)continue;let k=a.slice(Math.max(0,i-40),i+f[0].length+40),l=a.slice(Math.max(0,i-20),i+f[0].length),m=j.filter(a=>a.name.length>=3&&l.includes(a.name)).sort((a,b)=>b.name.length-a.name.length)[0];if(m){if(aO(m.value,g)){let b=aU(j,g,k);if(b.length>=2){let e=a.slice(Math.max(0,i-150),i+f[0].length+150),h=b.filter(a=>!aT(e,a));if(h.length>0){let a=b.map(a=>`「${a.name}」${a.value}${a.unit}`).join(" + "),e=`合计数值应分项显式:「${m.name} ${g}${f[2]}」= ${a},但正文未展示分项(缺 ${h.map(a=>`${a.name} ${a.value}${a.unit}`).join("、")}),无法核对合计来源`;d.has(e)||(d.add(e),c.push({level:"warning",severity:"warning",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:e,suggestion:`在合计值附近补充分项明细(${a}),使合计数值可逐项核对;分项值必须取自工程量清单原文,不得改动。`}))}}continue}let l=g-m.value,n=j.find(a=>a!==m&&a.name!==m.name&&aO(a.value,l));if(n){let b=a.slice(Math.max(0,i-150),i+f[0].length+150);if(aT(b,m)&&aT(b,n))continue;let e=`合计值与权威不符:「${m.name}」清单权威 ${m.value}${f[2]};正文 ${g}${f[2]} \u2248 ${m.value} + ${n.value}(「${n.name}」)——若「${n.name}」应计入「${m.name}」合计,须在正文显式分项;若不应计入(重复计入),须改回权威值 ${m.value}${f[2]}`;d.has(e)||(d.add(e),c.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:e,suggestion:`核对合计口径:「${m.name}」合计为 ${m.value}${f[2]}(清单权威)。若正文需表达 ${m.value} + ${n.value},则显式写成「${m.name} ${m.value}${f[2]}、${n.name} ${n.value}${f[2]},合计 ${g}${f[2]}」;否则将合计改回 ${m.value}${f[2]}(差额 ${Math.round(1e4*l)/1e4}${f[2]} 属「${n.name}」,不得并入)。`}));continue}if(aV(g,h,k,b,e))continue;let o=`合计值与权威不符:「${m.name}」合计为 ${m.value}${f[2]}(清单权威),正文写 ${g}${f[2]},且差额不属任何清单条目,需核对合计口径`;d.has(o)||(d.add(o),c.push({level:"warning",severity:"warning",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:o,suggestion:`核对「${m.name}」的合计口径:若为多分项之和,请写明与权威一致的分项分解;若为单一总量,改为清单权威值 ${m.value}${m.unit||f[2]}。`}));continue}let n=aU(j,g,k);if(n.length>=2){let b=a.slice(Math.max(0,i-150),i+f[0].length+150),e=n.filter(a=>!aT(b,a));if(e.length>0){let a=n.map(a=>`「${a.name}」${a.value}${a.unit}`).join(" + "),b=`合计数值应分项显式:正文合计 ${g}${f[2]} = ${a},但未展示分项(缺 ${e.map(a=>`${a.name} ${a.value}${a.unit}`).join("、")}),无法核对合计来源`;d.has(b)||(d.add(b),c.push({level:"warning",severity:"warning",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:b,suggestion:`在合计值附近补充分项明细(${a});分项值必须取自工程量清单原文,不得改动。`}))}continue}{let a=new Map;for(let b of j)a.set(b.name,(a.get(b.name)||0)+b.value);let b=!1;for(let c of a.values())if(aO(c,g)){b=!0;break}if(b)continue}if(aV(g,h,k,b,e))continue;let o=j.filter(a=>aS(a.name,k)),p=j.some(a=>aO(a.value,g)),q=b.numberPool.some(a=>aO(a,g));if(!p&&!q&&o.length>0){let a=`合计值无权威来源:正文「${f[0].trim()}」在清单事实锁与蓝图参数桶中找不到同值来源,违反无据不写`;if(d.has(a))continue;d.add(a),c.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:a,suggestion:"删除该合计数值或改为与清单权威一致的合计值;无权威来源的合计数不得进入交付文本。"})}}return c}(b,c),...function(a,b){let c=[];if(0===b.specValues.size)return c;let d=new Set;for(let e of a.matchAll(aW)){let f,g=e[0].replace(/\s+/gu,"").toLowerCase(),h=b.specValues.get(g);if(!h)continue;let i=a.slice((e.index??0)+e[0].length,(e.index??0)+e[0].length+36),j=/^([^。;;\n|]{0,16}?)([\d,,]+(?:\.\d+)?)\s*(座|个|套|米|m|km|公里|平方米|m2|㎡|m²|立方米|m3|m³|吨|t|kg)(?![a-zA-Z0-9²³])/u.exec(i);if(!j||aQ.test(j[1])||/不大于|不超过|不得大于|不得超过/.test(j[1]))continue;let k=aN(j[2]);if(void 0===k||h.some(a=>aO(a.value,k)))continue;let l=new Map;for(let a of h)l.set(a.entryName,(l.get(a.entryName)||0)+a.value);if(h.length>=2&&[...l.values()].some(a=>aO(a,k)))continue;for(let[a,c]of b.specValues){if(a===g)continue;let b=c.find(a=>aO(a.value,k));if(b){f={spec:b.spec||a,entryName:b.entryName};break}}if(!f||j[1]&&aS(f.entryName,j[1]))continue;let m=`规格-数值绑定错位:正文「${e[0]} ${k}${j[3]}」中 ${k}${j[3]} 属规格「${f.spec}」(清单条目「${f.entryName}」),不属于「${e[0]}」的清单数量`;d.has(m)||(d.add(m),c.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:m,suggestion:`「${e[0]}」的数量必须引用清单中该规格条目的原值(如 ${h.map(a=>`${a.value}${a.unit}`).join("、")});「${f.spec}」的数量不得张冠李戴至「${e[0]}」。`}))}return c}(b,c),...function(a,b){let c=[],d=new Set;for(let e of a.matchAll(aX)){let a=aN(e[1]);if(void 0===a)continue;let f=e[2];if(("mm"===f?a/1e3:"cm"===f?a/100:a)<=10)continue;let g=b.entries.find(b=>aO(b.value,a)&&/总长|全长|总长度|长度|管线/u.test(b.name)),h=`数值语义槽位错位:正文「${e[0].trim()}」——埋深/覆土数值 ${a}${f} 超出物理合理范围(管道埋深一般 <10m)${g?`,且该数值与权威「${g.name}」(${g.value}${g.unit})一致,疑似把总长/长度口径误用作埋深`:",疑似口径混用"}`;d.has(h)||(d.add(h),c.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:h,suggestion:`核对槽位语义:埋深/覆土深度应在 0.3~10m 合理区间(以设计图纸为准);总长/长度类数值不得用于埋深描述${g?`(「${g.name}」为 ${g.value}${g.unit})`:""}。`}))}return c}(b,c),...function(a,b){let c=[];if(0===b.numberPool.length)return c;let d=new Set,e=(a,e,f)=>{let g=aN(a);if(void 0===g||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)))}(g,b.numberPool))return;let h=`近似数值不可推导:正文「${f.trim()}」的 ${g}${e} 在清单/蓝图/事实主表中无同值或近似来源,违反无据不写`;d.has(h)||(d.add(h),c.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:h,suggestion:"删除该近似表述,或改用权威数据可推导的数值(清单/蓝图同值口径);「约/近」类近似数值必须可闭合到权威来源。"}))};for(let b of a.matchAll(aY)){let c=b.index??0,d=a.slice(Math.max(0,c-1),c);a$.test(d)||e(b[1],b[2],b[0])}for(let b of a.matchAll(aZ))e(b[1],b[2],b[0]);return c}(b,c),...function(a,b,c){let d=[],e=new Set,f=b.entries.map(a=>`${a.name} ${a.description}`).join("\n"),g=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=g.get(b.name)||[];a.push(b.sum),g.set(b.name,a)}}let h=new Map,i=new Map,j=new Map,k=(a,c,d)=>{let e=`${a}\u0000${c}`,f=h.get(e);if(f||(f=b.entries.filter(b=>b.name===a&&aP(b.unit)===c&&b.value>0).map(a=>Math.round(100*a.value)),h.set(e,f)),f.length<2)return!1;let g=`${e}\u0000${Math.round(100*d)}`,j=i.get(g);if(void 0!==j)return j;let k=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 i.set(g,k),k},l=(a,c)=>{let d=g.get(a)||[];if(0===d.length)return!1;let e=`${a}\u0000${Math.round(100*c)}`,f=j.get(e);if(void 0!==f)return f;let h=d.some(a=>b.numberPool.some(b=>aO(a+b,c)));return j.set(e,h),h};if(c)for(let f of c.entries){let c=(f.name||"").trim();if(c.length<2||a_.test(c)||!Number.isFinite(f.quantity))continue;let h=0,i=0;for(;i<6;){let j=a.indexOf(c,h);if(j<0)break;if(h=j+c.length,i+=1,/\d$/u.test(c)&&/^[\d.]/u.test(a.slice(j+c.length,j+c.length+1))){h=j+1;continue}if("量"===a.slice(j+c.length,j+c.length+1))continue;let m=a.slice(j+c.length,j+c.length+20),n=/^([^。;;\n|]{0,12}?)([\d,,]+(?:\.\d+)?)\s*(座|个|套|处|盏|棵|株|樘|扇|根|块|片|组|件|孔|间|栋|幢|户|米|m|km|公里|平方米|m2|㎡|m²|立方米|m3|m³|kg|吨|t)(?![a-zA-Z0-9²³])/u.exec(m);if(!n||aQ.test(n[1]))continue;let o=aN(n[2]);if(void 0===o||aO(o,f.quantity))continue;let p=aP(n[3]);if(p!==aP(f.unit)||b.entries.some(a=>a.name===c&&aO(a.value,o)&&aP(a.unit)===p)||(g.get(c)||[]).some(a=>aO(a,o))||k(c,p,o)||l(c,o))continue;let q=a.slice(Math.max(0,j-32),j+c.length+20);if(function(a,b,c,d){for(let[e,f]of d)if(e!==b&&(e.includes(b)||b.includes(e)||aS(e,c))&&f.some(b=>aO(b,a)))return!0;return!1}(o,c,q,g))continue;let r=b.entries.find(a=>a.name!==c&&aO(a.value,o)&&aP(a.unit)===p);if(r&&aS(r.name,q))continue;if(r){let a=`名称-数值绑定错位:「${c}」处数值 ${o}${n[3]} 属清单条目「${r.name}」(${r.value}${r.unit}),与「${c}」清单数量 ${f.quantity}${f.unit} 不符`;if(e.has(a))continue;e.add(a),d.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:a,suggestion:`核对「${c}」的数量口径:清单权威值为 ${f.quantity}${f.unit};引用「${r.name}」数量时须明确对象名称,不得张冠李戴。`});continue}if(function(a,b,c,d){let e=a.slice(Math.max(0,b-40),b+c+40),f=[];for(let a of e.matchAll(/\d+(?:\.\d+)?/gu)){let b=Number.parseFloat(a[0]);Number.isFinite(b)&&!aO(b,d)&&f.push(b)}for(let a=0;a<f.length;a+=1)for(let b=a+1;b<f.length;b+=1)if(aO(f[a]+f[b],d)||aO(Math.abs(f[a]-f[b]),d))return!0;return!1}(a,j,c.length,o)||b.numberPool.some(a=>aO(a,o)))continue;let s=`名称-数值绑定无源:「${c}」处数值 ${o}${n[3]} 与清单权威 ${f.quantity}${f.unit} 不符,且在全部权威数据中找不到同值来源`;e.has(s)||(e.add(s),d.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:s,suggestion:`将「${c}」的数量改为清单权威值 ${f.quantity}${f.unit};无权威来源的数值不得与清单条目名称绑定出现。`}))}}for(let c of a.matchAll(a0)){let g=c[0];if(f.includes(g))continue;let h=c[2],i=a.slice((c.index??0)+g.length,(c.index??0)+g.length+16),j=/^([^。;;\n|]{0,10}?)([\d,,]+(?:\.\d+)?)\s*(樘|扇|套|座|盏|个)(?![a-zA-Z0-9²³])/u.exec(i);if(!j)continue;let k=aN(j[2]);if(void 0===k)continue;let l=b.entries.find(a=>a.name.includes(h)&&aO(a.value,k)&&aP(a.unit)===aP(j[3]));if(!l)continue;let m=`名称口径不符:正文「${g} ${k}${j[3]}」——${k}${j[3]} 对应清单「${l.name}」条目,清单中不存在「${g}」,名称与清单权威不符`;e.has(m)||(e.add(m),d.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:m,suggestion:`名称必须与清单条目口径一致:将「${g}」改为「${l.name}」(或清单原文名称);名称与数量绑定不得自行替换材质/类型限定词。`}))}return d}(b,c,a.billFactLock)],e=[],f=new Set;for(let a of d){let b=`${a.severity||a.level}|${a.message}`;if(!f.has(b)&&(f.add(b),e.push(a),e.length>=60))break}return e})({markdown:a.markdown,billFactLock:a.billFactLock,blueprintData:a.blueprintData,factsModel:a.factsModel})),...(0,l.yT)("greening-maintenance-mismatch",()=>(0,p.x5)(a.markdown,a.factsModel)),...(0,l.yT)("street-light-count-mismatch",()=>(0,p.Tz)(a.markdown,a.factsModel)),...(0,l.yT)("spec-location-mismatch",()=>(0,p.$$)(a.markdown,a.factsModel.specAuthorityMap)),...await (0,l.ll)("blueprint-citation-consistency",async()=>a.blueprintData?(await (0,q.dr)(a.markdown,a.blueprintData)).filter(a=>"error"===a.level):[]),...await (0,l.ll)("cross-project-value-copy",()=>(0,p.iy)(a.markdown,(0,E.L$)(a.blueprintData))),...(0,l.yT)("phase-labor-mixing",()=>(0,p.cv)(a.markdown,(0,E.i2)(a.blueprintData))),...(0,l.yT)("equipment-batch-conflict",()=>(0,p.KE)(a.markdown,(0,E.Be)(a.blueprintData))),...(0,l.yT)("preliminary-action-timing",()=>(0,p.fg)(a.markdown,a.blueprintData?.contract.totalDays)),...(0,l.yT)("foundation-form-residue",()=>(0,p.ex)(a.markdown)),...(0,l.yT)("ambiguous-either-or",()=>(0,p.Fr)(a.markdown)),...(0,l.yT)("excavation-depth-lock",()=>(0,p.bq)(a.markdown)),...(0,l.yT)("excavation-hazard-classification",()=>(0,p.LA)(a.markdown,a.factsModel)),...(0,l.yT)("support-form-fact-consistency",()=>(0,p.ek)(a.markdown,a.factsModel)),...(0,l.yT)("equipment-entry-timing",()=>(0,p.fQ)(a.markdown,a.factsModel)),...(0,l.yT)("fabricated-award",()=>(0,p.hu)(a.markdown,a.factsModel,a.tenderRequirements)),...(0,l.yT)("bidder-qualification-section",()=>(0,p.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,aJ.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,aJ.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,p.cT)(a.markdown)),...(0,l.yT)("duplicate-table",()=>(0,p.ub)(a.markdown)),...(0,l.yT)("duplicate-paragraph",()=>(0,p.cl)(a.markdown)),...(0,l.yT)("paragraph-tail-repeat",()=>(0,p.AD)(a.markdown)),...(0,l.yT)("collision-numbered-heading",()=>(0,p.xR)(a.markdown)),...(0,l.yT)("inverted-date-range",()=>(0,p.jP)(a.markdown)),...(0,l.yT)("resource-triad-section-hierarchy",()=>(0,p.zP)(a.markdown)),...await (0,l.yT)("support-system-conflict",()=>(0,p.r8)(a.markdown,(0,p.P3)(a.factsModel))),...(0,l.yT)("dangerous-list-consistency",()=>(0,p.vH)(a.markdown)),...(0,l.yT)("hazard-exclusion-contradiction",()=>(0,p.m6)(a.markdown)),...await (0,l.yT)("six-hundred-percent-coverage",()=>(0,p.sn)(a.markdown)),...await (0,l.yT)("self-undermining-candidate",()=>(0,p.YN)(a.markdown)),...(0,l.yT)("paragraph-opening-repeat",()=>(0,p.y2)(a.markdown)),...(0,l.yT)("flow-form-repeat",()=>(0,aL.Q9)(a.markdown)),...(0,l.yT)("skeleton-fingerprint",()=>(0,aL.o0)(a.markdown)),...(0,l.yT)("repeated-word",()=>(0,p.Xc)(a.markdown)),...await (0,l.yT)("commercial-data-in-body",()=>(0,p.mC)(a.markdown)),...(0,l.yT)("overview-recap",()=>(0,p.l4)(a.markdown)),...(0,l.yT)("closure-phrase-density-cap",()=>(0,p.dF)(a.markdown)),...await (0,l.ll)("parameter-concept-conflict",()=>ao(a.markdown,{billFactLock:a.billFactLock})),...await (0,l.ll)("internal-terminology-anchor",()=>(0,D.WT)(a.markdown)),...(0,l.yT)("construction-system-coverage",()=>(function(a){let b=[...new Set(a.flatMap(a=>ap.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",()=>(0,aq.e6)(a.markdown)),...(0,l.yT)("innovation-tech-coverage",()=>(0,C.Ef)(a.markdown,a.effectiveChapters||a.template.chapters||[])),...(0,l.yT)("instruction-like-heading",()=>(0,C.K1)(a.markdown)),...(0,l.yT)("formal-heading-hierarchy",()=>(0,C.Fv)(a.markdown)),...(0,l.yT)("formal-content-integrity",()=>(0,C.k0)(a.markdown)),...(0,l.yT)("punctuation-artifact",()=>(0,C.vZ)(a.markdown)),...(0,l.yT)("table-quality",()=>(0,C.NS)(a.markdown)),...(0,l.yT)("table-spam",()=>(0,C.SN)(a.markdown)),...(0,l.yT)("basis-regulations-coverage",()=>(0,C.AN)(a.markdown,a.blueprintData)),...(0,l.yT)("resource-breakdown-consistency",()=>(0,C.EJ)(a.markdown,a.blueprintData)),...(0,l.yT)("section-content-integrity",()=>(0,C.qK)(a.markdown,a.chapters)),...(0,l.yT)("professional-content",()=>(0,C.ji)(a.chapters,i)),...(0,l.yT)("professional-score",()=>(0,C.i0)(a.chapters,i)),...(0,l.yT)("generic-professional-content",()=>(0,C.ST)(a.chapters,i)),...(0,l.yT)("management-measure-number",()=>(0,C.xX)(a.chapters,i)),...await (0,l.yT)("closed-loop-density",()=>(0,C.Zu)(a.markdown)),...await (0,l.yT)("cross-chapter-consistency",()=>(0,C.qm)(a.markdown,a.factsModel,a.scopeConflicts,i)),...await (0,l.yT)("process-spec-conflict",()=>(0,C.hr)(a.markdown,a.factsModel)),...(0,l.yT)("evidence-usage-coverage",()=>Q(a.markdown,a.factsModel)),...await (0,l.yT)("paragraph-generic",()=>R(a.markdown,a.professionalDepthClassifier)),...await (0,l.yT)("construction-org-generic-language",()=>(0,M.Fw)(a.chapters)),...(0,l.yT)("construction-org-control-loop",()=>(0,M.Hl)(a.chapters)),...(0,l.yT)("construction-org-professional-chain",()=>(0,M.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 _){let e=ad(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=aa(d[1]||d[0]||"");!ac.test(a)&&a.length>=2&&a.length<=80&&c.push(a)}}return[...new Set(c)]})(a,d.patterns).filter(a=>!ab.test(a)&&!function(a,b){return 0===b.length||b.some(b=>b.includes(a)||a.includes(b)||a.length>=4&&b.includes(a.slice(0,4)))}(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=ad(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,M.Av)(a.chapters,a.markdown)),...(0,l.yT)("construction-org-division-section",()=>(0,M.CS)(a.chapters,a.markdown)),...(0,l.yT)("major-content-governance",()=>(0,M.l5)(a.markdown)),...(0,l.yT)("construction-org-bonus-module",()=>(0,M.b7)(a.chapters)),...(0,l.yT)("chapter-dependency",()=>S(a.chapters,i)),...(0,l.yT)("document-delivery-score",()=>(function(a,b,c,d){let e={factuality:2*!(0,C.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,C.i0)(b,d).length?2:1,executable:0===S(b,d).length?2:1,evidence:0===Q(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,i)),...(0,l.yT)("generated-fact-verification",()=>b),...(0,l.yT)("duplicate-basic-info",()=>(0,C.iC)(a.markdown)),...await (0,l.yT)("formal-style",()=>(0,C.BV)(a.markdown)),...(0,l.yT)("tertiary-heading",()=>(0,z.dh)(a.markdown)),...(0,l.yT)("min-chapter-section",()=>(0,C.Ty)(a.chapters)),...await (0,l.yT)("precise-fact-usage",()=>(0,C.N1)(a.markdown,a.factsModel,a.chapters)),...await (0,l.yT)("boq-placement",()=>(0,C.S2)(a.markdown,a.chapters,a.factsModel)),...await (0,l.yT)("stage-phrasing",()=>av(a.markdown)),...await (0,l.yT)("emergency-section-depth",()=>aI(a.markdown)),...(0,l.yT)("boq-row-trace",()=>(0,N.QP)((0,N.JV)(a.markdown,a.factsModel))),...(0,l.yT)("drawing-reference",()=>(0,C.yd)(a.markdown,a.factsModel)),...(0,l.yT)("web-evidence-leakage",()=>(function(a){let b=[];return W.test(a)&&b.push({level:"warning",message:"正文包含联网增强过程性表述",suggestion:"请删除联网检索、网页资料、搜索结果等过程性话术,改为正式交付语言。"}),b})(a.markdown)),...(0,l.yT)("formal-placeholder",()=>(0,C.bM)(a.markdown)),...(0,l.yT)("prompt-example-leak",()=>(0,C.M$)(a.markdown,a.promptBindings)),...(0,l.yT)("degenerate-content",()=>(0,C.AC)(a.markdown,a.chapters)),...(0,l.yT)("planned-auto-spec-gate",()=>(0,C.mR)(a.markdown,a.template)),...(0,l.yT)("bid-composition-body-table",()=>(0,z.NN)(a.markdown,a.bodyTableForbidden)),...(0,l.yT)("planned-structure",()=>(0,z.UG)(a.markdown,a.template,a.bodyTableForbidden)),...await (0,l.yT)("prompt-document-rule",()=>(0,z.Ed)(a.markdown,a.promptDocumentRules,void 0,{bodyTableForbidden:a.bodyTableForbidden,coverForbidden:a.coverForbidden})),...await (0,l.yT)("local-adaptation-keyword",()=>(0,p.cJ)(a.markdown,a.factsModel)),...(0,l.yT)("boq-division-coverage",()=>(0,N.sl)(a.markdown,a.chapters,a.factsModel))]}let a2={project:"项目基础事实",schedule:"工期与节点",quality:"质量目标与验收",safety:"安全文明要求",resources:"资源投入依据",quantities:"清单/图纸/工程量事实",rules:"规范规则与验收要求"};var a3=c(52922);let a4=["精心组织","科学统筹","科学管理","精益求精","全力保障","高效推进","力争优质","力争一流","一流水平","完善体系","最大限度","显著提升","大力落实","严格把控","充分确保","竭力打造","现代化管理","加强管理","提高意识","强化监督","持续完善","及时处理","全方位","常态化","提质增效","高标准","统筹推进"];[...a4];let a5=["危险性较大的分部分项工程安全管理","扬尘污染防治措施","建筑工人实名制管理","农民工工资专用账户与工资支付保障","生产安全事故应急预案与应急演练","绿色施工与四节一环保措施"],a6=["危险源辨识与风险识别评估","编制专项施工方案","组织专家论证并履行审批程序","对作业人员进行安全技术交底","施工过程监测与监控量测","分部分项工程验收","三级配电系统","两级漏电保护装置","漏电保护器与接地保护","实名制考勤与人员管理","农民工工资专用账户银行代发","应急预案编制与响应","绿色施工措施与评价"];function a7(a){return a.replace(/^第[一二三四五六七八九十百千万\d]+[章节]\s*/u,"").replace(/^\d+(?:\.\d+)*[、..\s]+/u,"").replace(/^[((]?[一二三四五六七八九十]+[))、..\s]+/u,"").replace(/\s+/gu,"").trim()}async function a8(a){let{blocks:b,completeBlocks:c}=await (0,a3.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 a9=/目录|层级|编号|表格|表头|分隔线|页码|空小节|缺少规划小节|小节只有标题|缺节/u,ba=/跨章一致性复核|事实一致性冲突|事实冲突|评分项要求|可靠精确参数|应急预案|属地创优|工伤保险|专业评分|深度不足|事实反查|存在多个值|已确认事实未在正文中落位|事实未在正文中落位/u,bb=/缺少规划小节|小节只有标题|空小节|只有标题或表格无正文|小节内容补写未完成|小节生成未达标|同名小节|H4 标题|正文缺少章节标题|小节正文过短/u;async function bc(a,b){let c=await (0,a3.Bt)(a,b),d=(0,a3.Ye)(a),e=a.split(/\n+/u).filter(a=>a.trim()&&!/^\s*(#{1,6}\s+|\||[-*+]\s|>)/u.test(a)).flatMap(a=>a.split(/[。;;]/u)).map(a=>a.replace(/[\s,,、::()()【】[\]《》“”"'`]/gu,"")).filter(a=>a.length>=12),f=e.length?(e.length-new Set(e).size)/e.length:0,g=await (0,a3.gE)(a,b),h=(0,a3.nY)(a);return{level:g.heavyTemplated?"heavy":c.level,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:f,crossProjectResidue:h,difficultyCountermeasureRatio:g.ratio,difficultyBothCount:g.bothCount,difficultyCountermeasures:g.countermeasures,difficultyHeavyTemplated:g.heavyTemplated}}async function bd(a){let b=a.markdown.split(/\n{2,}/u).filter(a=>a.trim().length>=30),c=await (0,ae.Mv)(b,[...a5,...a6],a.embedDocuments),d=a=>b.some(b=>c(b,a)>=ae.Eh),e=await (0,a3.Bt)(a.markdown,a.embedDocuments);return{completeness:function(a,b,c,d){let e=[...a.matchAll(/^#{1,3}\s+(.+)$/gmu)].map(a=>a7(a[1]||"")).filter(a=>a.length>=2),f=1,g=c?.chapters||[];if(g.length>0){let a=g.map(a=>a7(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(a7(a.title))||a7(a.title).includes(b))).length/b.length);return Math.round((.55*f+.45*(a5.filter(d).length/a5.length))*100)}(a.markdown,a.chapters,a.template,d),specificity:function(a,b){let c=b.filter(N.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=a6.filter(b).length/a6.length,d=(0,a3.JD)(a);return Math.round((.8*c+.1*(d.twoStepComplete?1:d.categories.length>0&&d.graded?.6:.3*(d.categories.length>0))+.1*(0,a3.bH)(a).coverage)*100)}(a.markdown,d),executability:await a8(a.markdown),normalization:function(a){let b=a=>"table"===a.category||"format"===a.category||("structure"===a.category?bb.test(a.message):!a.category&&!ba.test(a.message)&&a9.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=a4.filter(b=>a.includes(b)).length,d=b.vagueSemanticSentences,e=100*Math.max(0,b.ratio-.1),f=a.split(/\n+/u).filter(a=>a.trim()&&!/^\s*(#{1,6}\s+|\||[-*+]\s|>)/u.test(a)).flatMap(a=>a.split(/[。;;]/u)).map(a=>a.replace(/[\s,,、::()()【】[\]《》“”"'`]/gu,"")).filter(a=>a.length>=12);return Math.max(0,Math.round(100-4*c-6*d-.5*e-60*(f.length?(f.length-new Set(f).size)/f.length:0)))}(a.markdown,e)}}async function be(a){let b=await bd({markdown:a.markdown,chapters:a.chapters,template:a.template,factTraces:a.factTraces,issues:a.issues,embedDocuments:a.embedDocuments}),c=Math.round((.3*b.completeness+.25*b.specificity+.2*b.compliance+.15*b.executability+.1*b.normalization)*Math.min(1,b.uniqueness/90)),d=a.issues.filter(a=>"error"===a.level).length,e=Math.max(0,Math.min(99,Math.round(c-8*d))),f=a.knowledgeCoverage.score>=95?95:85;return{overall:c,deliveryProbability:e,target:f,passed:e>=f&&0===d,scores:b,templating:await bc(a.markdown,a.embedDocuments),summary:`交付置信度 ${e}% / 目标 ${f}%,综合评分 ${c}/100(资料完整性 ${b.completeness}、方案针对性 ${b.specificity}、合规性 ${b.compliance}、可落地性 ${b.executability}、编制规范性 ${b.normalization}、低雷同性 ${b.uniqueness})`,actions:e>=f&&0===d?["已达到当前质量目标,建议保持事实口径和导出前复核。"]:["按招标评审口径补齐短板维度:章节与强制模块缺失补完整性、项目专属数据补针对性、危大闭环与强制制度补合规性、责任频次闭环句式补可落地性、表格层级与数据一致补规范性、清理空话禁用词与重复句式降雷同。","系统需优先修复阻断问题、扩大本地知识库检索、补抽结构化事实,并将未落位事实写入对应章节。"]}}let bf=new Set(["fact-coverage","overview-recap","internal-terminology-anchor","global-consistency-snapshot","data-consistency-snapshot"]);function bg(...a){return a.flat()}var bh=c(91977),bi=c(51144);function bj(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 bk(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,bi.Cr)(d,a=>(0,bi.Ox)(a),{maxItems:16,maxChars:1200},"retrieval-sections").selected,g=(0,bi.Cr)(e,a=>(0,bi.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,bi.Cr)(l,a=>(0,bi.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},limit:h,weights:{keyword:.62,vector:.32,rewrite:.9,hybridBonus:.28},generationMode:!0});return(c={chapter:a.chapter,results:d.results.filter(b=>a.scopedFilePaths.includes(b.filePath)),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 bl=c(32434),bm=c(36003),bn=c(95734);async function bo(a,b){let c=(0,z.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,bm.AI)(e,(0,bm.Ym)(e,a.chapter,a.evidence),b),i=(0,bm.uQ)(e,g,h);i&&d.push(`${e}:${i}`)}return d}function bp(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 bq(a){return"string"==typeof a?a:a&&"object"==typeof a&&"message"in a?String(a.message):JSON.stringify(a)}function br(a){let b=Number(process.env[a]);return Number.isFinite(b)&&b>0?Math.ceil(b):0}async function bs(a){var b;(0,e.Te)(a.signal);let c=a.chapters.map(a=>{let b=a.content.replace(/#{1,6}\s+/gu,"").replace(/\*\*/gu,"").replace(/\|/gu," ").replace(/[\n\r]+/gu," ").trim(),c=function(a){let b=[];for(let c of[/(?:总建筑面积|建设规模|总用地面积|总占地面积)[^\n。;;]{0,18}\d+(?:[.,]\d+)?\s*万?\s*(?:㎡|m²|m2|平方米)/gu,/(?:合同估算价|合同估算价格|投资估算|最高投标限价|招标控制价|工程总投资|总投资|工程造价)[^\n。;;]{0,18}\d+(?:[.,]\d+)?\s*万?\s*(?:万元|亿元|元)/gu,/(?:计划工期|合同工期|总工期|施工周期)[^\n。;;]{0,18}\d+\s*(?:日历天|天|个月|月)/gu,/(?:质量标准|质量目标)[^\n。;;]{0,26}/gu,/(?:找平层|抹灰层|防水层|保温层|结合层|垫层|面层|粘结层)[^\n。;;]{0,24}\d+:\d+(?:\.\d+)?/gu]){let d=[...new Set(a.match(c)||[])].slice(0,4);b.push(...d)}return[...new Set(b.map(a=>a.replace(/\s+/gu," ").trim()).filter(Boolean))].join(";")}(a.content);return`章节:${a.title}
18
18
  数值口径清单:${c||"(未提取到总量口径数字)"}
19
19
  正文摘要:${b.slice(0,600)}`}).join("\n\n---\n\n"),d=function(a){let b=Math.ceil(a.totalChars/Math.max(1e3,a.chunkChars)),c="chapter"===a.phase?br("DOCUMENT_CHAPTER_REVIEW_MAX_CHUNKS")||Math.min(Math.max(2,Math.floor(a.totalChars/a.chapterCount/4e3)),b):"global"===a.phase?br("DOCUMENT_GLOBAL_REVIEW_MAX_CHUNKS")||Math.min(4,b):br("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=bp(c,16e3).map((a,b)=>`**第 ${b+1}/${bp(c,16e3).length} 部分**
20
20
 
@@ -31,7 +31,7 @@ ${i}`}(a,b),d=a.replace(e.LH,"");if(!bP.test(d)||bQ.test(d))return c;let f=bR.ex
31
31
 
32
32
  ${c.slice(a)}`}return`${c.replace(/\s+$/u,"")}
33
33
 
34
- ${bO}`}async function bU(a){let{documentSpec:b,validationIssues:c,factsModel:d,finalChapterDrafts:f,finalMarkdown:g,template:i,promptBindings:j,promptDocumentRules:m,projectMaterialSummary:n,domainProfile:o,structuredFacts:p,documentBudget:q,scopeConflicts:r,evaluationCriteriaItems:s,effectiveChapters:u,tenderRequirements:A,requirementsSimilarity:B,factTokenScopeClassifier:E,professionalDepthClassifier:F,blueprintData:G,billFactLock:H,bodyTableForbidden:I,coverForbidden:J}=a;return bg((0,l.yT)("spec-gate-rules",()=>(0,C.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||t(d))&&/\d|GB|JGJ|C\d|HRB|DN|mm|MPa|kPa|工期|质量|安全|项目名称|工程名称|招标人|建设地点|建筑面积|结构形式|层数/u.test(d)&&!v(c,e.name)&&b.push({level:"info",message:`正文可能未显式覆盖“${e.name}”`,suggestion:"建议检查对应章节是否已自然表达该事实。"})}let e=a.summary.facts.projectName;!e||"当前知识库项目"===e||t(e)||v(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:"如文档需要编号,请在概况、背景或首页信息中补充。"}),["知识库证据","资料类型","提示词角色","文档规范包","规范包","后台自动规范","后台优化建议","基础事实候选","材料未提供","未检索到"]))c.includes(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||w.p4,c=[],d=new Map;for(let c of a.facts){let a=c.fieldName||c.key;a&&function(a,b){let c=(0,w.oC)(b,a);return c?"single"===c.cardinality&&"allow_multiple"!==c.conflictPolicy&&"ignore"!==c.conflictPolicy:/项目名称|工程名称|招标人|建设地点|建筑面积|结构形式|层数|工期|质量标准|合同价格形式|绿色建筑等级|投标有效期|质保期/u.test(a)}(a,b)&&y(String(c.value),b)&&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=y(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=x(a.markdown),d=[e,...a.summary.fingerprint.projectNames].flatMap(a=>[a,a.replace(/^\d+(?:\.\d+)?[^\u4e00-\u9fa5]*/u,""),a.replace(/\([^)]*\)|([^)]*)/gu,"")]).map(a=>x(a)).filter(a=>a.length>=4),f=d.filter(a=>a.length>=8),g=d.filter(a=>a.length<8),h=f.some(a=>b.includes(a)||a.length>=12&&b.includes(a.slice(0,Math.max(8,Math.floor(.72*a.length))))),i=g.some(a=>b.includes(a));(f.length>0?h:!(g.length>0)||i)||c.push({level:"warning",message:`正文未包含当前对象名称:${e}`,suggestion:"请确认标题、概况或背景信息是否已体现当前对象名称。"})}return c})({markdown:g,facts:p,summary:n,profile:o})),(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-basic-placeholder",()=>(0,k.h)(g,p)),await (0,l.ll)("standard-final",()=>a1({markdown:g,chapters:f,factsModel:d,template:i,promptBindings:j,promptDocumentRules:m,scopeConflicts:r,evaluationCriteriaItems:s,effectiveChapters:u,tenderRequirements:A,requirementsSimilarity:B,factTokenScopeClassifier:E,professionalDepthClassifier:F,blueprintData:G,billFactLock:H,bodyTableForbidden:I,coverForbidden:J})),(0,l.yT)("fact-coverage",()=>(0,k.br)(g,[...p,...d.preciseFacts],{maxIssues:30}).map(a=>({...a,level:"warning",severity:"warning",suggestion:"建议后续优化事实自然落位;导出阶段不因未落位的引用型或可优化事实阻断。"}))),(0,l.yT)("page-target",()=>(0,h.PE)(i.generationSettings||i.exportSettings,g).filter(a=>!(q.minPages&&/低于目标页数/u.test(a.message)))),(0,l.yT)("document-budget",()=>(0,h.ty)(q,g)),(0,l.yT)("planned-structure",()=>(0,z.UG)(g,i,I)),(0,l.yT)("formal-text-gate",()=>(0,bl.IA)(g)),await (0,l.ll)("internal-terminology-anchor",()=>(0,D.WT)(g)),(0,l.yT)("heading-uncovered-engineering-items",()=>(0,C.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=[{title:"项目特点、重点、难点分析",minChars:1800},{title:"项目主要施工内容",minChars:2200},{title:"主要分部分项工程施工方案",minChars:1200,blockerMinChars:800},{title:"主要施工方法",minChars:2200},{title:"危大工程专项施工方案审批流程",minChars:500,blockerMinChars:250},{title:"原材料进场复试与见证取样",minChars:600,blockerMinChars:300}],c=[];for(let d of a)for(let a of b){let b=(0,e.Xl)(d.content,a.title)||(0,e.Xl)(d.content,a.title,{fuzzy:!0}),f=(0,h.V7)(b);if(!b||f>=a.minChars)continue;let g=(0,k.R_)(a.title);f>=g?c.push({level:"warning",severity:"warning",message:`${d.title} ${a.title} 正文深度接近目标:当前 ${f} 字,目标 ${a.minChars} 字`,suggestion:"已达到可交付深度,建议后续按项目数据继续优化扩写。"}):c.push({level:"error",severity:"blocker",message:`${d.title} ${a.title} 正文不足:当前 ${f} 字,要求不少于 ${g} 字`,suggestion:"关键小节必须补足项目数据、重点难点与施工内容对应关系后方可导出。"})}return c})(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,bJ.Cd)(a.content);return b.gap?[{level:"warning",severity:"warning",message:`${a.title} 量化参数密度偏低:当前 ${b.params} 个(约 ${b.per1000}/千字,建议 ≥${bJ.J5}/千字、约 ${b.required} 个),小节事实或量化参数落位可继续优化`,suggestion:"优先将本章绑定资料中的工程规模、工期、部位做法、材料规格等参数自然写入对应工序;不得从行业惯例或相邻章节借参数凑数。"}]:[]})),await (0,l.ll)("construction-org-professional-audit",async()=>(await bI(f,g)).map(a=>"error"===a.level?{...a,severity:"blocker"}:a))).map(a=>"error"===a.level?{...a,severity:a.severity||"blocker"}:a)}let bV=/章节级证据覆盖较弱|章节事实覆盖不足|小节事实或量化参数落位可继续优化/u;async function bW(a){var b;let{finalChapterDrafts:c,effectiveChapters:d,factsModel:e,allEvidence:f,finalMarkdown:g,validationIssues:i,retrievalCoverageReports:j,includeRetrievalCoverage:k,template:l}=a,m=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(a2[c]||c,"u").test(`${a.sectionTitle||""} ${a.content||""}`))}),e=c.filter(a=>!d.includes(a)),f=c.length?Math.round(d.length/c.length*100):100;return{chapterId:b.id,title:b.title,requiredDomains:c,confirmedDomains:d,unconfirmedDomains:e,score:f}}),c=new Set(a.evidence.map(a=>a.filePath).filter(Boolean)),d=b.length?Math.round(b.reduce((a,b)=>a+b.score,0)/b.length):100;return{score:d,evidenceCount:a.evidence.length,confirmedFiles:c.size,chapterReports:b,unconfirmedDomains:[...new Set(b.flatMap(a=>a.unconfirmedDomains))],remediation:d>=95?"知识库事实覆盖已达到高置信交付要求。":"系统需扩大本地知识库检索、补抽结构化事实,并将已确认事实落位到对应章节。"}}({chapters:c,templateChapters:d,factsModel:e,evidence:f}),n=(0,N.e$)(g,e),o=(b={chapters:c,templateChapters:d,factsModel:e}).chapters.map(a=>{let c=b.templateChapters.find(b=>b.id===a.id||b.title===a.title),d=function(a,b){let c=`${a.title} ${(b?.sections||a.sections||[]).join(" ")}`;return[{key:"structure",label:"结构完整",passed:(a.sections||b?.sections||[]).length>=2||/###\s+/u.test(a.content)},{key:"depth",label:"内容深度",passed:(0,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?"章节覆盖完整。":"系统需补齐章节结构、证据绑定、专业控制点和跨章依赖。"}}),p=bg(i,m.score>=85?[]:[{level:"warning",message:`系统知识库覆盖确认率偏低:${m.score}%`,suggestion:`${m.remediation} 未确认事实域:${m.unconfirmedDomains.map(a=>a2[a]||a).join("、")||"无"}`}],(0,N.c$)(n,{maxIssues:20}),o.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("、")}`})),k?j.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}。`})):[]);p=p.map(a=>bV.test(a.message)&&"warning"===a.level?{...a,level:"info"}:a);let q=await be({markdown:g,chapters:c,issues:p,knowledgeCoverage:m,factTraces:n,template:l}),r=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,N.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:p,qualityReport:q,knowledgeCoverage:m,factTraces:n,chapterCoverage:o});p=bg(p,q.passed?[]:[{level:"info",message:`交付置信度未达目标:${q.deliveryProbability}% / ${q.target}%`,suggestion:q.actions.join(" ")}],r.filter(a=>"high"===a.priority).map(a=>({level:"info",message:`修复策略待执行:${a.title}`,suggestion:a.action})));let s=(0,C.Ai)(p,e,c);return{knowledgeCoverage:m,factTraces:n,chapterCoverage:o,qualityReport:q,repairStrategies:r,validationIssues:p,finalExportGate:s}}async function bX(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=bg((0,bm.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=bg(a.validationIssues,(0,k.br)(g,a.structuredFacts,{maxIssues:20}).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=bg(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 bo({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=bg(a.validationIssues,i.flat()),a.assets=[];let j=[...a.progressStages];for(let b of a.chapterGenerationStages)(0,r.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,r.fx)(a.executionStages,(0,r.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,r.fx)(a.executionStages,(0,r.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 bY(a){let b=function(a,b){let c=b?function(a){let b=new Set;for(let c of(0,E.IV)(a).entries){for(let a of("number"==typeof c.value&&b.add(String(c.value)),[String(c.value),c.spec,c.label]))if(a)for(let c of a.match(/\d+(?:\.\d+)?/gu)??[])b.add(c);for(let a of c.groups??[])b.add(String(a.value))}return b}(b):new Set,d=function(a){let b=new Map,c=c=>{let d=c.trim();!d||b.has(d)||b.set(d,K(a,d))};for(let b of(0,F.ll)(a))c(b);for(let b of a.matchAll(J))c(b[0]);return[...b.entries()].sort((a,b)=>a[1]-b[1]).map(([a])=>a)}(a),e=[],f=[],g=[],h=[],i=0,j=0;for(let b of d){if(G.some(a=>a.re.test(b))){j+=1;continue}let d=function(a){let b=a.match(/\d+(?:\.\d+)?/u);return b?b[0]:a.trim()}(b),k=K(a,b),l=(k>=0?a.slice(Math.max(0,k-16),k+b.length+16):b).replace(/\s+/gu," ").trim(),m={token:b,value:d,context:l,occurrences:function(a,b){let c=0;for(let d=K(a,b);d>=0;d=K(a,b,d+1))c+=1;return c}(a,b)};if(c.has(d)){i+=1,"unattributed"!==L(l)&&h.push(m);continue}let n=L(l);"derivation-gap"===n?e.push(m):"process-gap"===n?f.push(m):g.push(m)}return{scanned:d.length,matched:i,registered:j,derivationGaps:e,processGaps:f,unattributed:g,contextualMatches:h,unregisteredCount:g.length}}(a.finalMarkdown,a.blueprintData);a.authorityAuditReport=b,(0,r.fx)(a.executionStages,(0,r.X5)({type:"validation",roleId:"authority-audit",status:b.unregisteredCount>0?"failed":"success",message:function(a){let b=`无主数值审计:扫描数值 ${a.scanned} 个(命中权威 ${a.matched},登记豁免 ${a.registered},推导/投影缺口 ${a.derivationGaps.length},工艺库缺口 ${a.processGaps.length},未登记 ${a.unregisteredCount})`;return a.unregisteredCount>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 bZ(a){a.rebuildFinalMarkdown=()=>(0,p._D)((0,k.Ht)(bT((0,z.bR)((0,z.kT)((0,z.K7)(bK((0,k.jO)(function(a){let b=(0,k.Ht)((0,z.rs)((0,z.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:!1,promptRules:a.promptDocumentRules,bodyTableForbidden:a.bodyTableForbidden,coverForbidden:a.coverForbidden}),a.chapters,{forbidDrawingImages:!1,promptRules:a.promptDocumentRules,bodyTableForbidden:a.bodyTableForbidden,coverForbidden:a.coverForbidden}).markdown);return(0,B.u7)(b,{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,A._C)(a.bidComposition),coverForbidden:a.bidComposition?.formatRules.cover==="forbidden",bidComposition:a.bidComposition,blueprintData:a.blueprintData}),a.structuredFacts,{bodyTableForbidden:(0,A._C)(a.bidComposition)}),a.projectMaterialSummary)))),a.template))).markdown;let b=(0,o.mN)({facts:a.structuredFacts,markdown:a.finalMarkdown});b.size>0&&a.executionStages.push({type:"fact_extraction",roleId:"canonical-facts",status:"success",message:`已决策可信基础事实 ${b.size} 项`,details:[...b.values()].map(a=>`${a.label}=${a.value}(${a.source},confidence=${a.confidence})`).slice(0,12)}),a.baseValidationIssues=a.validationIssues,a.validationIssues=await bU({documentSpec:a.documentSpec,validationIssues:a.validationIssues,factsModel:a.factsModel,finalChapterDrafts:a.finalChapterDrafts,finalMarkdown:a.finalMarkdown,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,blueprintData:a.blueprintData,billFactLock:a.billFactLock,bodyTableForbidden:(0,A._C)(a.bidComposition),coverForbidden:a.bidComposition?.formatRules.cover==="forbidden"}),a.qualityBundle=await bW({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});let{knowledgeCoverage:c,factTraces:d,chapterCoverage:e,qualityReport:f,repairStrategies:g,finalExportGate:h}=a.qualityBundle;a.validationIssues=a.qualityBundle.validationIssues,bY(a),a.finalGateRepairStages=[],a.recomputeFinalValidationBundle=async()=>{let b=a.baseValidationIssues.filter(a=>!a.provenance||!bf.has(a.provenance.detectorId));a.validationIssues=await bU({documentSpec:a.documentSpec,validationIssues:b,factsModel:a.factsModel,finalChapterDrafts:a.finalChapterDrafts,finalMarkdown:a.finalMarkdown,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,blueprintData:a.blueprintData,billFactLock:a.billFactLock,bodyTableForbidden:(0,A._C)(a.bidComposition),coverForbidden:a.bidComposition?.formatRules.cover==="forbidden"}),a.qualityBundle=await bW({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}),({knowledgeCoverage:c,factTraces:d,chapterCoverage:e,qualityReport:f,repairStrategies:g,finalExportGate:h}=a.qualityBundle),a.validationIssues=a.qualityBundle.validationIssues,bY(a)}}async function b$(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}}async function b_(a){let b=(0,k.hS)(a.finalMarkdown,[...a.structuredFacts,...a.factsModel.preciseFacts],{maxItems:60});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)),h=b?a.finalChapterDrafts.find(a=>b[1].test(a.title)):void 0;if(!h){e.push(`${f.label}=${f.value}`);continue}let i=d.get(h.id)||[];if(i.length>=12){g.push(`${f.label}=${f.value}`);continue}i.push({label:f.label,value:f.value,fact:f.fact}),d.set(h.id,i)}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,r.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,r.fx)(a.progressStages,l),(0,r.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 b$({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,r.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,r.fx)(a.progressStages,p),(0,r.fx)(a.finalGateRepairStages,p),a.emitProgress(a.finalChapterDrafts,a.progressStages)}h>0&&(a.finalMarkdown=a.rebuildFinalMarkdown(),await a.recomputeFinalValidationBundle())}}var b0=c(80572);function b1(a,b){if(!b)return"";let c=a.split(/\r?\n/u);for(let a=0;a<c.length;a+=1){if(!/^\s*\|/u.test(c[a])||!c[a].includes(b))continue;let d=a;for(;d>0&&/^\s*\|/u.test(c[d-1]);)d-=1;let e=a;for(;e+1<c.length&&/^\s*\|/u.test(c[e+1]);)e+=1;return c.slice(d,e+1).join("\n")}return""}function b2(a){let b=a.map(a=>a.trim().replace(/^\|/u,"").replace(/\|$/u,"").split(/(?<!\\)\|/u).map(a=>(0,bt.jG)(a.trim())));if(b.length<2)return{lines:a,removed:0};let c=b.length>1&&b[1].length>0&&b[1].every(a=>/^:?-{2,}:?$/u.test(a))?1:0,d=()=>Math.max(...b.map(a=>a.length)),e=0,f=!1,g=b[0],h=b.slice(c+1);if(h.length>0&&/表$/u.test(g[0]||"")&&h.every(a=>a.length>0&&""===a[a.length-1])&&h.some(a=>""!==a[0])){b[0]=g.slice(1);for(let a=c+1;a<b.length;a+=1)b[a]=b[a].slice(0,b[a].length-1);f=!0,e+=1}if(b.length>c+1){let a=[];for(let e=0;e<d();e+=1)b.slice(c+1).every(a=>""===(a[e]||""))&&a.push(e);if(a.length>0){for(let c of b)for(let b=a.length-1;b>=0;b-=1)c.splice(a[b],1);f=!0,e+=1}}for(let a=c+1;a<b.length;a+=1){let c=b[a];for(let a=0;a<c.length;a+=1)/^约\d/u.test(c[a]||"")&&(c[a]=(c[a]||"").replace(/^约/u,""),f=!0)}return(b.length<=c+1&&(b.splice(0,b.length),f=!0,e+=1),f)?{lines:b.map((a,b)=>b===c?`| ${a.map(()=>"---").join(" | ")} |`:`| ${a.join(" | ")} |`),removed:e}:{lines:a,removed:0}}async function b3(a,b){let c=[],d=[],e=[],f=await ak(a);if(!f.degraded)for(let g of f.groups){let f=an(g,{markdown:a,billFactLock:b.billFactLock});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,p.mB)(a,b.specAuthorityMap))d.replacement&&c.push({...d.replacement,location:d.location});if(0===c.length)return{replacements:[],falsePositiveGroups:d,noAnchorGroups:e,details:[]};let g=(0,p.gk)(a,c).markdown,h=new Set,i=await ak(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,p.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(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:k}}var b4=c(71001);let b5={type:"object",required:["conflicts"],properties:{conflicts:{type:"array",required:!0,maxItems:8,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 b6(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,bn.bb)([(0,z.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:b5,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 b7=c(43378),b8=c(22213),b9=c(3063);let ca=/两可|按图纸|资料[^。;;\n]{0,14}(?:未明确|两可|冲突)|支护[^。;;\n]{0,10}并存/u;async function cb(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,p.lR)(a.content),d=(0,p.QM)(c.markdown),e=(0,p.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,p.ub)(a),...(0,p.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,r.fx)(c,(0,r.X5)({type:"llm_review",roleId:"post-table-dedup",status:"success",message:`补表后确定性去重:${i}`},{subtitle:"表格执行率核验"})),d(b)}return e}async function cc(a){let{chapterDraftsFinal:b,template:c,repairPromptTexts:d,requirement:e,signal:g,generationDiagnostics:h,progressStages:i,emitProgress:j,withProgressHeartbeat:k,bidComposition:l}=a,m=b.map(a=>({chapter:a,tableCount:(0,z.ao)(a.content),blocks:(0,z.wV)(a.content)})).filter(a=>a.tableCount>0);if(0===m.length)return{tableFixApplied:!1};(0,r.fx)(i,(0,r.X5)({type:"llm_review",roleId:"table-execution-repair",status:"running",message:`暗标拆表修复:${m.length} 个章节正文残留表格(招标暗标要求正文纯文字)`},{subtitle:"暗标拆表修复"})),j(b);let n=0,o=[],p=async a=>{let{chapter:b,tableCount:i,blocks:j}=a;return b$({originalContent:b.content,repairRound:"table-execution-repair",diagnostics:h,beforeMetrics:[i],apply:async()=>{let a=await k(()=>(0,f.X6)(h,`body-table-dismantle:${b.id}`,()=>(0,f.l8)({template:c,chapter:{id:b.id,title:b.title,content:b.content,evidence:b.evidence||[],missingFacts:b.missingFacts||[],sections:b.sections},issues:[(0,A.bh)(b.title,i)],promptTexts:d,requirement:e,forbidDrawingImages:!0,bidComposition:l,diagnostics:h,signal:g,patchGuard:(0,f.XG)("table-execution-repair",h),anchorTexts:j.length>0?j:void 0,maxTokens:Math.min(12e3,Math.max(6e3,1600*j.length))})));return a.content&&a.content!==b.content?a.content:b.content},recheck:a=>[(0,z.ao)(a)]})};(await Promise.allSettled(m.map(a=>p(a)))).forEach((a,b)=>{if("rejected"===a.status){if(g?.aborted)throw a.reason;o.push(`${m[b].chapter.title}:拆表修复异常(${a.reason instanceof Error?a.reason.message:"未知错误"})`);return}let c=a.value,{chapter:d}=m[b];if(c.rolledBack)return void o.push(`${d.title}:拆表后表格数不降反升,已回滚本轮修改`);c.content&&c.content!==d.content?(d.content=c.content,n+=1):o.push(`${d.title}:拆表 patch 未应用(${h?.llm.lastError||"无产出"})`)});let q=b.reduce((a,b)=>a+(0,z.ao)(b.content),0);return(0,r.fx)(i,(0,r.X5)({type:"llm_review",roleId:"table-execution-repair",status:q>0?"failed":"success",message:q>0?`暗标拆表修复:${n} 章已改写,正文仍有 ${q} 处表格残留(终检反向门禁拦截)`:`暗标拆表修复:${n} 章已改写,正文表格清零`,details:o},{subtitle:"暗标拆表修复"})),j(b),{tableFixApplied:n>0}}async function cd(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,A._C)(a.bidComposition))return cc(a);let m=(0,b7.Xi)(b,c),n=!1;if(m.length>0)for(let a=0;a<1&&m.length>0;a+=1){(0,r.fx)(j,(0,r.X5)({type:"llm_review",roleId:"table-execution-repair",status:"running",message:`表格执行率修复第 ${a+1} 轮(${m.length} 个章节缺表)`},{subtitle:"表格执行率修复"})),k(c);let o=0,p=[],q=m.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 b$({originalContent:k.content,repairRound:"table-execution-repair",diagnostics:i,beforeMetrics:[Math.max(0,j.planned-j.actual)],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,b7.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+Math.max(0,b.planned-b.actual),0)]}})},t=await Promise.allSettled(q.map(a=>s(a))),u=new Set;if(t.forEach((a,b)=>{if("rejected"===a.status){if(h?.aborted)throw a.reason;p.push(`${q[b].gap.chapterTitle}:修复异常(${a.reason instanceof Error?a.reason.message:"未知错误"})`);return}let c=a.value,{gap:d,draft:e}=q[b];if(c.rolledBack)return void p.push(`${d.chapterTitle}:修复后计划表格缺口增多,已回滚本轮修改`);c.content&&c.content!==e.content&&!u.has(e.id)?(e.content=c.content,u.add(e.id),o+=1):u.has(e.id)||p.push(`${d.chapterTitle}:缺 ${d.plans.map(a=>a.title).join("、")}(${i?.llm.lastError||"补表 patch 未应用"})`)}),0===o){(0,r.fx)(j,(0,r.X5)({type:"llm_review",roleId:"table-execution-repair",status:"failed",message:`表格执行率修复第 ${a+1} 轮:补表 patch 未应用(${m.length} 个章节缺表)`,details:p},{subtitle:"表格执行率修复"})),k(c);break}n=!0,k(c),m=(0,b7.Xi)(b,c),(0,r.fx)(j,(0,r.X5)({type:"llm_review",roleId:"table-execution-repair",status:m.length>0?"failed":"success",message:m.length>0?`表格执行率修复第 ${a+1} 轮完成,仍有 ${m.length} 个章节缺表`:`表格执行率修复第 ${a+1} 轮完成`},{subtitle:"表格执行率修复"})),(0,r.fx)(j,(0,r.X5)({type:"llm_review",roleId:"table-execution-review",status:m.length>0?"failed":"success",message:m.length>0?`表格执行率复检:仍有 ${m.length} 个章节缺表`:"表格执行率复检通过"},{subtitle:"表格执行率核验"}))}return{tableFixApplied:n}}function ce(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 cf(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,a3.Bt)(n),p=await (0,a3.gE)(n),q=o.fillerSentences>0,s=p.countermeasures>0&&p.ratio<.5,t=(0,aL.P_)(n),u=(0,aL.C4)(n),v=(0,aL.uj)(n),w=t.length>0,x=u.length>0,y=v.length>0;if(!q&&!s&&!w&&!x&&!y)break;let z=q?await bF(b):[],A=q?function(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);if(!g||"semantic"!==f.channel||!(0,a3.W0)(f.sentence)){d.push(f);continue}let h=g.content.split("\n"),i=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,a3.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}(h,f.sentence);i>0?(g.content=h.join("\n").replace(/\n{3,}/gu,"\n\n"),e+=i,c.includes(f.sentence)||c.push(f.sentence)):d.push(f)}return{deletedCount:e,deletedSentences:c,remaining:d}}(b,z):{deletedCount:0,deletedSentences:[],remaining:z};A.deletedCount>0&&console.error(`[gen][templating] 零信息口号句确定性删除 ${A.deletedCount} 处:${A.deletedSentences.slice(0,3).join(" / ")}${A.deletedSentences.length>3?" 等":""}`);let B=b.map(a=>a.content).join("\n\n"),C=new Map(b.map(a=>[a.id,a.content])),D=(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}]:[]}),E=b.flatMap(a=>{let b=A.remaining.filter(b=>(b.chapterId||b.chapterTitle)===(a.id||a.title)).map(a=>a.sentence),c=D.filter(b=>b.chapter.id===a.id).map(a=>({text:a.text,missingAttribution:a.missingAttribution,missingTarget:a.missingTarget})),d=t.filter(b=>ce(a,b.chapterTitle)),e=u.filter(b=>ce(a,b.chapterTitle)),f=v.filter(b=>ce(a,b.chapterTitle));return b.length>0||c.length>0||d.length>0||e.length>0||f.length>0?[{chapter:a,sentences:b,difficulty:c,frames:d,flows:e,titles:f}]:[]});if(0===E.length){A.deletedCount>0&&(m=!0,(0,r.fx)(i,(0,r.X5)({type:"llm_review",roleId:"templating-repair",status:"success",message:`模板化修复第 ${a+1} 轮:确定性删除零信息口号句 ${A.deletedCount} 处(无剩余重写目标)`},{subtitle:"模板化修复"})),j(b));break}let F=[q?`套话句占比 ${(100*o.ratio).toFixed(1)}%${A.deletedCount>0?`(已确定性删除零信息口号 ${A.deletedCount} 处)`:""}`:"",s?`重难点双达标 ${(100*p.ratio).toFixed(0)}%`:"",w?`骨架指纹 ${t.length} 组`:"",x?`工序形式 ${u.length} 处`:"",y?`标题缺陷 ${v.length} 处`:""].filter(Boolean).join("、");(0,r.fx)(i,(0,r.X5)({type:"llm_review",roleId:"templating-repair",status:"running",message:`模板化修复第 ${a+1} 轮:${F}(${E.length} 章)`},{subtitle:"模板化修复"})),j(b);let G=0,H=async a=>{let b=[];a.sentences.length>0&&b.push(`第 1~${a.sentences.length} 条目标原文是本章已检出的空话套话句(零信息纯口号句已由系统确定性删除,此处为含信息或合规承诺类命中句):逐条原地改写为“责任岗位 + 执行动作 + 量化标准 + 检查频次 + 整改时限”式可核查措施,且每条改写句必须嵌入不少于 2 个项目实体(村名/工程量/规格,取自本章证据摘要);禁止以同义空话替换、禁止改写清单外内容、不得凭空编造数值;属必须保留的合规承诺句须具体化到可核查。`);let i=a.sentences.length+1;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} 处,验收上限 2 处):逐句改写为差异化句式,保留原句全部事实信息(岗位、数值、频次不得丢失)。`)}for(let c of a.flows)b.push(`第 ${i} 条目标原文是小节标题,其所在小节「${c.blockTitle}」的工序顺序表达当前为【${c.currentForm}】形式且与相邻小节同形式:将该小节的工序顺序表达改写为【${c.targetForm}】形式,内容与数值保持不变(工艺参数不得删减)。`),i+=1;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.difficulty.map(a=>a.text),...a.frames.flatMap(a=>a.sentences),...a.flows.map(a=>a.blockTitle),...a.titles.map(a=>a.title)],maxTokens:6e3,evidenceChars:5e3})))},I=await b$({originalContent:B,repairRound:"templating-repair",diagnostics:h,beforeMetrics:[o.ratio,p.ratio,t.length,u.length,v.length],apply:async()=>((await Promise.allSettled(E.map(a=>H(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}=E[b];c.content&&c.content!==d.content&&(d.content=c.content,G+=1)}),j(b),b.map(a=>a.content).join("\n\n")),recheck:async a=>{let b=await (0,a3.Bt)(a),c=await (0,a3.gE)(a);return[b.ratio,c.ratio,(0,aL.P_)(a).length,(0,aL.C4)(a).length,(0,aL.uj)(a).length]},shouldRollback:(a,b)=>b[0]>a[0]+.01&&!(b[1]>a[1]+.01)||b[2]+b[3]+b[4]>a[2]+a[3]+a[4]});if(0===G&&0===A.deletedCount){(0,r.fx)(i,(0,r.X5)({type:"llm_review",roleId:"templating-repair",status:"failed",message:`模板化修复第 ${a+1} 轮:修复 patch 未落地(${E.length} 章锚点失配或 LLM 未产出)`,details:[`未收敛维度:${F}`]},{subtitle:"模板化修复"}));break}if(I.rolledBack){for(let a of b){let b=C.get(a.id);void 0!==b&&(a.content=b)}(0,r.fx)(i,(0,r.X5)({type:"llm_review",roleId:"templating-repair",status:"failed",message:`模板化修复第 ${a+1} 轮:修复后指标变差已回滚本轮修改(套话 ${(100*I.beforeMetrics[0]).toFixed(1)}%→${(100*I.afterMetrics[0]).toFixed(1)}%,治理缺陷目标 ${I.beforeMetrics[2]+I.beforeMetrics[3]+I.beforeMetrics[4]}→${I.afterMetrics[2]+I.afterMetrics[3]+I.afterMetrics[4]})`,details:["LLM 重写未收敛,回滚保留修复前正文"]},{subtitle:"模板化修复"})),j(b);break}m=!0}if(m){let a=b.map(a=>a.content).join("\n\n"),c=await (0,a3.Bt)(a),d=await (0,a3.gE)(a),e=(0,aL.P_)(a),f=(0,aL.C4)(a),g=(0,aL.uj)(a),h=c.ratio<.1&&(!d.heavyTemplated||0===d.countermeasures)&&0===e.length&&0===f.length&&0===g.length,k=[e.length>0?`骨架指纹 ${[...new Set(e.map(a=>`${a.fingerprintLabel}\xd7${a.totalCount}`))].join("、")}`:"",f.length>0?`工序形式相邻重复 ${f.length} 处`:"",g.length>0?`标题缺陷 ${g.length} 处`:""].filter(Boolean).join(";");(0,r.fx)(i,(0,r.X5)({type:"llm_review",roleId:"templating-repair",status:h?"success":"failed",message:`模板化修复完成:套话句占比 ${(100*c.ratio).toFixed(1)}%(达标线 ≤10%),重难点归因+量化双达标 ${(100*d.ratio).toFixed(0)}%(达标线 ≥50%)${k?`,模板化残留:${k}`:""}`,details:h?[]:["未完全收敛:残留项先由确定性修复链(终检前)收敛;复核未清零的残留经终检检测器判定,仍不达标即阻断交付(宁缺毋假)"]},{subtitle:"模板化修复"})),j(b)}return{templatingFixApplied:m}}async function cg(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,q=0,s=(0,b8.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,"")}
34
+ ${bO}`}async function bU(a){let{documentSpec:b,validationIssues:c,factsModel:d,finalChapterDrafts:f,finalMarkdown:g,template:i,promptBindings:j,promptDocumentRules:m,projectMaterialSummary:n,domainProfile:o,structuredFacts:p,documentBudget:q,scopeConflicts:r,evaluationCriteriaItems:s,effectiveChapters:u,tenderRequirements:A,requirementsSimilarity:B,factTokenScopeClassifier:E,professionalDepthClassifier:F,blueprintData:G,billFactLock:H,bodyTableForbidden:I,coverForbidden:J}=a;return bg((0,l.yT)("spec-gate-rules",()=>(0,C.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||t(d))&&/\d|GB|JGJ|C\d|HRB|DN|mm|MPa|kPa|工期|质量|安全|项目名称|工程名称|招标人|建设地点|建筑面积|结构形式|层数/u.test(d)&&!v(c,e.name)&&b.push({level:"info",message:`正文可能未显式覆盖“${e.name}”`,suggestion:"建议检查对应章节是否已自然表达该事实。"})}let e=a.summary.facts.projectName;!e||"当前知识库项目"===e||t(e)||v(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:"如文档需要编号,请在概况、背景或首页信息中补充。"}),["知识库证据","资料类型","提示词角色","文档规范包","规范包","后台自动规范","后台优化建议","基础事实候选","材料未提供","未检索到"]))c.includes(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||w.p4,c=[],d=new Map;for(let c of a.facts){let a=c.fieldName||c.key;a&&function(a,b){let c=(0,w.oC)(b,a);return c?"single"===c.cardinality&&"allow_multiple"!==c.conflictPolicy&&"ignore"!==c.conflictPolicy:/项目名称|工程名称|招标人|建设地点|建筑面积|结构形式|层数|工期|质量标准|合同价格形式|绿色建筑等级|投标有效期|质保期/u.test(a)}(a,b)&&y(String(c.value),b)&&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=y(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=x(a.markdown),d=[e,...a.summary.fingerprint.projectNames].flatMap(a=>[a,a.replace(/^\d+(?:\.\d+)?[^\u4e00-\u9fa5]*/u,""),a.replace(/\([^)]*\)|([^)]*)/gu,"")]).map(a=>x(a)).filter(a=>a.length>=4),f=d.filter(a=>a.length>=8),g=d.filter(a=>a.length<8),h=f.some(a=>b.includes(a)||a.length>=12&&b.includes(a.slice(0,Math.max(8,Math.floor(.72*a.length))))),i=g.some(a=>b.includes(a));(f.length>0?h:!(g.length>0)||i)||c.push({level:"warning",message:`正文未包含当前对象名称:${e}`,suggestion:"请确认标题、概况或背景信息是否已体现当前对象名称。"})}return c})({markdown:g,facts:p,summary:n,profile:o})),(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-basic-placeholder",()=>(0,k.h)(g,p)),await (0,l.ll)("standard-final",()=>a1({markdown:g,chapters:f,factsModel:d,template:i,promptBindings:j,promptDocumentRules:m,scopeConflicts:r,evaluationCriteriaItems:s,effectiveChapters:u,tenderRequirements:A,requirementsSimilarity:B,factTokenScopeClassifier:E,professionalDepthClassifier:F,blueprintData:G,billFactLock:H,bodyTableForbidden:I,coverForbidden:J})),(0,l.yT)("fact-coverage",()=>(0,k.br)(g,[...p,...d.preciseFacts],{maxIssues:30}).map(a=>({...a,level:"warning",severity:"warning",suggestion:"建议后续优化事实自然落位;导出阶段不因未落位的引用型或可优化事实阻断。"}))),(0,l.yT)("page-target",()=>(0,h.PE)(i.generationSettings||i.exportSettings,g).filter(a=>!(q.minPages&&/低于目标页数/u.test(a.message)))),(0,l.yT)("document-budget",()=>(0,h.ty)(q,g)),(0,l.yT)("planned-structure",()=>(0,z.UG)(g,i,I)),(0,l.yT)("formal-text-gate",()=>(0,bl.IA)(g)),await (0,l.ll)("internal-terminology-anchor",()=>(0,D.WT)(g)),(0,l.yT)("heading-uncovered-engineering-items",()=>(0,C.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=[{title:"项目特点、重点、难点分析",minChars:1800},{title:"项目主要施工内容",minChars:2200},{title:"主要分部分项工程施工方案",minChars:1200,blockerMinChars:800},{title:"主要施工方法",minChars:2200},{title:"危大工程专项施工方案审批流程",minChars:500,blockerMinChars:250},{title:"原材料进场复试与见证取样",minChars:600,blockerMinChars:300}],c=[];for(let d of a)for(let a of b){let b=(0,e.Xl)(d.content,a.title)||(0,e.Xl)(d.content,a.title,{fuzzy:!0}),f=(0,h.V7)(b);if(!b||f>=a.minChars)continue;let g=(0,k.R_)(a.title);f>=g?c.push({level:"warning",severity:"warning",message:`${d.title} ${a.title} 正文深度接近目标:当前 ${f} 字,目标 ${a.minChars} 字`,suggestion:"已达到可交付深度,建议后续按项目数据继续优化扩写。"}):c.push({level:"error",severity:"blocker",message:`${d.title} ${a.title} 正文不足:当前 ${f} 字,要求不少于 ${g} 字`,suggestion:"关键小节必须补足项目数据、重点难点与施工内容对应关系后方可导出。"})}return c})(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,bJ.Cd)(a.content);return b.gap?[{level:"warning",severity:"warning",message:`${a.title} 量化参数密度偏低:当前 ${b.params} 个(约 ${b.per1000}/千字,建议 ≥${bJ.J5}/千字、约 ${b.required} 个),小节事实或量化参数落位可继续优化`,suggestion:"优先将本章绑定资料中的工程规模、工期、部位做法、材料规格等参数自然写入对应工序;不得从行业惯例或相邻章节借参数凑数。"}]:[]})),await (0,l.ll)("construction-org-professional-audit",async()=>(await bI(f,g)).map(a=>"error"===a.level?{...a,severity:"blocker"}:a))).map(a=>"error"===a.level?{...a,severity:a.severity||"blocker"}:a)}let bV=/章节级证据覆盖较弱|章节事实覆盖不足|小节事实或量化参数落位可继续优化/u;async function bW(a){var b;let{finalChapterDrafts:c,effectiveChapters:d,factsModel:e,allEvidence:f,finalMarkdown:g,validationIssues:i,retrievalCoverageReports:j,includeRetrievalCoverage:k,template:l}=a,m=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(a2[c]||c,"u").test(`${a.sectionTitle||""} ${a.content||""}`))}),e=c.filter(a=>!d.includes(a)),f=c.length?Math.round(d.length/c.length*100):100;return{chapterId:b.id,title:b.title,requiredDomains:c,confirmedDomains:d,unconfirmedDomains:e,score:f}}),c=new Set(a.evidence.map(a=>a.filePath).filter(Boolean)),d=b.length?Math.round(b.reduce((a,b)=>a+b.score,0)/b.length):100;return{score:d,evidenceCount:a.evidence.length,confirmedFiles:c.size,chapterReports:b,unconfirmedDomains:[...new Set(b.flatMap(a=>a.unconfirmedDomains))],remediation:d>=95?"知识库事实覆盖已达到高置信交付要求。":"系统需扩大本地知识库检索、补抽结构化事实,并将已确认事实落位到对应章节。"}}({chapters:c,templateChapters:d,factsModel:e,evidence:f}),n=(0,N.e$)(g,e),o=(b={chapters:c,templateChapters:d,factsModel:e}).chapters.map(a=>{let c=b.templateChapters.find(b=>b.id===a.id||b.title===a.title),d=function(a,b){let c=`${a.title} ${(b?.sections||a.sections||[]).join(" ")}`;return[{key:"structure",label:"结构完整",passed:(a.sections||b?.sections||[]).length>=2||/###\s+/u.test(a.content)},{key:"depth",label:"内容深度",passed:(0,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?"章节覆盖完整。":"系统需补齐章节结构、证据绑定、专业控制点和跨章依赖。"}}),p=bg(i,m.score>=85?[]:[{level:"warning",message:`系统知识库覆盖确认率偏低:${m.score}%`,suggestion:`${m.remediation} 未确认事实域:${m.unconfirmedDomains.map(a=>a2[a]||a).join("、")||"无"}`}],(0,N.c$)(n,{maxIssues:20}),o.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("、")}`})),k?j.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}。`})):[]);p=p.map(a=>bV.test(a.message)&&"warning"===a.level?{...a,level:"info"}:a);let q=await be({markdown:g,chapters:c,issues:p,knowledgeCoverage:m,factTraces:n,template:l}),r=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,N.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:p,qualityReport:q,knowledgeCoverage:m,factTraces:n,chapterCoverage:o});p=bg(p,q.passed?[]:[{level:"info",message:`交付置信度未达目标:${q.deliveryProbability}% / ${q.target}%`,suggestion:q.actions.join(" ")}],r.filter(a=>"high"===a.priority).map(a=>({level:"info",message:`修复策略待执行:${a.title}`,suggestion:a.action})));let s=(0,C.Ai)(p,e,c);return{knowledgeCoverage:m,factTraces:n,chapterCoverage:o,qualityReport:q,repairStrategies:r,validationIssues:p,finalExportGate:s}}async function bX(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=bg((0,bm.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=bg(a.validationIssues,(0,k.br)(g,a.structuredFacts,{maxIssues:20}).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=bg(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 bo({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=bg(a.validationIssues,i.flat()),a.assets=[];let j=[...a.progressStages];for(let b of a.chapterGenerationStages)(0,r.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,r.fx)(a.executionStages,(0,r.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,r.fx)(a.executionStages,(0,r.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 bY(a){let b=function(a,b){let c=b?function(a){let b=new Set;for(let c of(0,E.IV)(a).entries){for(let a of("number"==typeof c.value&&b.add(String(c.value)),[String(c.value),c.spec,c.label]))if(a)for(let c of a.match(/\d+(?:\.\d+)?/gu)??[])b.add(c);for(let a of c.groups??[])b.add(String(a.value))}return b}(b):new Set,d=function(a){let b=new Map,c=c=>{let d=c.trim();!d||b.has(d)||b.set(d,K(a,d))};for(let b of(0,F.ll)(a))c(b);for(let b of a.matchAll(J))c(b[0]);return[...b.entries()].sort((a,b)=>a[1]-b[1]).map(([a])=>a)}(a),e=[],f=[],g=[],h=[],i=0,j=0;for(let b of d){if(G.some(a=>a.re.test(b))){j+=1;continue}let d=function(a){let b=a.match(/\d+(?:\.\d+)?/u);return b?b[0]:a.trim()}(b),k=K(a,b),l=(k>=0?a.slice(Math.max(0,k-16),k+b.length+16):b).replace(/\s+/gu," ").trim(),m={token:b,value:d,context:l,occurrences:function(a,b){let c=0;for(let d=K(a,b);d>=0;d=K(a,b,d+1))c+=1;return c}(a,b)};if(c.has(d)){i+=1,"unattributed"!==L(l)&&h.push(m);continue}let n=L(l);"derivation-gap"===n?e.push(m):"process-gap"===n?f.push(m):g.push(m)}return{scanned:d.length,matched:i,registered:j,derivationGaps:e,processGaps:f,unattributed:g,contextualMatches:h,unregisteredCount:g.length}}(a.finalMarkdown,a.blueprintData);a.authorityAuditReport=b,(0,r.fx)(a.executionStages,(0,r.X5)({type:"validation",roleId:"authority-audit",status:b.unregisteredCount>0?"failed":"success",message:function(a){let b=`无主数值审计:扫描数值 ${a.scanned} 个(命中权威 ${a.matched},登记豁免 ${a.registered},推导/投影缺口 ${a.derivationGaps.length},工艺库缺口 ${a.processGaps.length},未登记 ${a.unregisteredCount})`;return a.unregisteredCount>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 bZ(a){a.rebuildFinalMarkdown=()=>(0,p._D)((0,k.Ht)(bT((0,z.bR)((0,z.kT)((0,z.K7)(bK((0,k.jO)(function(a){let b=(0,k.Ht)((0,z.rs)((0,z.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:!1,promptRules:a.promptDocumentRules,bodyTableForbidden:a.bodyTableForbidden,coverForbidden:a.coverForbidden}),a.chapters,{forbidDrawingImages:!1,promptRules:a.promptDocumentRules,bodyTableForbidden:a.bodyTableForbidden,coverForbidden:a.coverForbidden}).markdown);return(0,B.u7)(b,{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,A._C)(a.bidComposition),coverForbidden:a.bidComposition?.formatRules.cover==="forbidden",bidComposition:a.bidComposition,blueprintData:a.blueprintData}),a.structuredFacts,{bodyTableForbidden:(0,A._C)(a.bidComposition)}),a.projectMaterialSummary)))),a.template))).markdown;let b=(0,o.mN)({facts:a.structuredFacts,markdown:a.finalMarkdown});b.size>0&&a.executionStages.push({type:"fact_extraction",roleId:"canonical-facts",status:"success",message:`已决策可信基础事实 ${b.size} 项`,details:[...b.values()].map(a=>`${a.label}=${a.value}(${a.source},confidence=${a.confidence})`).slice(0,12)}),a.baseValidationIssues=a.validationIssues,a.validationIssues=await bU({documentSpec:a.documentSpec,validationIssues:a.validationIssues,factsModel:a.factsModel,finalChapterDrafts:a.finalChapterDrafts,finalMarkdown:a.finalMarkdown,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,blueprintData:a.blueprintData,billFactLock:a.billFactLock,bodyTableForbidden:(0,A._C)(a.bidComposition),coverForbidden:a.bidComposition?.formatRules.cover==="forbidden"}),a.qualityBundle=await bW({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}),a.validationIssues=a.qualityBundle.validationIssues,bY(a),a.finalGateRepairStages=[],a.recomputeFinalValidationBundle=async()=>{let b=a.baseValidationIssues.filter(a=>!a.provenance||!bf.has(a.provenance.detectorId));a.validationIssues=await bU({documentSpec:a.documentSpec,validationIssues:b,factsModel:a.factsModel,finalChapterDrafts:a.finalChapterDrafts,finalMarkdown:a.finalMarkdown,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,blueprintData:a.blueprintData,billFactLock:a.billFactLock,bodyTableForbidden:(0,A._C)(a.bidComposition),coverForbidden:a.bidComposition?.formatRules.cover==="forbidden"}),a.qualityBundle=await bW({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}),a.validationIssues=a.qualityBundle.validationIssues,bY(a)}}async function b$(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}}async function b_(a){let b=(0,k.hS)(a.finalMarkdown,[...a.structuredFacts,...a.factsModel.preciseFacts],{maxItems:60});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)),h=b?a.finalChapterDrafts.find(a=>b[1].test(a.title)):void 0;if(!h){e.push(`${f.label}=${f.value}`);continue}let i=d.get(h.id)||[];if(i.length>=12){g.push(`${f.label}=${f.value}`);continue}i.push({label:f.label,value:f.value,fact:f.fact}),d.set(h.id,i)}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,r.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,r.fx)(a.progressStages,l),(0,r.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 b$({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,r.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,r.fx)(a.progressStages,p),(0,r.fx)(a.finalGateRepairStages,p),a.emitProgress(a.finalChapterDrafts,a.progressStages)}h>0&&(a.finalMarkdown=a.rebuildFinalMarkdown(),await a.recomputeFinalValidationBundle())}}var b0=c(80572);function b1(a,b){if(!b)return"";let c=a.split(/\r?\n/u);for(let a=0;a<c.length;a+=1){if(!/^\s*\|/u.test(c[a])||!c[a].includes(b))continue;let d=a;for(;d>0&&/^\s*\|/u.test(c[d-1]);)d-=1;let e=a;for(;e+1<c.length&&/^\s*\|/u.test(c[e+1]);)e+=1;return c.slice(d,e+1).join("\n")}return""}function b2(a){let b=a.map(a=>a.trim().replace(/^\|/u,"").replace(/\|$/u,"").split(/(?<!\\)\|/u).map(a=>(0,bt.jG)(a.trim())));if(b.length<2)return{lines:a,removed:0};let c=b.length>1&&b[1].length>0&&b[1].every(a=>/^:?-{2,}:?$/u.test(a))?1:0,d=()=>Math.max(...b.map(a=>a.length)),e=0,f=!1,g=b[0],h=b.slice(c+1);if(h.length>0&&/表$/u.test(g[0]||"")&&h.every(a=>a.length>0&&""===a[a.length-1])&&h.some(a=>""!==a[0])){b[0]=g.slice(1);for(let a=c+1;a<b.length;a+=1)b[a]=b[a].slice(0,b[a].length-1);f=!0,e+=1}if(b.length>c+1){let a=[];for(let e=0;e<d();e+=1)b.slice(c+1).every(a=>""===(a[e]||""))&&a.push(e);if(a.length>0){for(let c of b)for(let b=a.length-1;b>=0;b-=1)c.splice(a[b],1);f=!0,e+=1}}for(let a=c+1;a<b.length;a+=1){let c=b[a];for(let a=0;a<c.length;a+=1)/^约\d/u.test(c[a]||"")&&(c[a]=(c[a]||"").replace(/^约/u,""),f=!0)}return(b.length<=c+1&&(b.splice(0,b.length),f=!0,e+=1),f)?{lines:b.map((a,b)=>b===c?`| ${a.map(()=>"---").join(" | ")} |`:`| ${a.join(" | ")} |`),removed:e}:{lines:a,removed:0}}async function b3(a,b){let c=[],d=[],e=[],f=await ak(a);if(!f.degraded)for(let g of f.groups){let f=an(g,{markdown:a,billFactLock:b.billFactLock});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,p.mB)(a,b.specAuthorityMap))d.replacement&&c.push({...d.replacement,location:d.location});if(0===c.length)return{replacements:[],falsePositiveGroups:d,noAnchorGroups:e,details:[]};let g=(0,p.gk)(a,c).markdown,h=new Set,i=await ak(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,p.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(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:k}}var b4=c(71001);let b5={type:"object",required:["conflicts"],properties:{conflicts:{type:"array",required:!0,maxItems:8,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 b6(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,bn.bb)([(0,z.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:b5,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 b7=c(43378),b8=c(22213),b9=c(3063);let ca=/两可|按图纸|资料[^。;;\n]{0,14}(?:未明确|两可|冲突)|支护[^。;;\n]{0,10}并存/u;async function cb(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,p.lR)(a.content),d=(0,p.QM)(c.markdown),e=(0,p.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,p.ub)(a),...(0,p.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,r.fx)(c,(0,r.X5)({type:"llm_review",roleId:"post-table-dedup",status:"success",message:`补表后确定性去重:${i}`},{subtitle:"表格执行率核验"})),d(b)}return e}async function cc(a){let{chapterDraftsFinal:b,template:c,repairPromptTexts:d,requirement:e,signal:g,generationDiagnostics:h,progressStages:i,emitProgress:j,withProgressHeartbeat:k,bidComposition:l}=a,m=b.map(a=>({chapter:a,tableCount:(0,z.ao)(a.content),blocks:(0,z.wV)(a.content)})).filter(a=>a.tableCount>0);if(0===m.length)return{tableFixApplied:!1};(0,r.fx)(i,(0,r.X5)({type:"llm_review",roleId:"table-execution-repair",status:"running",message:`暗标拆表修复:${m.length} 个章节正文残留表格(招标暗标要求正文纯文字)`},{subtitle:"暗标拆表修复"})),j(b);let n=0,o=[],p=async a=>{let{chapter:b,tableCount:i,blocks:j}=a;return b$({originalContent:b.content,repairRound:"table-execution-repair",diagnostics:h,beforeMetrics:[i],apply:async()=>{let a=await k(()=>(0,f.X6)(h,`body-table-dismantle:${b.id}`,()=>(0,f.l8)({template:c,chapter:{id:b.id,title:b.title,content:b.content,evidence:b.evidence||[],missingFacts:b.missingFacts||[],sections:b.sections},issues:[(0,A.bh)(i)],promptTexts:d,requirement:e,forbidDrawingImages:!0,bidComposition:l,diagnostics:h,signal:g,patchGuard:(0,f.XG)("table-execution-repair",h),anchorTexts:j.length>0?j:void 0,maxTokens:Math.min(12e3,Math.max(6e3,1600*j.length))})));return a.content&&a.content!==b.content?a.content:b.content},recheck:a=>[(0,z.ao)(a)]})};(await Promise.allSettled(m.map(a=>p(a)))).forEach((a,b)=>{if("rejected"===a.status){if(g?.aborted)throw a.reason;o.push(`${m[b].chapter.title}:拆表修复异常(${a.reason instanceof Error?a.reason.message:"未知错误"})`);return}let c=a.value,{chapter:d}=m[b];if(c.rolledBack)return void o.push(`${d.title}:拆表后表格数不降反升,已回滚本轮修改`);c.content&&c.content!==d.content?(d.content=c.content,n+=1):o.push(`${d.title}:拆表 patch 未应用(${h?.llm.lastError||"无产出"})`)});let q=b.reduce((a,b)=>a+(0,z.ao)(b.content),0);return(0,r.fx)(i,(0,r.X5)({type:"llm_review",roleId:"table-execution-repair",status:q>0?"failed":"success",message:q>0?`暗标拆表修复:${n} 章已改写,正文仍有 ${q} 处表格残留(终检反向门禁拦截)`:`暗标拆表修复:${n} 章已改写,正文表格清零`,details:o},{subtitle:"暗标拆表修复"})),j(b),{tableFixApplied:n>0}}async function cd(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,A._C)(a.bidComposition))return cc(a);let m=(0,b7.Xi)(b,c),n=!1;if(m.length>0)for(let a=0;a<1&&m.length>0;a+=1){(0,r.fx)(j,(0,r.X5)({type:"llm_review",roleId:"table-execution-repair",status:"running",message:`表格执行率修复第 ${a+1} 轮(${m.length} 个章节缺表)`},{subtitle:"表格执行率修复"})),k(c);let o=0,p=[],q=m.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 b$({originalContent:k.content,repairRound:"table-execution-repair",diagnostics:i,beforeMetrics:[Math.max(0,j.planned-j.actual)],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,b7.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+Math.max(0,b.planned-b.actual),0)]}})},t=await Promise.allSettled(q.map(a=>s(a))),u=new Set;if(t.forEach((a,b)=>{if("rejected"===a.status){if(h?.aborted)throw a.reason;p.push(`${q[b].gap.chapterTitle}:修复异常(${a.reason instanceof Error?a.reason.message:"未知错误"})`);return}let c=a.value,{gap:d,draft:e}=q[b];if(c.rolledBack)return void p.push(`${d.chapterTitle}:修复后计划表格缺口增多,已回滚本轮修改`);c.content&&c.content!==e.content&&!u.has(e.id)?(e.content=c.content,u.add(e.id),o+=1):u.has(e.id)||p.push(`${d.chapterTitle}:缺 ${d.plans.map(a=>a.title).join("、")}(${i?.llm.lastError||"补表 patch 未应用"})`)}),0===o){(0,r.fx)(j,(0,r.X5)({type:"llm_review",roleId:"table-execution-repair",status:"failed",message:`表格执行率修复第 ${a+1} 轮:补表 patch 未应用(${m.length} 个章节缺表)`,details:p},{subtitle:"表格执行率修复"})),k(c);break}n=!0,k(c),m=(0,b7.Xi)(b,c),(0,r.fx)(j,(0,r.X5)({type:"llm_review",roleId:"table-execution-repair",status:m.length>0?"failed":"success",message:m.length>0?`表格执行率修复第 ${a+1} 轮完成,仍有 ${m.length} 个章节缺表`:`表格执行率修复第 ${a+1} 轮完成`},{subtitle:"表格执行率修复"})),(0,r.fx)(j,(0,r.X5)({type:"llm_review",roleId:"table-execution-review",status:m.length>0?"failed":"success",message:m.length>0?`表格执行率复检:仍有 ${m.length} 个章节缺表`:"表格执行率复检通过"},{subtitle:"表格执行率核验"}))}return{tableFixApplied:n}}function ce(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 cf(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,a3.Bt)(n),p=await (0,a3.gE)(n),q=o.fillerSentences>0,s=p.countermeasures>0&&p.ratio<.5,t=(0,aL.P_)(n),u=(0,aL.C4)(n),v=(0,aL.uj)(n),w=t.length>0,x=u.length>0,y=v.length>0;if(!q&&!s&&!w&&!x&&!y)break;let z=q?await bF(b):[],A=q?function(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);if(!g||"semantic"!==f.channel||!(0,a3.W0)(f.sentence)){d.push(f);continue}let h=g.content.split("\n"),i=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,a3.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}(h,f.sentence);i>0?(g.content=h.join("\n").replace(/\n{3,}/gu,"\n\n"),e+=i,c.includes(f.sentence)||c.push(f.sentence)):d.push(f)}return{deletedCount:e,deletedSentences:c,remaining:d}}(b,z):{deletedCount:0,deletedSentences:[],remaining:z};A.deletedCount>0&&console.error(`[gen][templating] 零信息口号句确定性删除 ${A.deletedCount} 处:${A.deletedSentences.slice(0,3).join(" / ")}${A.deletedSentences.length>3?" 等":""}`);let B=b.map(a=>a.content).join("\n\n"),C=new Map(b.map(a=>[a.id,a.content])),D=(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}]:[]}),E=b.flatMap(a=>{let b=A.remaining.filter(b=>(b.chapterId||b.chapterTitle)===(a.id||a.title)).map(a=>a.sentence),c=D.filter(b=>b.chapter.id===a.id).map(a=>({text:a.text,missingAttribution:a.missingAttribution,missingTarget:a.missingTarget})),d=t.filter(b=>ce(a,b.chapterTitle)),e=u.filter(b=>ce(a,b.chapterTitle)),f=v.filter(b=>ce(a,b.chapterTitle));return b.length>0||c.length>0||d.length>0||e.length>0||f.length>0?[{chapter:a,sentences:b,difficulty:c,frames:d,flows:e,titles:f}]:[]});if(0===E.length){A.deletedCount>0&&(m=!0,(0,r.fx)(i,(0,r.X5)({type:"llm_review",roleId:"templating-repair",status:"success",message:`模板化修复第 ${a+1} 轮:确定性删除零信息口号句 ${A.deletedCount} 处(无剩余重写目标)`},{subtitle:"模板化修复"})),j(b));break}let F=[q?`套话句占比 ${(100*o.ratio).toFixed(1)}%${A.deletedCount>0?`(已确定性删除零信息口号 ${A.deletedCount} 处)`:""}`:"",s?`重难点双达标 ${(100*p.ratio).toFixed(0)}%`:"",w?`骨架指纹 ${t.length} 组`:"",x?`工序形式 ${u.length} 处`:"",y?`标题缺陷 ${v.length} 处`:""].filter(Boolean).join("、");(0,r.fx)(i,(0,r.X5)({type:"llm_review",roleId:"templating-repair",status:"running",message:`模板化修复第 ${a+1} 轮:${F}(${E.length} 章)`},{subtitle:"模板化修复"})),j(b);let G=0,H=async a=>{let b=[];a.sentences.length>0&&b.push(`第 1~${a.sentences.length} 条目标原文是本章已检出的空话套话句(零信息纯口号句已由系统确定性删除,此处为含信息或合规承诺类命中句):逐条原地改写为“责任岗位 + 执行动作 + 量化标准 + 检查频次 + 整改时限”式可核查措施,且每条改写句必须嵌入不少于 2 个项目实体(村名/工程量/规格,取自本章证据摘要);禁止以同义空话替换、禁止改写清单外内容、不得凭空编造数值;属必须保留的合规承诺句须具体化到可核查。`);let i=a.sentences.length+1;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} 处,验收上限 2 处):逐句改写为差异化句式,保留原句全部事实信息(岗位、数值、频次不得丢失)。`)}for(let c of a.flows)b.push(`第 ${i} 条目标原文是小节标题,其所在小节「${c.blockTitle}」的工序顺序表达当前为【${c.currentForm}】形式且与相邻小节同形式:将该小节的工序顺序表达改写为【${c.targetForm}】形式,内容与数值保持不变(工艺参数不得删减)。`),i+=1;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.difficulty.map(a=>a.text),...a.frames.flatMap(a=>a.sentences),...a.flows.map(a=>a.blockTitle),...a.titles.map(a=>a.title)],maxTokens:6e3,evidenceChars:5e3})))},I=await b$({originalContent:B,repairRound:"templating-repair",diagnostics:h,beforeMetrics:[o.ratio,p.ratio,t.length,u.length,v.length],apply:async()=>((await Promise.allSettled(E.map(a=>H(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}=E[b];c.content&&c.content!==d.content&&(d.content=c.content,G+=1)}),j(b),b.map(a=>a.content).join("\n\n")),recheck:async a=>{let b=await (0,a3.Bt)(a),c=await (0,a3.gE)(a);return[b.ratio,c.ratio,(0,aL.P_)(a).length,(0,aL.C4)(a).length,(0,aL.uj)(a).length]},shouldRollback:(a,b)=>b[0]>a[0]+.01&&!(b[1]>a[1]+.01)||b[2]+b[3]+b[4]>a[2]+a[3]+a[4]});if(0===G&&0===A.deletedCount){(0,r.fx)(i,(0,r.X5)({type:"llm_review",roleId:"templating-repair",status:"failed",message:`模板化修复第 ${a+1} 轮:修复 patch 未落地(${E.length} 章锚点失配或 LLM 未产出)`,details:[`未收敛维度:${F}`]},{subtitle:"模板化修复"}));break}if(I.rolledBack){for(let a of b){let b=C.get(a.id);void 0!==b&&(a.content=b)}(0,r.fx)(i,(0,r.X5)({type:"llm_review",roleId:"templating-repair",status:"failed",message:`模板化修复第 ${a+1} 轮:修复后指标变差已回滚本轮修改(套话 ${(100*I.beforeMetrics[0]).toFixed(1)}%→${(100*I.afterMetrics[0]).toFixed(1)}%,治理缺陷目标 ${I.beforeMetrics[2]+I.beforeMetrics[3]+I.beforeMetrics[4]}→${I.afterMetrics[2]+I.afterMetrics[3]+I.afterMetrics[4]})`,details:["LLM 重写未收敛,回滚保留修复前正文"]},{subtitle:"模板化修复"})),j(b);break}m=!0}if(m){let a=b.map(a=>a.content).join("\n\n"),c=await (0,a3.Bt)(a),d=await (0,a3.gE)(a),e=(0,aL.P_)(a),f=(0,aL.C4)(a),g=(0,aL.uj)(a),h=c.ratio<.1&&(!d.heavyTemplated||0===d.countermeasures)&&0===e.length&&0===f.length&&0===g.length,k=[e.length>0?`骨架指纹 ${[...new Set(e.map(a=>`${a.fingerprintLabel}\xd7${a.totalCount}`))].join("、")}`:"",f.length>0?`工序形式相邻重复 ${f.length} 处`:"",g.length>0?`标题缺陷 ${g.length} 处`:""].filter(Boolean).join(";");(0,r.fx)(i,(0,r.X5)({type:"llm_review",roleId:"templating-repair",status:h?"success":"failed",message:`模板化修复完成:套话句占比 ${(100*c.ratio).toFixed(1)}%(达标线 ≤10%),重难点归因+量化双达标 ${(100*d.ratio).toFixed(0)}%(达标线 ≥50%)${k?`,模板化残留:${k}`:""}`,details:h?[]:["未完全收敛:残留项先由确定性修复链(终检前)收敛;复核未清零的残留经终检检测器判定,仍不达标即阻断交付(宁缺毋假)"]},{subtitle:"模板化修复"})),j(b)}return{templatingFixApplied:m}}async function cg(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,q=0,s=(0,b8.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,"")}
35
35
 
36
36
  ${g}
37
37
  `,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,"")}
@@ -49,21 +49,21 @@ ${n.slice(0,2e3)}
49
49
  若表格首行就是分隔线(缺表头行),必须依据表格数据内容补写一行业务表头(每列一个业务字段名),再紧跟分隔线;表头不得使用泛化字段名。
50
50
  合计/小计/总计/累计行的空单元格一律填“—”(不适用语义);规格型号列中无规格型号的小型机具(蛙式打夯机等)可填“—”(机具无型号,合法);其余单元格一律不得为空、不得用占位符,不得凭空编造型号。
51
51
  若表头第一列是表名(如“竣工清理与移交计划表”),把表名移到表格上方正文叙述中,表头从业务列名开始,并同步校正数据行列对齐。
52
- 保持表头结构与列数不变,不得新增、删除或合并小节;只修改缺陷表格相关局部文本。`,p=await b$({originalContent:b.content,repairRound:"table-repair",diagnostics:a.generationDiagnostics,apply:async()=>(function(a,b){let c=b1(a,b);if(!c)return{content:a,removed:0};let d=b2(c.split(/\r?\n/u));return d.removed>0?{content:a.replace(c,d.lines.join("\n")),removed:d.removed}:{content:a,removed:0}})((await a.withProgressHeartbeat(()=>(0,f.l8)({template:a.template,chapter:{id:b.id,title:b.title,content:b.content,evidence:b.evidence,missingFacts:b.missingFacts,sections:b.sections},issues:[g,h],promptTexts:o,requirement:a.requirement,forbidDrawingImages:!1,diagnostics:a.generationDiagnostics,signal:a.signal,patchGuard:(0,f.XG)("table-repair",a.generationDiagnostics)}))).content||b.content,i).content,recheck:a=>[(0,C.NS)(a).filter(a=>"error"===a.level&&/空单元格|占位符单元格|列数不一致/u.test(a.message)&&a.message.includes(i)&&(!j||a.message.includes(j))).length]}),q=p.content;p.rolledBack||q===b.content||(a.finalChapterDrafts[d]={...b,content:l?(0,k.w_)(q,l):q},c+=1);let s=p.rolledBack||p.afterMetrics[0]>0,t=(0,r.X5)({type:"llm_review",roleId:`agent-table-fix-${b.id}-${e}`,status:s?"failed":"success",message:p.rolledBack?`表格数据修复已回滚:${b.title}(修复后缺陷增多,保留修复前正文)`:s?`表格数据修复未生效:${b.title}`:`表格数据修复完成:${b.title}`,details:[g]},{subtitle:"表格数据修复"});(0,r.fx)(a.progressStages,t),(0,r.fx)(a.finalGateRepairStages,t),a.emitProgress(a.finalChapterDrafts,a.progressStages)}}))}c>0&&(a.finalMarkdown=a.rebuildFinalMarkdown(),await a.recomputeFinalValidationBundle())}}async function ck(a){a.decisionLockEntries.length>0&&(a.validationIssues=[...a.validationIssues,...(function(a,b){if(0===b.length)return[];let c=[],d=new Set;for(let e of a.split(/\r?\n/u)){let a=e.trim();if(!(!a||/^#{1,6}\s/u.test(a)||/^\|/u.test(a)))for(let e of a.split(/(?<=[。;;])/u)){let a=e.trim();if(!(a.length<6)&&!(a.length>200))for(let e of b){let b=(0,q.rR)(e.id);if(!b||!b.relevance.test(a))continue;let f=new Set(e.values);for(let g of b.options){if(f.has(g.value)||!g.aliases.test(a)||(0,q.R3)(a,g.aliases))continue;let b=`${e.id} ${g.value} ${a}`;d.has(b)||(d.add(b),c.push({categoryId:e.id,label:e.label,lockedValues:e.values,offValue:g.value,sentence:a}))}}}}return c})(a.finalMarkdown,a.decisionLockEntries).map(a=>({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`语义矛盾(${a.label}):项目关键决策已锁定为「${a.lockedValues.join("、")}」,正文出现「${a.offValue}」冲突表述:“${a.sentence.slice(0,60)}”`,suggestion:"与已锁定决策冲突的表述必须统一为锁定值(或整句删除);禁止保留两套并存的技术路线/机械选型/供应方式。禁止将本缺陷描述与修复要求本身写入正文,输出仅限正文内容。"}))])}var cl=c(93675),cm=c(65667);async function cn(a){let b=await (0,C.KI)(a.finalChapterDrafts,a.factsModel,a.scopeConflicts);a.laborPeakAuthority=(0,E.yB)(a.blueprintData),a.greeningMaintenanceAuthority=(0,p.Dq)(a.factsModel);let c=await (0,af.Mj)({chapters:a.finalChapterDrafts,model:a.tenderRequirements,similarity:a.requirementsSimilarity,signal:a.signal});if((b.fixedCount>0||c.fixedCount>0)&&(a.finalMarkdown=a.rebuildFinalMarkdown()),c.fixedCount>0){let b=(0,r.X5)({type:"validation",roleId:"scoring-requirement-fix",status:"success",message:`评分项响应确定性补写:${c.fixedCount} 条(${c.details.slice(0,3).join("、")})`,details:c.details.slice(3)},{subtitle:"交付前确定性清洗"});(0,r.fx)(a.progressStages,b),(0,r.fx)(a.finalGateRepairStages,b)}let d=(0,p.qG)(a.finalChapterDrafts);a.surfaceFixContext={laborPeakAuthority:a.laborPeakAuthority,phaseLaborAuthorities:(0,E.i2)(a.blueprintData),greeningMaintenanceAuthority:a.greeningMaintenanceAuthority,resourceBreakdownAuthority:(0,cm.re)(a.blueprintData),supportFormAuthority:"slope"===a.supportAuthority?"放坡":"pile"===a.supportAuthority?"钢板桩":void 0,decisionLockEntries:a.decisionLockEntries,plannedSectionTitles:[...new Set([...(a.effectiveChapters||[]).flatMap(a=>a.sections||[]),...a.template.chapters.flatMap(a=>a.sections||[]),...a.finalChapterDrafts.flatMap(a=>a.sections||[])].filter(Boolean))],basisRegulations:(0,p.VZ)(a.blueprintData?.basisRegulations,a.allEvidence.map(a=>String(a.content||"")).join("\n"),a.blueprintData?.project.location||"")};let e=new Map,f=(a,b)=>{b>0&&e.set(a,(e.get(a)??0)+b)},g=0;for(let b of a.finalChapterDrafts){g+=1;let c={...a.surfaceFixContext,chapterNumber:g};for(let a of cl.aW){if(!a.stage5)continue;let d=(0,p.gD)(b=>a.fix(b,c),b.content,2);d.fixedCount>0&&(b.content=d.markdown,f(a.key,d.fixedCount))}}let h=a=>e.get(a)??0,i=h("table-line-residue"),j=h("finish-thickness"),k=h("labor-peak"),l=h("phase-labor-values"),m=h("resource-breakdown"),n=h("ambiguous-either-or"),o=h("self-undermining"),s=h("empty-scoring-response"),t=h("tender-meta-language"),u=h("duplicate-response-line"),v=h("atlas-reference"),w=h("meta-discourse"),x=h("formula-residue"),y=h("paragraph-opening-repeat"),A=h("truncated-sentence"),B=h("internal-table-row-dup"),D=h("greening-maintenance"),F=h("paragraph-tail-repeat"),G=h("slot-depth-value"),H=h("duplicate-basic-info-tables"),I=h("fallback-placeholder-rows"),J=h("heading-uncovered-items"),K=h("basis-regulation-region"),L=h("forbidden-configuration"),M=h("work-injury-insurance"),N=h("templated-labels"),O=h("structure-integrity"),P=h("repeated-words"),Q=h("collision-numbered-heading"),R=h("inverted-date-range"),S=h("internal-term-heading"),T=h("section-renumber");if(d.removedCount>0||e.size>0){a.finalMarkdown=a.rebuildFinalMarkdown();let b=(0,r.X5)({type:"validation",roleId:"deterministic-surface-fix",status:"success",message:`交付前确定性清洗:跨章表格去重 ${d.removedCount} 行、断行残片合并 ${i} 处、装饰层厚度修复 ${j} 处、埋深槽位错位删除 ${G} 处、劳动力峰值统一 ${k} 处、阶段劳动力统一 ${l} 处、资源数值统一 ${m} 处、两可表述归一 ${n} 处、段首机械重复剥离 ${y} 处、截断句残留收敛 ${A} 处、元话语声明清洗 ${w} 处、公式形态清洗 ${x} 处、自伤句式改写 ${o} 处、空响应句改写 ${s} 处、招标元语言清理 ${t} 处、重复响应行去重 ${u} 行、图集引用清洗 ${v} 处、表内重复行删除 ${B} 行、基础信息表合并 ${H} 组、兜底话术表行删除 ${I} 行、绿化养护期统一 ${D} 处、标题工程类别覆盖修正 ${J} 处、编制依据法规补写 ${K} 处、配置禁用词清洗 ${L} 处、工伤保险缴纳表述补写 ${M} 处、小节编号重放 ${T} 行、段内句级复读剥离 ${F} 处、模板标签清洗 ${N} 处、结构完整性清理 ${O} 处、重复编号标题删除 ${Q} 行、倒置日期区间修复 ${R} 处、内部术语标题替换 ${S} 处、叠词收敛 ${P} 处`},{subtitle:"交付前确定性清洗"});(0,r.fx)(a.progressStages,b),(0,r.fx)(a.finalGateRepairStages,b)}let U=await (0,C.Yb)(a.finalMarkdown,a.factsModel,a.scopeConflicts);U.fixedCount>0&&(a.finalMarkdown=U.markdown);let V=[];a.blueprintData&&(V=(await (0,q.AA)(a.finalMarkdown,a.blueprintData,{diagnostics:a.generationDiagnostics,signal:a.signal,onAdjudication:b=>{console.log(`[gen] citation-adjudication(stage5): 候选 ${b.total} 条(冲突 ${b.conflicts}、未决 ${b.uncertain}、一致 ${b.consistent})`);let c=(0,r.X5)({type:"validation",roleId:"citation-adjudication",status:b.conflicts>0?"failed":"success",message:`蓝图引用语义判定:候选 ${b.total} 条(冲突 ${b.conflicts}、未决 ${b.uncertain}、一致 ${b.consistent})${b.unavailable?`;判定不可用:${b.unavailable}`:""}`,details:b.records.filter(a=>"consistent"!==a.conclusion).slice(0,20).map(a=>`[${a.conclusion}] ${a.subject}:${a.rationale}`)},{subtitle:"交付前确定性清洗"});(0,r.fx)(a.progressStages,c),(0,r.fx)(a.finalGateRepairStages,c)}})).anchors);let W=(0,p.fE)(a.finalMarkdown,{authorityIndex:a.blueprintData?(0,E.IV)(a.blueprintData):void 0,scheduleAuthority:a.scheduleAuthority,assemblyRateAuthority:a.assemblyRateAuthority,supportAuthority:a.supportAuthority,quantityAnchors:V});if(W.fixedCount>0&&(a.finalMarkdown=W.markdown),b.fixedCount>0||U.fixedCount>0||W.fixedCount>0){await a.recomputeFinalValidationBundle();let c=b.fixedCount+U.fixedCount+W.fixedCount,d=[...new Set([...b.details,...U.details,...W.details])],e=(0,r.X5)({type:"validation",roleId:"deterministic-consistency-fix",status:"success",message:`交付前确定性清洗:${c} 处(${d.slice(0,4).join("、")})`,details:d.slice(4)},{subtitle:"交付前确定性清洗"});(0,r.fx)(a.progressStages,e),(0,r.fx)(a.finalGateRepairStages,e)}let X=(0,z.K7)(a.finalMarkdown);if(X!==a.finalMarkdown){a.finalMarkdown=X,await a.recomputeFinalValidationBundle();let b=(0,r.X5)({type:"validation",roleId:"formal-source-clean",status:"success",message:"来源罗列话术确定性清洗兜底:最终成稿来源罗列残留已收敛"},{subtitle:"交付前确定性清洗"});(0,r.fx)(a.progressStages,b),(0,r.fx)(a.finalGateRepairStages,b)}}async function co(a){(await ch({chapterDraftsFinal:a.finalChapterDrafts,template:a.template,repairPromptTexts:a.repairPromptTexts,requirement:a.requirement,signal:a.signal,generationDiagnostics:a.generationDiagnostics,progressStages:a.progressStages,emitProgress:a.emitProgress,withProgressHeartbeat:a.withProgressHeartbeat,finalGateRepairStages:a.finalGateRepairStages,bidComposition:a.bidComposition})).plannedSectionFixApplied&&(a.finalMarkdown=a.rebuildFinalMarkdown(),await a.recomputeFinalValidationBundle());let b=(0,p.qj)(a.finalMarkdown);if(b!==a.finalMarkdown){a.finalMarkdown=b,await a.recomputeFinalValidationBundle();let c=(0,r.X5)({type:"validation",roleId:"commercial-strip",status:"success",message:"商务条款数据交付前兜底清洗:正文商务条款数据句已删除"},{subtitle:"评审后兜底"});(0,r.fx)(a.progressStages,c),(0,r.fx)(a.finalGateRepairStages,c)}let c=function(a){let b=a.split(/\r?\n/u),c=[],d=0,e=0;for(;e<b.length;){if(!/^\s*\|/u.test(b[e])){c.push(b[e]),e+=1;continue}let a=e;for(;a+1<b.length&&/^\s*\|/u.test(b[a+1]);)a+=1;let f=b2(b.slice(e,a+1));f.removed>0&&(d+=1),c.push(...f.lines),e=a+1}return{markdown:c.join("\n"),removed:d}}(a.finalMarkdown);if(c.markdown!==a.finalMarkdown){a.finalMarkdown=c.markdown,await a.recomputeFinalValidationBundle();let b=(0,r.X5)({type:"validation",roleId:"table-deterministic-repair",status:"success",message:c.removed>0?`表格空单元格交付前确定性修复:删除 ${c.removed} 块`:"表格空单元格交付前确定性修复:合计行填充类修复已落地"},{subtitle:"评审后兜底"});(0,r.fx)(a.progressStages,b),(0,r.fx)(a.finalGateRepairStages,b)}let d=(0,p.g4)(cl.aW.filter(a=>a.round2).map(b=>c=>b.fix(c,a.surfaceFixContext)),a.finalMarkdown,3);if(d.markdown!==a.finalMarkdown){a.finalMarkdown=d.markdown,await a.recomputeFinalValidationBundle();let b=(0,r.X5)({type:"validation",roleId:"post-review-surface",status:"success",message:`评审轮后表面修复兜底:确定性清洗 ${d.fixedCount} 处`},{subtitle:"评审后兜底"});(0,r.fx)(a.progressStages,b),(0,r.fx)(a.finalGateRepairStages,b)}let e=await (0,D.NR)(a.finalMarkdown);if(e!==a.finalMarkdown){a.finalMarkdown=e,await a.recomputeFinalValidationBundle();let b=(0,r.X5)({type:"validation",roleId:"terminology-strip",status:"success",message:"内部术语句子确定性删除兜底:正文残留内部术语已删除"},{subtitle:"评审后兜底"});(0,r.fx)(a.progressStages,b),(0,r.fx)(a.finalGateRepairStages,b)}let f=(0,p._D)(a.finalMarkdown);if(f.fixedCount>0){a.finalMarkdown=f.markdown,await a.recomputeFinalValidationBundle();let b=(0,r.X5)({type:"validation",roleId:"toc-consistency",status:"success",message:`目录与正文一致性兜底:按正文实际结构重建目录 ${f.fixedCount} 处`},{subtitle:"评审后兜底"});(0,r.fx)(a.progressStages,b),(0,r.fx)(a.finalGateRepairStages,b)}let g=await (0,af.eA)({markdown:a.finalMarkdown,chapters:a.finalChapterDrafts,model:a.tenderRequirements,similarity:a.requirementsSimilarity,signal:a.signal,diagnostics:a.generationDiagnostics});if(g.fixedCount>0){a.finalMarkdown=g.markdown,await a.recomputeFinalValidationBundle();let b=(0,r.X5)({type:"validation",roleId:"scoring-requirement-fix-final",status:"success",message:`评分项响应终检补写:${g.fixedCount} 条(${g.details.slice(0,3).join("、")})`,details:g.details.slice(3)},{subtitle:"评审后兜底"});(0,r.fx)(a.progressStages,b),(0,r.fx)(a.finalGateRepairStages,b)}}let cp=/(?:\d+(?:\.\d+)?\s*(?:W|kW|kV|V|A|Hz|mm|cm|m|km|kg|g|t|K|MPa|kN|℃|%|L|mL|s|h|min)\b|C\d{2,}|HRB\d+|HPB\d+|DN\s*\d+|Φ\s*\d+(?:\.\d+)?|φ\s*\d+(?:\.\d+)?|\d+(?:\.\d+)?\s*[×x*]\s*\d+(?:\.\d+)?)/giu;function cq(a){return[...new Set((a.match(cp)||[]).map(a=>a.replace(/\s+/gu,"").trim()))].filter(Boolean).slice(0,8)}function cr(a,b=[]){return[...new Set(`${a} ${b.join(" ")}`.match(/[\p{Script=Han}]{2,}|[A-Za-z0-9_-]{3,}/gu)||[])].filter(a=>a.length>=2)}let cs=/(?:\d+(?:\.\d+)?\s*(?:mm|cm|m|km|㎡|m²|m3|m³|kg|g|t|K|L|ml|MPa|kPa|kN|N|℃|%|台|套|座|个|项|批|次|份|人|小时|分钟|日历天|天|周|月|年|万元|元|W|kW|kV|V|A|Hz|米|处|道|根|盏|株|标段|层|樘|孔|眼|间|户|栋|幢|d)\b|DN\s*\d+|Φ\s*\d+(?:\.\d+)?|φ\s*\d+(?:\.\d+)?|C\d{2,}|HRB\d+|HPB\d+)/giu;function ct(a){return a.replace(/\s+/gu,"").toLowerCase()}function cu(a){return[...new Set((a.match(cs)||[]).map(ct))]}async function cv(a){let b=function(a){let b=new Set;for(let c of a.allEvidence)if(c.content)for(let a of cu((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 cu(`${a.name} ${a.description} ${a.quantity}${a.unit}`))b.add(c);for(let c of cq(a.description))b.add(ct(c));for(let c of a.specQuantityPairs)for(let a of(b.add(ct(c.spec)),cu(c.quantity)))b.add(a)}let d=a.input.blueprintData?.quantities;if(d)for(let[a,c]of Object.entries(d))for(let d of("number"==typeof c.value&&Number.isFinite(c.value)&&b.add(ct(`${c.value}${c.unit||""}`)),cu(a)))b.add(d);for(let c of[...a.structuredFacts||[],...a.factsModel?.preciseFacts||[]])for(let a of cu((0,e.lG)(c.value)))b.add(a);return b}(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(cs)??[]).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(cs)||[];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=cu(d);if(0===a.length||a.every(a=>b.has(a)))continue;let e=a.filter(a=>!b.has(a));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.slice(0,12))}let h=[...d.values()].reduce((a,b)=>a+b.length,0);if(0===h){let c=(0,r.X5)({type:"validation",roleId:"numeric-verification",status:"success",message:"正文数值确定性核对通过:全部正文数值均在资料原文/清单事实锁/蓝图参数桶中找到同值来源",details:[`数值权威库规模:${b.size} 个归一化 token`]},{subtitle:"数值确定性核对"});(0,r.fx)(a.progressStages,c),(0,r.fx)(a.finalGateRepairStages,c),a.emitProgress(a.finalChapterDrafts,a.progressStages);return}let i=0,j=0;for(let[b,e]of d){let d=a.finalChapterDrafts.findIndex(a=>a.id===b);if(d<0)continue;let g=a.finalChapterDrafts[d],h=g.content,k=e,l=c(h).length,m=0,n=!1,o=!1,p=[l];for(;k.length>0&&m<2;){m+=1;let e=(0,r.X5)({type:"llm_review",roleId:`agent-numeric-verification-${b}`,status:"running",message:`正文数值核对发现 ${k.length} 处疑似无来源数值,第 ${m} 轮定向修复中:${g.title}`,details:k.map(a=>`疑似:${a.sentence}(缺来源 token:${a.tokens.join("、")})`)},{subtitle:"数值确定性核对"});(0,r.fx)(a.progressStages,e),(0,r.fx)(a.finalGateRepairStages,e),a.emitProgress(a.finalChapterDrafts,a.progressStages);let i=["【正文数值定向核对修复】",...m>1?[`本轮为第 ${m} 轮(最多 2 轮):上一轮修复后仍有残留,无法确认来源的数值必须直接删除,禁止保留或替换为其他无来源数值。`]:[],"下列句子中的数值(标注「缺来源 token」)在项目绑定材料、工程量清单与蓝图中均找不到同值来源,属于疑似编造数值。请逐句核对并修复:","1. 若该数值在本章绑定证据中确实存在(仅表述口径不同),保持数值原样,只修正单位或表述;","2. 若该数值是行业通用工艺参数(如养护龄期、分层厚度),可按规范惯例保留并改为规范原文表述;","3. 其余情况必须删除该数值,改写为不带具体数值的过程控制表述(如「按设计要求」「分层碾压至压实度满足设计及规范要求」);","禁止把疑似数值替换为另一个同样无来源的数值;禁止改动句子的非数值部分;只做局部修改,不得新增、删除或合并小节。",k.map(a=>`- 疑似句:${a.sentence}(缺来源 token:${a.tokens.join("、")})`).join("\n")].join("\n"),j=await b$({originalContent:h,repairRound:"numeric-verification",diagnostics:a.generationDiagnostics,apply:async()=>{let b=await a.withProgressHeartbeat(()=>(0,f.l8)({template:a.template,chapter:{id:g.id,title:g.title,content:h,evidence:g.evidence,missingFacts:g.missingFacts,sections:g.sections},issues:k.map(a=>`疑似无来源数值:${a.sentence}(token:${a.tokens.join("、")})`),promptTexts:i,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!==h?b.content:h},recheck:a=>[c(a).length]});j.rolledBack||j.content===h||(h=j.content,a.finalChapterDrafts[d]={...g,content:h},n=!0),j.rolledBack&&(o=!0);let q=c(h).length;if(p.push(q),0===q||q>=l||m>=2)break;l=q,k=c(h).slice(0,12)}n&&(i+=1);let q=c(h).length;j+=q;let s=(0,r.X5)({type:"llm_review",roleId:`agent-numeric-verification-${b}`,status:0===q?"success":"failed",message:0===q?`数值核对修复完成:${g.title}(${e.length} 处疑似数值已处理,残留轨迹 ${p.join("→")})`:n?`数值核对修复部分生效:${g.title}(疑似数值残留轨迹 ${p.join("→")},已执行 ${m} 轮定向修复(每章最多 2 轮);残留项以 warning 记录,不阻断交付)`:o?`数值核对修复已回滚:${g.title}(修复后疑似数值增多,保留修复前正文;残留 ${q} 处以 warning 记录,不阻断交付)`:`数值核对修复未生效:${g.title}(模型未产生有效修改;残留 ${q} 处以 warning 记录,不阻断交付)`,details:[...e.map(a=>`疑似:${a.sentence}`),q>0?`已执行 ${m} 轮定向修复,残留项以 warning 记录,不阻断交付`:""]},{subtitle:"数值确定性核对"});(0,r.fx)(a.progressStages,s),(0,r.fx)(a.finalGateRepairStages,s),a.emitProgress(a.finalChapterDrafts,a.progressStages)}i>0&&(a.finalMarkdown=a.rebuildFinalMarkdown(),await a.recomputeFinalValidationBundle()),a.generationDiagnostics.llm.lastInfo=`正文数值确定性核对:权威库 ${b.size} token,${h} 处疑似无来源数值,${i} 章完成定向修复,残留 ${j} 处(每章最多 2 轮收敛修复,未收敛残留以 warning 记录,不阻断交付)`}async function cw(a){let b=a.requirementSemantics;if(!b||!b.parsed||0===(b.globalRequirements||[]).length&&0===(b.chapterRequirements||[]).length)return;let c=[...b.globalRequirements||[],...(b.chapterRequirements||[]).flatMap(a=>a.requirements)].filter(Boolean).length,d=(b,c,d)=>a.withProgressHeartbeat(()=>(0,bn.bb)('你是投标文档用户要求核验专家。逐条核对「用户要求」是否已在章节正文中落实。\n\n判定口径:正文存在明确满足该要求的实质性内容即算落实;仅泛泛提及、半句带过、被其他内容顶替均算未落实。\n\n不得因为正文有其他内容就降低标准;用户要求是最高优先级,未落实必须如实列入 unmet。\n\n只返回 JSON:{"satisfied":true/false,"unmet":["未落实要求原文"]}。',[`章节标题:${b}`,`用户要求(逐条核验):
52
+ 保持表头结构与列数不变,不得新增、删除或合并小节;只修改缺陷表格相关局部文本。`,p=await b$({originalContent:b.content,repairRound:"table-repair",diagnostics:a.generationDiagnostics,apply:async()=>(function(a,b){let c=b1(a,b);if(!c)return{content:a,removed:0};let d=b2(c.split(/\r?\n/u));return d.removed>0?{content:a.replace(c,d.lines.join("\n")),removed:d.removed}:{content:a,removed:0}})((await a.withProgressHeartbeat(()=>(0,f.l8)({template:a.template,chapter:{id:b.id,title:b.title,content:b.content,evidence:b.evidence,missingFacts:b.missingFacts,sections:b.sections},issues:[g,h],promptTexts:o,requirement:a.requirement,forbidDrawingImages:!1,diagnostics:a.generationDiagnostics,signal:a.signal,patchGuard:(0,f.XG)("table-repair",a.generationDiagnostics)}))).content||b.content,i).content,recheck:a=>[(0,C.NS)(a).filter(a=>"error"===a.level&&/空单元格|占位符单元格|列数不一致/u.test(a.message)&&a.message.includes(i)&&(!j||a.message.includes(j))).length]}),q=p.content;p.rolledBack||q===b.content||(a.finalChapterDrafts[d]={...b,content:l?(0,k.w_)(q,l):q},c+=1);let s=p.rolledBack||p.afterMetrics[0]>0,t=(0,r.X5)({type:"llm_review",roleId:`agent-table-fix-${b.id}-${e}`,status:s?"failed":"success",message:p.rolledBack?`表格数据修复已回滚:${b.title}(修复后缺陷增多,保留修复前正文)`:s?`表格数据修复未生效:${b.title}`:`表格数据修复完成:${b.title}`,details:[g]},{subtitle:"表格数据修复"});(0,r.fx)(a.progressStages,t),(0,r.fx)(a.finalGateRepairStages,t),a.emitProgress(a.finalChapterDrafts,a.progressStages)}}))}c>0&&(a.finalMarkdown=a.rebuildFinalMarkdown(),await a.recomputeFinalValidationBundle())}}async function ck(a){a.decisionLockEntries.length>0&&(a.validationIssues=[...a.validationIssues,...(function(a,b){if(0===b.length)return[];let c=[],d=new Set;for(let e of a.split(/\r?\n/u)){let a=e.trim();if(!(!a||/^#{1,6}\s/u.test(a)||/^\|/u.test(a)))for(let e of a.split(/(?<=[。;;])/u)){let a=e.trim();if(!(a.length<6)&&!(a.length>200))for(let e of b){let b=(0,q.rR)(e.id);if(!b||!b.relevance.test(a))continue;let f=new Set(e.values);for(let g of b.options){if(f.has(g.value)||!g.aliases.test(a)||(0,q.R3)(a,g.aliases))continue;let b=`${e.id} ${g.value} ${a}`;d.has(b)||(d.add(b),c.push({categoryId:e.id,label:e.label,lockedValues:e.values,offValue:g.value,sentence:a}))}}}}return c})(a.finalMarkdown,a.decisionLockEntries).map(a=>({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`语义矛盾(${a.label}):项目关键决策已锁定为「${a.lockedValues.join("、")}」,正文出现「${a.offValue}」冲突表述:“${a.sentence.slice(0,60)}”`,suggestion:"与已锁定决策冲突的表述必须统一为锁定值(或整句删除);禁止保留两套并存的技术路线/机械选型/供应方式。禁止将本缺陷描述与修复要求本身写入正文,输出仅限正文内容。"}))])}var cl=c(93675),cm=c(65667);async function cn(a){let b=await (0,C.KI)(a.finalChapterDrafts,a.factsModel,a.scopeConflicts);a.laborPeakAuthority=(0,E.yB)(a.blueprintData),a.greeningMaintenanceAuthority=(0,p.Dq)(a.factsModel);let c=await (0,af.Mj)({chapters:a.finalChapterDrafts,assignments:a.requirementAssignments,signal:a.signal});if((b.fixedCount>0||c.fixedCount>0)&&(a.finalMarkdown=a.rebuildFinalMarkdown()),c.fixedCount>0){let b=(0,r.X5)({type:"validation",roleId:"scoring-requirement-fix",status:"success",message:`评分项响应确定性补写:${c.fixedCount} 条(${c.details.slice(0,3).join("、")})`,details:c.details.slice(3)},{subtitle:"交付前确定性清洗"});(0,r.fx)(a.progressStages,b),(0,r.fx)(a.finalGateRepairStages,b)}let d=(0,p.qG)(a.finalChapterDrafts);a.surfaceFixContext={laborPeakAuthority:a.laborPeakAuthority,phaseLaborAuthorities:(0,E.i2)(a.blueprintData),greeningMaintenanceAuthority:a.greeningMaintenanceAuthority,resourceBreakdownAuthority:(0,cm.re)(a.blueprintData),supportFormAuthority:"slope"===a.supportAuthority?"放坡":"pile"===a.supportAuthority?"钢板桩":void 0,decisionLockEntries:a.decisionLockEntries,plannedSectionTitles:[...new Set([...(a.effectiveChapters||[]).flatMap(a=>a.sections||[]),...a.template.chapters.flatMap(a=>a.sections||[]),...a.finalChapterDrafts.flatMap(a=>a.sections||[])].filter(Boolean))],basisRegulations:(0,p.VZ)(a.blueprintData?.basisRegulations,a.allEvidence.map(a=>String(a.content||"")).join("\n"),a.blueprintData?.project.location||"")};let e=new Map,f=(a,b)=>{b>0&&e.set(a,(e.get(a)??0)+b)},g=0;for(let b of a.finalChapterDrafts){g+=1;let c={...a.surfaceFixContext,chapterNumber:g};for(let a of cl.aW){if(!a.stage5)continue;let d=(0,p.gD)(b=>a.fix(b,c),b.content,2);d.fixedCount>0&&(b.content=d.markdown,f(a.key,d.fixedCount))}}let h=a=>e.get(a)??0,i=h("table-line-residue"),j=h("finish-thickness"),k=h("labor-peak"),l=h("phase-labor-values"),m=h("resource-breakdown"),n=h("ambiguous-either-or"),o=h("self-undermining"),s=h("empty-scoring-response"),t=h("tender-meta-language"),u=h("duplicate-response-line"),v=h("atlas-reference"),w=h("meta-discourse"),x=h("formula-residue"),y=h("paragraph-opening-repeat"),A=h("truncated-sentence"),B=h("internal-table-row-dup"),D=h("greening-maintenance"),F=h("paragraph-tail-repeat"),G=h("slot-depth-value"),H=h("duplicate-basic-info-tables"),I=h("fallback-placeholder-rows"),J=h("heading-uncovered-items"),K=h("basis-regulation-region"),L=h("forbidden-configuration"),M=h("work-injury-insurance"),N=h("templated-labels"),O=h("structure-integrity"),P=h("repeated-words"),Q=h("collision-numbered-heading"),R=h("inverted-date-range"),S=h("internal-term-heading"),T=h("section-renumber");if(d.removedCount>0||e.size>0){a.finalMarkdown=a.rebuildFinalMarkdown();let b=(0,r.X5)({type:"validation",roleId:"deterministic-surface-fix",status:"success",message:`交付前确定性清洗:跨章表格去重 ${d.removedCount} 行、断行残片合并 ${i} 处、装饰层厚度修复 ${j} 处、埋深槽位错位删除 ${G} 处、劳动力峰值统一 ${k} 处、阶段劳动力统一 ${l} 处、资源数值统一 ${m} 处、两可表述归一 ${n} 处、段首机械重复剥离 ${y} 处、截断句残留收敛 ${A} 处、元话语声明清洗 ${w} 处、公式形态清洗 ${x} 处、自伤句式改写 ${o} 处、空响应句改写 ${s} 处、招标元语言清理 ${t} 处、重复响应行去重 ${u} 行、图集引用清洗 ${v} 处、表内重复行删除 ${B} 行、基础信息表合并 ${H} 组、兜底话术表行删除 ${I} 行、绿化养护期统一 ${D} 处、标题工程类别覆盖修正 ${J} 处、编制依据法规补写 ${K} 处、配置禁用词清洗 ${L} 处、工伤保险缴纳表述补写 ${M} 处、小节编号重放 ${T} 行、段内句级复读剥离 ${F} 处、模板标签清洗 ${N} 处、结构完整性清理 ${O} 处、重复编号标题删除 ${Q} 行、倒置日期区间修复 ${R} 处、内部术语标题替换 ${S} 处、叠词收敛 ${P} 处`},{subtitle:"交付前确定性清洗"});(0,r.fx)(a.progressStages,b),(0,r.fx)(a.finalGateRepairStages,b)}let U=await (0,C.Yb)(a.finalMarkdown,a.factsModel,a.scopeConflicts);U.fixedCount>0&&(a.finalMarkdown=U.markdown);let V=[];a.blueprintData&&(V=(await (0,q.AA)(a.finalMarkdown,a.blueprintData,{diagnostics:a.generationDiagnostics,signal:a.signal,onAdjudication:b=>{console.log(`[gen] citation-adjudication(stage5): 候选 ${b.total} 条(冲突 ${b.conflicts}、未决 ${b.uncertain}、一致 ${b.consistent})`);let c=(0,r.X5)({type:"validation",roleId:"citation-adjudication",status:b.conflicts>0?"failed":"success",message:`蓝图引用语义判定:候选 ${b.total} 条(冲突 ${b.conflicts}、未决 ${b.uncertain}、一致 ${b.consistent})${b.unavailable?`;判定不可用:${b.unavailable}`:""}`,details:b.records.filter(a=>"consistent"!==a.conclusion).slice(0,20).map(a=>`[${a.conclusion}] ${a.subject}:${a.rationale}`)},{subtitle:"交付前确定性清洗"});(0,r.fx)(a.progressStages,c),(0,r.fx)(a.finalGateRepairStages,c)}})).anchors);let W=(0,p.fE)(a.finalMarkdown,{authorityIndex:a.blueprintData?(0,E.IV)(a.blueprintData):void 0,scheduleAuthority:a.scheduleAuthority,assemblyRateAuthority:a.assemblyRateAuthority,supportAuthority:a.supportAuthority,quantityAnchors:V});if(W.fixedCount>0&&(a.finalMarkdown=W.markdown),b.fixedCount>0||U.fixedCount>0||W.fixedCount>0){await a.recomputeFinalValidationBundle();let c=b.fixedCount+U.fixedCount+W.fixedCount,d=[...new Set([...b.details,...U.details,...W.details])],e=(0,r.X5)({type:"validation",roleId:"deterministic-consistency-fix",status:"success",message:`交付前确定性清洗:${c} 处(${d.slice(0,4).join("、")})`,details:d.slice(4)},{subtitle:"交付前确定性清洗"});(0,r.fx)(a.progressStages,e),(0,r.fx)(a.finalGateRepairStages,e)}let X=(0,z.K7)(a.finalMarkdown);if(X!==a.finalMarkdown){a.finalMarkdown=X,await a.recomputeFinalValidationBundle();let b=(0,r.X5)({type:"validation",roleId:"formal-source-clean",status:"success",message:"来源罗列话术确定性清洗兜底:最终成稿来源罗列残留已收敛"},{subtitle:"交付前确定性清洗"});(0,r.fx)(a.progressStages,b),(0,r.fx)(a.finalGateRepairStages,b)}}async function co(a){(await ch({chapterDraftsFinal:a.finalChapterDrafts,template:a.template,repairPromptTexts:a.repairPromptTexts,requirement:a.requirement,signal:a.signal,generationDiagnostics:a.generationDiagnostics,progressStages:a.progressStages,emitProgress:a.emitProgress,withProgressHeartbeat:a.withProgressHeartbeat,finalGateRepairStages:a.finalGateRepairStages,bidComposition:a.bidComposition})).plannedSectionFixApplied&&(a.finalMarkdown=a.rebuildFinalMarkdown(),await a.recomputeFinalValidationBundle());let b=(0,p.qj)(a.finalMarkdown);if(b!==a.finalMarkdown){a.finalMarkdown=b,await a.recomputeFinalValidationBundle();let c=(0,r.X5)({type:"validation",roleId:"commercial-strip",status:"success",message:"商务条款数据交付前兜底清洗:正文商务条款数据句已删除"},{subtitle:"评审后兜底"});(0,r.fx)(a.progressStages,c),(0,r.fx)(a.finalGateRepairStages,c)}let c=function(a){let b=a.split(/\r?\n/u),c=[],d=0,e=0;for(;e<b.length;){if(!/^\s*\|/u.test(b[e])){c.push(b[e]),e+=1;continue}let a=e;for(;a+1<b.length&&/^\s*\|/u.test(b[a+1]);)a+=1;let f=b2(b.slice(e,a+1));f.removed>0&&(d+=1),c.push(...f.lines),e=a+1}return{markdown:c.join("\n"),removed:d}}(a.finalMarkdown);if(c.markdown!==a.finalMarkdown){a.finalMarkdown=c.markdown,await a.recomputeFinalValidationBundle();let b=(0,r.X5)({type:"validation",roleId:"table-deterministic-repair",status:"success",message:c.removed>0?`表格空单元格交付前确定性修复:删除 ${c.removed} 块`:"表格空单元格交付前确定性修复:合计行填充类修复已落地"},{subtitle:"评审后兜底"});(0,r.fx)(a.progressStages,b),(0,r.fx)(a.finalGateRepairStages,b)}let d=(0,p.g4)(cl.aW.filter(a=>a.round2).map(b=>c=>b.fix(c,a.surfaceFixContext)),a.finalMarkdown,3);if(d.markdown!==a.finalMarkdown){a.finalMarkdown=d.markdown,await a.recomputeFinalValidationBundle();let b=(0,r.X5)({type:"validation",roleId:"post-review-surface",status:"success",message:`评审轮后表面修复兜底:确定性清洗 ${d.fixedCount} 处`},{subtitle:"评审后兜底"});(0,r.fx)(a.progressStages,b),(0,r.fx)(a.finalGateRepairStages,b)}let e=await (0,D.NR)(a.finalMarkdown);if(e!==a.finalMarkdown){a.finalMarkdown=e,await a.recomputeFinalValidationBundle();let b=(0,r.X5)({type:"validation",roleId:"terminology-strip",status:"success",message:"内部术语句子确定性删除兜底:正文残留内部术语已删除"},{subtitle:"评审后兜底"});(0,r.fx)(a.progressStages,b),(0,r.fx)(a.finalGateRepairStages,b)}let f=(0,p._D)(a.finalMarkdown);if(f.fixedCount>0){a.finalMarkdown=f.markdown,await a.recomputeFinalValidationBundle();let b=(0,r.X5)({type:"validation",roleId:"toc-consistency",status:"success",message:`目录与正文一致性兜底:按正文实际结构重建目录 ${f.fixedCount} 处`},{subtitle:"评审后兜底"});(0,r.fx)(a.progressStages,b),(0,r.fx)(a.finalGateRepairStages,b)}let g=await (0,af.eA)({markdown:a.finalMarkdown,chapters:a.finalChapterDrafts,assignments:a.requirementAssignments,signal:a.signal,diagnostics:a.generationDiagnostics});if(g.fixedCount>0){a.finalMarkdown=g.markdown,await a.recomputeFinalValidationBundle();let b=(0,r.X5)({type:"validation",roleId:"scoring-requirement-fix-final",status:"success",message:`评分项响应终检补写:${g.fixedCount} 条(${g.details.slice(0,3).join("、")})`,details:g.details.slice(3)},{subtitle:"评审后兜底"});(0,r.fx)(a.progressStages,b),(0,r.fx)(a.finalGateRepairStages,b)}}let cp=/(?:\d+(?:\.\d+)?\s*(?:W|kW|kV|V|A|Hz|mm|cm|m|km|kg|g|t|K|MPa|kN|℃|%|L|mL|s|h|min)\b|C\d{2,}|HRB\d+|HPB\d+|DN\s*\d+|Φ\s*\d+(?:\.\d+)?|φ\s*\d+(?:\.\d+)?|\d+(?:\.\d+)?\s*[×x*]\s*\d+(?:\.\d+)?)/giu;function cq(a){return[...new Set((a.match(cp)||[]).map(a=>a.replace(/\s+/gu,"").trim()))].filter(Boolean).slice(0,8)}function cr(a,b=[]){return[...new Set(`${a} ${b.join(" ")}`.match(/[\p{Script=Han}]{2,}|[A-Za-z0-9_-]{3,}/gu)||[])].filter(a=>a.length>=2)}let cs=/(?:\d+(?:\.\d+)?\s*(?:mm|cm|m|km|㎡|m²|m3|m³|kg|g|t|K|L|ml|MPa|kPa|kN|N|℃|%|台|套|座|个|项|批|次|份|人|小时|分钟|日历天|天|周|月|年|万元|元|W|kW|kV|V|A|Hz|米|处|道|根|盏|株|标段|层|樘|孔|眼|间|户|栋|幢|d)\b|DN\s*\d+|Φ\s*\d+(?:\.\d+)?|φ\s*\d+(?:\.\d+)?|C\d{2,}|HRB\d+|HPB\d+)/giu;function ct(a){return a.replace(/\s+/gu,"").toLowerCase()}function cu(a){return[...new Set((a.match(cs)||[]).map(ct))]}async function cv(a){let b=function(a){let b=new Set;for(let c of a.allEvidence)if(c.content)for(let a of cu((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 cu(`${a.name} ${a.description} ${a.quantity}${a.unit}`))b.add(c);for(let c of cq(a.description))b.add(ct(c));for(let c of a.specQuantityPairs)for(let a of(b.add(ct(c.spec)),cu(c.quantity)))b.add(a)}let d=a.input.blueprintData?.quantities;if(d)for(let[a,c]of Object.entries(d))for(let d of("number"==typeof c.value&&Number.isFinite(c.value)&&b.add(ct(`${c.value}${c.unit||""}`)),cu(a)))b.add(d);for(let c of[...a.structuredFacts||[],...a.factsModel?.preciseFacts||[]])for(let a of cu((0,e.lG)(c.value)))b.add(a);return b}(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(cs)??[]).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(cs)||[];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=cu(d);if(0===a.length||a.every(a=>b.has(a)))continue;let e=a.filter(a=>!b.has(a));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.slice(0,12))}let h=[...d.values()].reduce((a,b)=>a+b.length,0);if(0===h){let c=(0,r.X5)({type:"validation",roleId:"numeric-verification",status:"success",message:"正文数值确定性核对通过:全部正文数值均在资料原文/清单事实锁/蓝图参数桶中找到同值来源",details:[`数值权威库规模:${b.size} 个归一化 token`]},{subtitle:"数值确定性核对"});(0,r.fx)(a.progressStages,c),(0,r.fx)(a.finalGateRepairStages,c),a.emitProgress(a.finalChapterDrafts,a.progressStages);return}let i=0,j=0;for(let[b,e]of d){let d=a.finalChapterDrafts.findIndex(a=>a.id===b);if(d<0)continue;let g=a.finalChapterDrafts[d],h=g.content,k=e,l=c(h).length,m=0,n=!1,o=!1,p=[l];for(;k.length>0&&m<2;){m+=1;let e=(0,r.X5)({type:"llm_review",roleId:`agent-numeric-verification-${b}`,status:"running",message:`正文数值核对发现 ${k.length} 处疑似无来源数值,第 ${m} 轮定向修复中:${g.title}`,details:k.map(a=>`疑似:${a.sentence}(缺来源 token:${a.tokens.join("、")})`)},{subtitle:"数值确定性核对"});(0,r.fx)(a.progressStages,e),(0,r.fx)(a.finalGateRepairStages,e),a.emitProgress(a.finalChapterDrafts,a.progressStages);let i=["【正文数值定向核对修复】",...m>1?[`本轮为第 ${m} 轮(最多 2 轮):上一轮修复后仍有残留,无法确认来源的数值必须直接删除,禁止保留或替换为其他无来源数值。`]:[],"下列句子中的数值(标注「缺来源 token」)在项目绑定材料、工程量清单与蓝图中均找不到同值来源,属于疑似编造数值。请逐句核对并修复:","1. 若该数值在本章绑定证据中确实存在(仅表述口径不同),保持数值原样,只修正单位或表述;","2. 若该数值是行业通用工艺参数(如养护龄期、分层厚度),可按规范惯例保留并改为规范原文表述;","3. 其余情况必须删除该数值,改写为不带具体数值的过程控制表述(如「按设计要求」「分层碾压至压实度满足设计及规范要求」);","禁止把疑似数值替换为另一个同样无来源的数值;禁止改动句子的非数值部分;只做局部修改,不得新增、删除或合并小节。",k.map(a=>`- 疑似句:${a.sentence}(缺来源 token:${a.tokens.join("、")})`).join("\n")].join("\n"),j=await b$({originalContent:h,repairRound:"numeric-verification",diagnostics:a.generationDiagnostics,apply:async()=>{let b=await a.withProgressHeartbeat(()=>(0,f.l8)({template:a.template,chapter:{id:g.id,title:g.title,content:h,evidence:g.evidence,missingFacts:g.missingFacts,sections:g.sections},issues:k.map(a=>`疑似无来源数值:${a.sentence}(token:${a.tokens.join("、")})`),promptTexts:i,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!==h?b.content:h},recheck:a=>[c(a).length]});j.rolledBack||j.content===h||(h=j.content,a.finalChapterDrafts[d]={...g,content:h},n=!0),j.rolledBack&&(o=!0);let q=c(h).length;if(p.push(q),0===q||q>=l||m>=2)break;l=q,k=c(h).slice(0,12)}n&&(i+=1);let q=c(h).length;j+=q;let s=(0,r.X5)({type:"llm_review",roleId:`agent-numeric-verification-${b}`,status:0===q?"success":"failed",message:0===q?`数值核对修复完成:${g.title}(${e.length} 处疑似数值已处理,残留轨迹 ${p.join("→")})`:n?`数值核对修复部分生效:${g.title}(疑似数值残留轨迹 ${p.join("→")},已执行 ${m} 轮定向修复(每章最多 2 轮);残留项以 warning 记录,不阻断交付)`:o?`数值核对修复已回滚:${g.title}(修复后疑似数值增多,保留修复前正文;残留 ${q} 处以 warning 记录,不阻断交付)`:`数值核对修复未生效:${g.title}(模型未产生有效修改;残留 ${q} 处以 warning 记录,不阻断交付)`,details:[...e.map(a=>`疑似:${a.sentence}`),q>0?`已执行 ${m} 轮定向修复,残留项以 warning 记录,不阻断交付`:""]},{subtitle:"数值确定性核对"});(0,r.fx)(a.progressStages,s),(0,r.fx)(a.finalGateRepairStages,s),a.emitProgress(a.finalChapterDrafts,a.progressStages)}i>0&&(a.finalMarkdown=a.rebuildFinalMarkdown(),await a.recomputeFinalValidationBundle()),a.generationDiagnostics.llm.lastInfo=`正文数值确定性核对:权威库 ${b.size} token,${h} 处疑似无来源数值,${i} 章完成定向修复,残留 ${j} 处(每章最多 2 轮收敛修复,未收敛残留以 warning 记录,不阻断交付)`}async function cw(a){let b=a.requirementSemantics;if(!b||!b.parsed||0===(b.globalRequirements||[]).length&&0===(b.chapterRequirements||[]).length)return;let c=[...b.globalRequirements||[],...(b.chapterRequirements||[]).flatMap(a=>a.requirements)].filter(Boolean).length,d=(b,c,d)=>a.withProgressHeartbeat(()=>(0,bn.bb)('你是投标文档用户要求核验专家。逐条核对「用户要求」是否已在章节正文中落实。\n\n判定口径:正文存在明确满足该要求的实质性内容即算落实;仅泛泛提及、半句带过、被其他内容顶替均算未落实。\n\n不得因为正文有其他内容就降低标准;用户要求是最高优先级,未落实必须如实列入 unmet。\n\n只返回 JSON:{"satisfied":true/false,"unmet":["未落实要求原文"]}。',[`章节标题:${b}`,`用户要求(逐条核验):
53
53
  ${d.map((a,b)=>`${b+1}. ${a}`).join("\n")}`,`章节正文:
54
54
  ${c.slice(0,12e3)}`].filter(Boolean).join("\n\n"),{maxTokens:1200,temperature:0,signal:a.signal,diagnostics:a.generationDiagnostics,prefixKey:"requirement-verification"})),e=(c,d,e,g)=>{let h=["【用户要求定向补写修复】",...g>1?[`本轮为第 ${g} 轮(最多 2 轮):上一轮补写后复验仍判定未落实,请务必逐条直接补写实质性内容。`]:[],"下列用户要求经核验未在本章正文中落实。请逐条在正文最合适的位置补充落实,用户要求是最高优先级:","用户要求与系统默认规则冲突时以用户要求为准;已落实内容不得删除或改写;只做局部修改,不得新增、删除或合并小节。",d.map(a=>`- ${a}`).join("\n"),...b?.styleRequirements?.length?[`
55
55
  风格要求(补写内容同样必须遵守):
56
56
  ${b.styleRequirements.map(a=>`- ${a}`).join("\n")}`]:[]].join("\n"),i=[...new Set(d.flatMap(a=>a.match(/[\p{Script=Han}]{2,}|[A-Za-z]{3,}|\d+(?:\.\d+)?/gu)||[]).filter(Boolean))].slice(0,60),j=i.reduce((a,b)=>a+ +!!e.includes(b),0);return b$({originalContent:e,repairRound:"requirement-verification",diagnostics:a.generationDiagnostics,beforeMetrics:[j],apply:async()=>{let b=await a.withProgressHeartbeat(()=>(0,f.l8)({template:a.template,chapter:{id:c.id,title:c.title,content:e,evidence:c.evidence,missingFacts:c.missingFacts,sections:c.sections},issues:d.map(a=>`用户要求未落实:${a}`),promptTexts:h,requirement:a.requirement,forbidDrawingImages:!1,bidComposition:a.bidComposition,diagnostics:a.generationDiagnostics,signal:a.signal,patchGuard:(0,f.XG)("requirement-verification",a.generationDiagnostics)}));return b.content&&b.content!==e?b.content:e},recheck:a=>[i.reduce((b,c)=>b+ +!!a.includes(c),0)],shouldRollback:(a,b)=>b[0]<a[0]})},g=0,h=0,i=0;for(let b of a.finalChapterDrafts){let c,f=function(a,b){let c=a.requirementSemantics;if(!c)return[];let d=(c.chapterRequirements||[]).filter(a=>a.chapterTitle&&(b.includes(a.chapterTitle)||a.chapterTitle.includes(b))).flatMap(a=>a.requirements);return[...new Set([...c.globalRequirements||[],...d])].filter(Boolean).slice(0,24)}(a,b.title);if(0===f.length)continue;g+=1;let j=a.finalChapterDrafts.findIndex(a=>a.id===b.id);if(j<0)continue;let k=(0,r.X5)({type:"llm_review",roleId:`agent-requirement-verification-${b.id}`,status:"running",message:`用户要求执行核验:${b.title}(${f.length} 条要求)`,details:f.map(a=>`- ${a}`)},{subtitle:"用户要求核验"});(0,r.fx)(a.progressStages,k),(0,r.fx)(a.finalGateRepairStages,k),a.emitProgress(a.finalChapterDrafts,a.progressStages);let l=await d(b.title,b.content,f),m=Array.isArray(l?.unmet)?l.unmet.filter(Boolean).slice(0,12):[];if(!l||!0===l.satisfied||0===m.length){h+=1;let c=(0,r.X5)({type:"llm_review",roleId:`agent-requirement-verification-${b.id}`,status:"success",message:`用户要求核验通过:${b.title}(${f.length} 条要求全部落实)`,details:f.map(a=>`- ${a}`)},{subtitle:"用户要求核验"});(0,r.fx)(a.progressStages,c),(0,r.fx)(a.finalGateRepairStages,c),a.emitProgress(a.finalChapterDrafts,a.progressStages);continue}let n=b.content,o=m,p=m,q=0,s=!1,t=!1,u=!1,v="not-landed";for(;o.length>0&&q<2;){q+=1;let c=(0,r.X5)({type:"llm_review",roleId:`agent-requirement-verification-${b.id}`,status:"running",message:`用户要求定向补写中(第 ${q}/2 轮):${b.title}(${o.length} 条未落实)`,details:o.map(a=>`- ${a}`)},{subtitle:"用户要求核验"});(0,r.fx)(a.progressStages,c),(0,r.fx)(a.finalGateRepairStages,c),a.emitProgress(a.finalChapterDrafts,a.progressStages);let g=await e(b,o,n,q);if(g.rolledBack&&(t=!0),g.rolledBack||g.content===n){v="not-landed";break}if(n=g.content,a.finalChapterDrafts[j]={...b,content:n},s=!0,q>=2){v="limit";break}let h=await d(b.title,n,f),i=Array.isArray(h?.unmet)?h.unmet.filter(Boolean).slice(0,12):[];if(!h||!0===h.satisfied||0===i.length){u=!0,p=[],v="verified";break}if(p=i,i.length>=o.length){v="no-drop";break}o=i}s&&(i+=1),c=u?`用户要求核验闭环通过:${b.title}(${m.length} 条未落实要求经 ${q} 轮定向补写后复验全部落实)`:!s&&t?`用户要求补写已回滚:${b.title}(修复后要求关键词命中减少,保留修复前正文;残留 ${p.length} 条以 warning 记录,不阻断交付)`:s?"no-drop"===v?`用户要求补写部分生效:${b.title}(第 ${q} 轮补写后复验残留 ${p.length} 条未继续下降,停止继续修复;残留以 warning 记录,不阻断交付)`:"limit"===v?`用户要求补写部分生效:${b.title}(已执行 ${q} 轮定向补写,达最多 2 轮上限;末次复验残留 ${p.length} 条以 warning 记录,不阻断交付)`:`用户要求补写部分生效:${b.title}(第 ${q} 轮补写未落地(回滚或模型未修改),保留上一轮修复后正文;复验残留 ${p.length} 条以 warning 记录,不阻断交付)`:`用户要求补写未生效:${b.title}(模型未产生有效修改;残留 ${p.length} 条以 warning 记录,不阻断交付)`;let w=(0,r.X5)({type:"llm_review",roleId:`agent-requirement-verification-${b.id}`,status:u?"success":"failed",message:c,details:[...m.map(a=>`- ${a}`),...!u&&p.length>0?[`残留未落实 ${p.length} 条:${p.join(";")}`]:[]]},{subtitle:"用户要求核验"});(0,r.fx)(a.progressStages,w),(0,r.fx)(a.finalGateRepairStages,w),a.emitProgress(a.finalChapterDrafts,a.progressStages)}i>0&&(a.finalMarkdown=a.rebuildFinalMarkdown(),await a.recomputeFinalValidationBundle()),a.generationDiagnostics.llm.lastInfo=`用户要求执行核验闭环:${c} 条要求,核验 ${g} 章,${h} 章全部落实,${i} 章完成定向补写(每章最多 2 轮收敛修复,未收敛残留以 warning 记录,不阻断交付)`}function cx(a){return Math.max(0,Math.min(100,Math.round(a)))}async function cy(a){let b=await bE(a),c=a.reduce((a,b)=>a+(b.content.match(/本小节围绕|交底覆盖率按100%|24小时内形成整改责任|按施工准备→过程实施→检查验收→问题整改→资料归档的闭环组织|按作业条件确认→技术交底→过程实施|依据本项目已确认资料中的项目边界/gu)||[]).length,0),d=await (0,a3.Bt)(a.map(a=>a.content).join("\n")),e=400*Math.max(0,d.ratio-.1);return{score:cx(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 cz(a,b="",c={}){let d=function(a){let b=a.map(a=>`${a.title} ${(a.sections||[]).join(" ")} ${a.content}`).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=cx(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=new Set(b.match(bu.s2)||[]),d=new Set(b.match(/工程量|材料|设备|范围|流程|验收|检测|复试|调试|隐蔽|检验批|资料|记录|系统|部位|接口|规格|标准/gu)||[]),e=Math.max(1,b.length),f=c.size/(e/1e3);return{score:cx(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=new Set(b.match(bu.aX)||[]),d=Math.max(1,b.length),e=c.size/(d/1e3);return{score:cx(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===b.slice(1).filter(a=>a.replace(/\|/gu,"").replace(/[\s\-:]/gu,"").length>0).reduce((a,b)=>a+b.split("|").slice(1,-1).map(a=>(0,bt.jG)(a.trim())).filter(a=>""===a||"-"===a||"—"===a||"/"===a).length,0)&&(e+=1))}return{score:0===d?40:cx(e/d*100),detail:`表格 ${d} 个,其中字段完整 ${e} 个`}}(a,b),h=await cy(a),i=function(a){let b=bD(a);return{score:cx(100-20*b.length-20*b.filter(a=>"error"===a.level).length),detail:`重复段落问题 ${b.length} 项`}}(a),j=function(a,b=""){let c=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=>a.pattern.test(c)),f=d.filter(a=>!a.pattern.test(c));return{score:cx(e.length/d.length*100),detail:`招标硬性要求响应 ${e.length}/${d.length} 项${f.length?`(未响应:${f.map(a=>a.label).join("、")})`:""}`}}(a,b),k=[{key:"structure",label:"结构完整度",score:d.score,detail:d.detail,weight:.18},{key:"factLanding",label:"事实落位率",score:e.score,detail:e.detail,weight:.18},{key:"processParameter",label:"工艺参数密度",score:f.score,detail:f.detail,weight:.16},{key:"table",label:"表格完整度",score:g.score,detail:g.detail,weight:.12},{key:"filler",label:"废话控制",score:h.score,detail:h.detail,weight:.14},{key:"duplication",label:"重复控制",score:i.score,detail:i.detail,weight:.12},{key:"reviewResponse",label:"评标响应度",score:j.score,detail:j.detail,weight:.1}],l=cx(k.reduce((a,b)=>a+b.score*b.weight,0)),m=c.templating?.level==="heavy"?Math.min(l,54):c.templating?.level==="medium"?Math.min(l,69):l,n=m>=85?"专业":m>=70?"良好":m>=55?"合格":"待提升",o=[...bD(a),...await bE(a),...bG(a),...bH(a)].slice(0,5).map(a=>a.message),p=k.filter(a=>a.score<70).map(a=>`${a.label}(${a.score}分)`);return{total:m,grade:n,dimensions:k,summary:`施工组织设计专业度评分 ${m} 分(${n})${c.templating&&"light"!==c.templating.level?`;模板化等级:${"heavy"===c.templating.level?"重度":"中度"}(降档已生效)`:""}${p.length?`;待提升:${p.join("、")}`:""}`,topIssues:o}}async function cA(a){var b;if(!("heavy"===(b=a.templating).level||b.vagueHitCount>0||b.difficultyHeavyTemplated))return{issues:[],reviewed:!1};let c=(0,a3.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("、")}`:""}`,`待复核正文(节选):
57
- ${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,bn.bb)((0,z.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).slice(0,6):[],reviewed:!0}}catch{return{issues:[],reviewed:!1}}}async function cB(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,C.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;a.telemetry.qualityIssues.blockingCount=d,a.professionalScore=await cz(a.finalChapterDrafts,a.finalMarkdown,{templating:a.qualityBundle.qualityReport.templating}),a.templatingReview=a.qualityBundle.qualityReport.templating?await a.withProgressHeartbeat(()=>cA({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,r.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 e=a.qualityBundle.qualityReport.deliveryProbability<70;a.finalStages.push((0,r.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}${e?";置信度低于 70%,建议完成续修后再交付归档":"(导出门禁已通过,作为后续优化建议归档)"}`:a.qualityBundle.qualityReport.summary,details:e&&a.qualityBundle.finalExportGate.passed?[...a.qualityBundle.qualityReport.actions,"续修建议:交付置信度低于 70% 门槛,建议按交付复核清单补齐短板维度后重新生成或续修。"]:a.qualityBundle.qualityReport.actions},{subtitle:"交付评分"})),a.finalStages.push((0,r.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,r.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,r.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,r.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,r.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 f=(0,k._8)(a.generationDiagnostics.metrics),g=(0,k.bz)(a.generationDiagnostics.llm.callBreakdown),h=a.generationDiagnostics.factSanitize?`,事实净化 截断${a.generationDiagnostics.factSanitize.truncated}/丢弃${a.generationDiagnostics.factSanitize.dropped}/编号补全${a.generationDiagnostics.factSanitize.repaired}`:"";a.finalStages.push((0,r.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}${h}${f?`,Top耗时:${f}`:""}${g?`,调用输入Top5:${g}`:""}`,details:[...(0,k.Il)(a.generationDiagnostics.metrics),...(0,k.NJ)(a.generationDiagnostics.llm.callBreakdown)]},{subtitle:"后台诊断"}))}let cC={prefixCacheHitRateFloor:.4,budgetDropRatioCeiling:.3,llmFailureRateCeiling:.1};async function cD(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<cC.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>cC.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>cC.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,r.X5)({type:"validation",roleId:"document-health-diagnosis",status:"skipped",message:`自动健康诊断:${g.length} 项告警(不阻断,供配置优化参考)`,details:g},{subtitle:"健康诊断"}))}async function cE(a){(0,l.wF)();let{chapterDraftsByOrder:b,chapterGenerationStagesByOrder:c,chapterGenerationStages:d,effectiveChapters:e,input:f,hasExplicitOutline:m,failedChapterMessages:n}=a,{signal:o,requirement:q}=f,r=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,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,requirementsSimilarity:a.requirementsSimilarity,factTokenScopeClassifier:a.factTokenScopeClassifier,professionalDepthClassifier:a.professionalDepthClassifier,blueprintData:a.blueprintData,bidComposition:a.bidComposition,billFactLock:a.billFactLock,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,hasExplicitOutline:a.hasExplicitOutline,retrievalCoverageReports:a.retrievalCoverageReports,projectMaterialScope:a.projectMaterialScope,writingTaskBrief:a.writingTaskBrief,globalConsistencyIssues:a.globalConsistencyIssues,agentWorkflow:a.agentWorkflow,factExtractionPromptTexts:a.factExtractionPromptTexts,readiness:a.readiness,promptPlan:a.promptPlan,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),t=b.filter(a=>!!a);if(r.chapterDrafts=t,d.push(...c.filter(a=>!!a)),0===t.length)throw Error(`章节生成未完成:${n.join(";")||"没有生成任何有效章节"}`);if(m&&t.length<e.length)throw Error(`OUTLINE 指定 ${e.length} 章,实际只生成 ${t.length} 章:${n.join(";")||"部分章节未生成"}`);await s(r),await bX(r);let u=(0,A._C)(r.bidComposition),v=r.bidComposition?.formatRules.cover==="forbidden",w=(0,z.rs)((0,z.V3)({templateId:r.template.id,templateName:r.template.name,title:r.template.outputTitle,requirement:r.requirement||"",projectRoot:r.projectRoot,projectId:r.projectId,exportSettings:r.template.exportSettings,generationSettings:r.template.generationSettings,facts:r.facts,structuredFacts:r.structuredFacts,factsModel:r.factsModel,chapters:r.chapterDrafts,sources:r.sources,missingItems:[...new Set(r.missingItems)],validation:r.validation,validationIssues:r.validationIssues,executionStages:r.executionStages,exportGate:{passed:!1,blockingIssues:[],checklist:[]},assets:r.assets,partialChapters:r.chapterDrafts.map(a=>({id:a.id,title:a.title,chars:(0,h.V7)(a.content),status:(0,k.DR)(a,r.documentBudget.chapterTargets.get(a.id)),updatedAt:Date.now()})),checkpointChapters:r.chapterDrafts,generatedAt:Date.now()},{forbidDrawingImages:!1,promptRules:r.promptDocumentRules,bodyTableForbidden:u,coverForbidden:v}),r.chapterDrafts,{forbidDrawingImages:!1,promptRules:r.promptDocumentRules,bodyTableForbidden:u,coverForbidden:v});r.finalChapterDrafts=w.chapters.map(a=>{let b=r.effectiveChapters.find(b=>b.id===a.id)||a;return{...a,sections:a.sections||[],content:(0,k.w_)(a.content,b)}}),r.finalMarkdown=(0,z.rs)((0,z.V3)({templateId:r.template.id,templateName:r.template.name,title:r.template.outputTitle,requirement:r.requirement||"",projectRoot:r.projectRoot,projectId:r.projectId,exportSettings:r.template.exportSettings,generationSettings:r.template.generationSettings,facts:r.facts,structuredFacts:r.structuredFacts,factsModel:r.factsModel,chapters:r.finalChapterDrafts,sources:r.sources,missingItems:[...new Set(r.missingItems)],validation:r.validation,validationIssues:r.validationIssues,executionStages:r.executionStages,exportGate:{passed:!1,blockingIssues:[],checklist:[]},assets:r.assets,partialChapters:[],checkpointChapters:r.finalChapterDrafts,generatedAt:Date.now()},{forbidDrawingImages:!1,promptRules:r.promptDocumentRules,bodyTableForbidden:u,coverForbidden:v}),r.finalChapterDrafts,{forbidDrawingImages:!1,promptRules:r.promptDocumentRules,bodyTableForbidden:u,coverForbidden:v}).markdown,r.finalMarkdown=(0,p._D)((0,k.Ht)(bT((0,z.bR)((0,z.kT)((0,z.K7)(bK((0,k.jO)(r.finalMarkdown,r.structuredFacts,{bodyTableForbidden:u}),r.projectMaterialSummary)))),r.template))).markdown,r.finalMarkdown=(0,B.u7)(r.finalMarkdown,{plan:r.bidComposition?.appendixPlan||[],blueprintData:r.blueprintData}),await bZ(r),await b_(r),await cj(r),await ck(r),await cn(r),await cv(r),await cw(r),await co(r),await cB(r),await cD(r);let x=r.finalChapterDrafts.map(a=>({...a,evidence:(0,g.QR)(a.evidence||[],{preservePinned:!0})}));return r.finalChapterDrafts=x,{templateId:r.template.id,templateName:r.template.name,title:r.template.outputTitle,requirement:q||"",projectRoot:r.projectRoot,projectId:r.projectId,exportSettings:r.template.exportSettings,generationSettings:r.template.generationSettings,facts:r.facts,structuredFacts:r.structuredFacts,factsModel:r.factsModel,chapters:x,sources:r.sources,missingItems:[...new Set(r.missingItems)],validation:r.validation,validationIssues:r.validationIssues,exportGate:r.qualityBundle.finalExportGate,executionStages:r.finalStages,assets:r.assets,partialChapters:r.finalChapterDrafts.map(a=>({id:a.id,title:a.title,chars:(0,h.V7)(a.content),status:(0,k.DR)(a,r.documentBudget.chapterTargets.get(a.id)),updatedAt:Date.now()})),checkpointChapters:x,promptRules:r.promptDocumentRules,agentWorkflow:r.agentWorkflow,reviewMetadata:{chapterSummaries:[],globalIssues:[],diagnostics:r.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:r.template,chapters:e,requirement:q}),knowledgeCoverage:r.qualityBundle.knowledgeCoverage,factTraces:r.qualityBundle.factTraces,chapterCoverage:r.qualityBundle.chapterCoverage,retrievalCoverage:r.retrievalCoverageReports,qualityReport:r.qualityBundle.qualityReport,repairStrategies:r.qualityBundle.repairStrategies,reviewChecklist:r.reviewChecklist,professionalScore:r.professionalScore,templatingReviewIssues:r.templatingReview.issues,authorityAudit:r.authorityAuditReport,suspensionChecklist:r.suspensionChecklist??(r.qualityBundle.finalExportGate.passed?void 0:(0,i.aF)(r.qualityBundle.finalExportGate.blockingIssues,r.finalChapterDrafts)),writingTaskBrief:r.writingTaskBrief,workflowVersion:j.x,telemetry:r.telemetry},generatedAt:Date.now(),markdown:r.finalMarkdown,bidComposition:r.bidComposition}}var cF=c(71678),cG=c(29055);let cH=[{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"}],cI={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 cJ(a){return(0,aJ.GQ)(a).replace(/\s+/gu,"").toLowerCase()}function cK(a){return cJ(`${a.title} ${(a.sections||[]).join(" ")}`).slice(0,800)}function cL(a){var b;let c,d=(b=a.chapters,[...cH].map(a=>{let c=[],d=new Set;for(let e of b){let b=cJ(`${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=cH.find(b=>b.id===a.groupId);if(!b)continue;let c=g.findIndex(a=>{let c=cJ(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,aJ.GQ)(a).replace(/\s+/gu,"");return b.length>0&&b.length<=3&&/^[\u4e00-\u9fa5]+$/u.test(b)}(c)?c:b.title;!(0,cF.xb)(a)&&(d.sections.some(b=>cJ(b).includes(cJ(a))||cJ(a).includes(cJ(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(cJ(d)===cJ(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(cK);for(let{item:d}of(c=function(a,b,c){let d=[],e=a.map(cK);for(let a of b){let b=a.title;if(!b||e.some(a=>(function(a,b){let c=cJ(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,aJ.Fe)(c)||(0,aJ.ob)(c)||(0,cF.xb)(c))continue;let f=b.reduce((b,d,e)=>{let f=a.semanticSimilarity?a.semanticSimilarity(c,d):+!!d.includes(cJ(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=>cJ(a).includes(cJ(c))||cJ(c).includes(cJ(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,cG.y)(a))if("general"!==b)for(let a of cI[b]){let b=cJ(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=cJ(b.title);return a.chapterPatterns.some(a=>a.test(c))}),d=g[c>=0?c:0];(0,cF.xb)(a.title)||d.sections.push(a.title)}return{diagnostics:d,issues:e,enrichedChapters:g,criteriaAudit:c}}function cM(a){return a.replace(/\s+/gu,"").toLowerCase()}let cN=[{pattern:/概况|总体|理解|说明|编制/u,goal:"以项目资料已确认的事实卡片展开工程概况与总体理解,不得空泛概述",mustCover:["工程名称、建设地点、建设规模、计划工期、质量标准等资料已确认事实","现场条件与招标范围边界","编制依据与适用范围","B5 专业工程清单:资料识别的专业工程逐个展开(不少于 5 个,每个专业工程写明作业对象与工程量、工序顺序、施工方法三方面要素,落到工程量与工艺参数)"]},{pattern:/主要施工内容/u,goal:"按专业工程展开作业对象与工程量、工序顺序、施工方法三方面要素(呈现形式不限),落到工程量与工艺参数",mustCover:["资料识别的专业工程(不少于5个)","每个专业工程的作业对象与工程量/工序顺序/施工方法三方面要素","工程量、材料设备规格、检测验收与资料闭环"]},{pattern:/主要分部分项工程施工方案|主要施工方法/u,goal:"按分项工程方案展开作业对象与工程量、工序顺序、施工方法三方面要素(呈现形式不限),落到工艺参数与工序顺序",mustCover:["资料明确的专业工程范围(逐项展开分项工程方案)","每个分项方案的作业对象与工程量/工序顺序/施工方法三方面要素","每个分项方案不少于4个工艺参数与至少1处3环节以上工序顺序表达","工艺参数来自绑定材料或行业通用规范值,不得编造"]},{pattern:/重点|难点/u,goal:"识别项目重点难点并给出针对性对策,每项落到责任岗位与验收节点",mustCover:["重点难点成因与影响范围","对应施工内容与专项措施","责任岗位、检查频次、整改闭环"]},{pattern:/部署|总体|流水|顺序/u,goal:"明确施工部署逻辑、流水段划分与资源调配机制",mustCover:["施工区段与流水划分","各阶段施工顺序与穿插关系","资源动态调配机制"]},{pattern:/进度|工期/u,goal:"围绕总工期与关键节点展开进度保障",mustCover:["总进度计划与关键节点","周/日计划分解","进度偏差识别与纠偏措施"]},{pattern:/质量/u,goal:"覆盖材料验收、过程控制、隐蔽验收、整改复验的质量闭环",mustCover:["质量目标与验收依据","三检制度与样板引路","隐蔽工程验收与材料复试","质量通病防治与闭环整改","保修与缺陷责任期承诺"]},{pattern:/安全|危大|风险/u,goal:"覆盖风险识别、危大工程专项方案、检查整改与应急响应",mustCover:["危险源辨识与风险分级","危大工程清单与专项方案","安全交底与隐患排查闭环","B5 应急预案:应急组织架构、应急物资储备清单、专项预案与演练计划(演练频次量化,如每半年 1 次)"]},{pattern:/资源|材料|设备|劳动力|人材机/u,goal:"说明资源配置依据、进场验收与保管调配",mustCover:["机械设备投入计划","分阶段劳动力计划","材料进场计划与验收"]},{pattern:/文明|绿色|环保|扬尘|噪声/u,goal:"覆盖扬尘噪声管控、四节一环保与智慧监测",mustCover:["扬尘噪声分时段管控","四节一环保措施","监测预警与台账","B5 四节一环保量化指标:节水(非传统水源利用率/用水量控制)、节材(材料损耗率/废弃物回收率)、节地(土方平衡率)、节能(能耗指标)各至少 1 项带单位量化指标,附录八基准对照项逐项量化响应"]},{pattern:/应急|预案/u,goal:"覆盖应急组织、物资储备与专项预案",mustCover:["应急组织架构","应急物资储备","专项预案与演练计划"]},{pattern:/竣工|验收|移交|保修/u,goal:"覆盖竣工清理、验收移交与保修响应",mustCover:["竣工清理与垃圾外运","缺陷修补与复查销项","验收移交与保修响应"]},{pattern:/工资|劳务|实名/u,goal:"覆盖劳务实名制与农民工工资保障闭环",mustCover:["劳务实名制管理","工资专用账户与银行代发","考勤与工资支付台账"]}],cO=["【结构完整性红线】有序列表编号必须从「1.」起连续、不得跳号或重号,小节内列表独立起编、不得继承父级编号;编号后必须紧跟实质内容(禁止孤立编号);禁止双重冒号「::」「;:」「。:」等行尾标点残留;禁止句子中途截断(行尾无终止标点)与整段重复行;每个小节必须有实质正文,禁止只写标题的空小节","【表格规范红线】每张表只允许一个表头行(禁止重复表头),表名必须独立成行(禁止混入表头首格);数据行不得留空单元格;禁止用「—/若干/约/待定/暂无/待补充」等占位或模糊表达代替具体数据(合计行的「—」与规格型号列「机具无型号」的「—」除外);合计行数值必须可由明细行相加推导;列数与表头一致;说明性内容必须用段落承载,禁止用表格单元格堆砌正文","【数据口径红线(宁缺毋假)】同一指标(劳动力总数、机械台数、工期阶段划分、班组人数等)全文档只允许一套口径,禁止在不同章节或表格中并列矛盾数值;禁止自行取平均值、保守值、众数等在多套口径中盲选统一;无法从资料锁定唯一数值时不得写具体数值(改用定性表述或显式标注待核),严禁编造数值或将候选值随手择一写入","【禁止资料堆砌伪段落】禁止以「本项目主要施工内容包括:X的Y量为Z……」「经识别,本项目工程量为:……」式清单罗列句充当正文段落;禁止把资料条目用顿号/分号首尾相接拼成伪句子;每段必须是连贯的施工描述(含施工对象、工序逻辑、工艺做法、参数落位),工程量清单类明细如需呈现应使用规范表格,不得用罗列句复制表格内容","【工期时序与分批口径红线】时间表述必须符合施工时序逻辑:前期准备动作(施工方案编制报审、图纸会审、交底、考察、封样、检测、培训演练、采购调查等)的完成时限必须落在施工准备阶段内,禁止出现「开工令下发后第 N 日内」且 N 达到或超过总工期的写法(等同于把前期动作排到竣工日);机械、设备、劳动力分批进场表述(首批/剩余/补充进场)各批次数量必须能合计推导为进场总数且与资源配置表同口径,禁止分批数量与总数互相矛盾"];var cP=c(30355),cQ=c(2773),cR=c(38115),cS=c(31129);async function cT(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();for(let b=0;b<a.planning.effectiveChapters.length;b+=a.blueprint.chapterConcurrency){let c=a.planning.effectiveChapters.slice(b,b+a.blueprint.chapterConcurrency);for(let d of(await Promise.all(c.map(async(c,d)=>{let g,i=b+d;(0,e.Te)(a.global.input.signal);let j=a.understanding.rolePoolRisk??bj({totalChunks:0,loadedChunks:0,vectorReady:void 0}),l=a.blueprint.blueprintActive?{missing:[],failedChecks:[]}:(0,q.RT)(c.title,a.blueprint.integratedBlueprint?.validation,a.planning.chapterIntentClassifier);if(l.missing.length>0){let b=l.failedChecks.length>0?`蓝图校验项「${l.failedChecks.join("、")}」未通过`:"蓝图校验未通过或构建异常";throw a.global.progressStages.push((0,r.X5)({type:"chapter_generation",roleId:"chapter_generation",status:"failed",message:`${(0,aJ.GQ)(c.title)} 依赖蓝图权威 [${l.missing.join("、")}],${b},已按节点级把关阻断生成`,details:["数值密集型章所需蓝图权威不可用时禁止无权威成稿","请检查清单解析与蓝图构建诊断后重试"],progress:{current:i+1,total:a.planning.effectiveChapters.length,label:"章节阻断"}},{subtitle:(0,aJ.GQ)(c.title),order:i})),a.global.emitProgress(),Error(`${(0,aJ.GQ)(c.title)} 依赖蓝图权威 [${l.missing.join("、")}],${b},已按节点级把关阻断生成`)}let s=Date.now(),t=a.global.progressStages.length;try{let b,d;a.global.progressStages.push((0,r.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:a.prepare.promptPlan.writerPrompts[0]?.id,status:"running",message:`${(0,aJ.GQ)(c.title)} 正在检索证据并准备章节内容`,details:[`章节序号:${i+1}/${a.planning.effectiveChapters.length}`,`二级小节:${c.sections?.length||0} 个`,"正在生成检索查询"],progress:{current:i+1,total:a.planning.effectiveChapters.length,label:"章节生成"}},{subtitle:(0,aJ.GQ)(c.title),order:i})),a.global.emitProgress();let u=a.global.input.resumeChapters?.find(a=>a.id===c.id||a.title===c.title),v=u?.content?.trim(),w=u?.evidence?.length?[...u.evidence]:[],x=a.prepare.projectUnderstanding.chapterPlans.find(a=>a.chapterId===c.id||a.chapterTitle===c.title),y=x?Object.values(x.evidenceQueries).flat().filter(Boolean):[],B=c.queries.length>0?c.queries:[a.prepare.template.name,a.prepare.template.outputTitle,c.title],D=a.understanding.chapterGraphMap.get(c.id);if(a.understanding.projectGraph&&D&&D.graphFiles.size>0){let b=[...a.understanding.availableEvidenceScopePaths],d=a=>b.includes(a)?a:b.find(b=>b.endsWith(a)||b.includes(a));for(let b of[...D.graphFiles].map(a=>d(a)||a).filter(b=>(0,f.Tz)(a.prepare.projectRoot,b,a.understanding.availableEvidenceScopePaths))){let d=a.understanding.getCachedFileDetail(b);if(d?.chunks?.length)for(let e of d.chunks)w.push({chapterId:c.id,filePath:d.file?.relativePath||b,score:5+(D.graphWorks.length+D.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 F=a.planning.chapterIntentClassifier.needsBasicFacts(c.title),G=a.blueprint.billFactLock?(()=>{let b=cr(c.title,c.sections||[]);return a.blueprint.billFactLock.entries.filter(a=>a.name&&b.some(b=>a.name.includes(b)||a.description.includes(b)||a.section.includes(b))).slice(0,6).map(a=>`${a.name} ${a.description} ${a.quantity}${a.unit}`.trim().slice(0,80))})():[],H=(0,k.QP)(c,[...B,...y,...G],[]),I=Date.now();a.global.progressStages[t]=(0,r.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:a.prepare.promptPlan.writerPrompts[0]?.id,status:"running",message:`${(0,aJ.GQ)(c.title)} 正在执行质量优先的章节检索${D?.graphFiles.size?`(图谱匹配 ${D.graphFiles.size} 个文件)`:""}`,details:H.map(a=>`检索:${a.slice(0,42)}`),progress:{current:i+1,total:a.planning.effectiveChapters.length,label:"证据检索"}},{subtitle:(0,aJ.GQ)(c.title),order:i}),a.global.emitProgress();let J=v?[]:[...a.understanding.availableEvidenceScopePaths].filter(Boolean).sort(),K=v?[]:a.understanding.scopedIntelligence?.evidenceByChapterId?.[c.id]||[];K.length>0&&w.push(...K);let L=[],M=(c.requiredFacts||[]).filter(a=>!!a&&!H.some(b=>b.includes(a)||a.includes(b))).map(a=>`${c.title} ${a}`),N=(a.prepare.requirementSemantics?.factClues||[]).filter(a=>!H.some(b=>b.includes(a)||a.includes(b))&&!M.some(b=>b.includes(a)||a.includes(b))).map(a=>`${c.title} ${a}`.trim()).slice(0,8),O=[...H,...M,...N];if(J.length>0&&O.length>0){(0,e.Te)(a.global.input.signal);let b=await (0,e.l$)(O,async b=>a.understanding.searchWithCache(b,J,Math.min(a.understanding.requestedEvidencePerChapter,12),c.title),{kind:"search"});L.push(...b)}for(let b of(a.planning.generationDiagnostics.evidence.searchQueries+=O.length,a.planning.generationDiagnostics.evidence.searchMs+=Date.now()-I,a.global.progressStages[t]=(0,r.X5)({type:"chapter_generation",roleId:"chapter_generation",status:"running",message:`${(0,aJ.GQ)(c.title)} KB 检索完成:${O.length} 组查询,准备深度召回与语义排序`,progress:{current:i+1,total:a.planning.effectiveChapters.length,label:"证据检索"}},{subtitle:(0,aJ.GQ)(c.title),order:i}),a.global.emitProgress(),L))w.push(...b.filter(b=>(0,f.Tz)(a.prepare.projectRoot,b.filePath,a.understanding.evidenceScopePaths)).map(b=>({chapterId:c.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})));F&&J.length>0&&a.blueprint.basicFactSearchResults.length>0&&w.push(...a.blueprint.basicFactSearchResults.filter(b=>(0,f.Tz)(a.prepare.projectRoot,b.filePath,a.understanding.evidenceScopePaths)).map(b=>({chapterId:c.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 P=v?[]:await (0,cQ.$b)({manager:a.understanding.manager,projectRoot:a.prepare.projectRoot,chapter:c,plan:x,profile:a.prepare.projectMaterialProfile,scopedFilePaths:J,limitPerQuery:Math.min(a.understanding.requestedEvidencePerChapter,10),signal:a.global.input.signal}).catch(()=>[]);w.push(...P);let Q=new Set((c.pinnedEvidenceFilePaths||[]).filter(Boolean)),R=[];a.planning.chapterIntentClassifier.needsBasicFacts(c.title)&&w.push(...a.understanding.safeProjectBasicEvidence.map(a=>({...a,chapterId:c.id,source:"pinned-evidence"})));let S=a.understanding.writerEvidence.filter(a=>/招标|投标须知|评标办法|专用合同条款|投标人须知/u.test(`${a.filePath||""}${a.sectionTitle||""}`));for(let b of(/概况|工程|项目|总体|部署/u.test(c.title)&&S.length>0&&w.push(...S.map(a=>({...a,chapterId:c.id,source:"pinned-evidence"}))),new Set([...Q]))){if(!(0,f.Tz)(a.prepare.projectRoot,b,a.understanding.evidenceScopePaths))continue;let d=Q.has(b),e=a.understanding.getCachedFileDetail(b);e&&w.push(...e.chunks.map(b=>({chapterId:c.id,filePath:e.file.relativePath,score:1,content:b.content,roleId:a.understanding.fileRoleByPath.get(e.file.relativePath),processingType:a.understanding.fileProcessingByPath.get(e.file.relativePath),sectionTitle:b.sectionTitle,source:d?"pinned-evidence":"bound-file"})))}let T=w.filter(b=>(0,f.Tz)(a.prepare.projectRoot,b.filePath,a.understanding.availableEvidenceScopePaths));if(!v&&a.prepare.webAccessConfig.enabled&&a.prepare.webAccessConfig.allowProjectFacts){let b=await $({config:a.prepare.webAccessConfig,chapterId:c.id,chapterTitle:c.title,sectionTitles:c.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}let U=v?[]:(0,cQ.SK)({project:a.understanding.project,chapter:c,plan:x,profile:a.prepare.projectMaterialProfile,scopedFilePaths:J,highRisk:j.highRisk});U.length>0&&T.push(...U),T=(0,m.Su)(T,a.understanding.projectMaterialScope),a.understanding.excludedEvidenceKeys.size>0&&(T=T.filter(b=>!a.understanding.excludedEvidenceKeys.has((0,cF.hM)(b))));let V=(()=>{let a=Number(process.env.DOCUMENT_SEMANTIC_TOP_CANDIDATES);return Number.isFinite(a)&&a>0?Math.floor(a):3e3})(),W=(0,k.Mz)(c,T,V),X=await (0,ae.Mv)([cK(c)],W.map(k.t7)),Y=(0,k.UG)(c,T,{preservePinned:!0,semantic:{similarity:X,queryText:cK(c)}},a.planning.generationDiagnostics);Y=(0,o.pm)(Y,a.understanding.canonicalFacts.scopeConflicts),(0,m.U2)(Y,a.understanding.projectMaterialScope,`chapter:${c.id}:initial`);let Z=c.requiredFacts.filter(a=>!Y.some(b=>(0,bh.Lk)(b,a))),_=0,aa=(0,A._C)(a.understanding.bidComposition),ab=D?[D.graphWorks.length?`图谱识别本章工程内容:${D.graphWorks.join("、")}`:"",D.graphMethods.length?`图谱识别本章施工方法:${D.graphMethods.join("、")}`:"",D.graphBoqItems.length?`图谱识别本章BOQ清单项(${D.graphBoqItems.length}项):${D.graphBoqItems.map(a=>`${a.name} ${a.quantity}${a.unit}`).join("、")}`:"",D.gaps.length?`图谱识别本章资料缺口:${D.gaps.join(";")}`:""].filter(Boolean).join("\n"):"",ac=(0,o.Bf)(a.understanding.canonicalFacts.scopeConflicts),ad=a.planning.requirementsRoutes.length>0?(()=>{let b=(0,af.NT)(c.title),d=a.planning.requirementsRoutes.filter(a=>a.chapterTitle===b);return 0===d.length?"":["【本章必须显性响应的招标要求(逐条写入正文,零响应即评标失分)】",...d.map(a=>`- ${a.kind}:${a.item.text}`)].join("\n")})():"",ag=a.planning.chapterIntentClassifier.needsDustControl(c.title)||a.planning.chapterIntentClassifier.needsDustControl(`${c.title}${c.purpose||""}`)?"【扬尘治理六个百分百——规范固定条目,必须逐项落实并写入正文,每项一句具体措施,六项不得缺项;若本项目无拆迁工程,对“拆迁工地100%湿法作业”必须显性写明“本项目无拆迁工程,不涉及拆迁工地湿法作业”,不得省略】\n- 施工工地周边100%围挡\n- 物料堆放100%覆盖\n- 出入车辆100%冲洗\n- 施工现场地面100%硬化\n- 拆迁工地100%湿法作业\n- 渣土车辆100%密闭运输":"",ah=(c.sections||[]).filter(a=>!/^(?:施工概况|施工流程|施工方法)$/u.test(a.trim())&&!/^附录/u.test(a.trim())),ai=ah.length>0?`【必须输出以下规划小节为三级标题(### 小节名),逐个小节展开正式正文:每小节正文不少于 100 字,不得只写标题、不得空小节、不得用表格替代正文;小节名与章标题相同或相近也必须输出,不得省略或合并】${ah.join("、")}`:"",aj=a.blueprint.billFactLock?function(a,b,c={}){if(!a||0===a.entries.length)return"";let d=/清单|工程量|主要施工内容|主要施工方法|主要分部分项|资源配置|材料|物资/u.test(b),e=Math.max(1,c.maxEntries??(d?120:60)),f=Math.max(1,c.maxChars??(d?9e3:6e3)),g=cr(b,c.sections||[]),h=a.entries.map(a=>({entry:a,score:function(a,b){let c=`${a.name} ${a.description} ${a.section} ${a.subsection}`;return b.reduce((a,b)=>a+ +!!c.includes(b),0)}(a,g)})).sort((a,b)=>b.score-a.score||a.entry.seq-b.entry.seq).map(a=>a.entry).slice(0,e),i=[],j=0;for(let a of h){let b=a.specQuantityPairs.length>0?` [${a.specQuantityPairs.map(a=>`${a.spec} ${a.quantity}`).join(";")}]`:"",c=`${a.seq}. ${a.name}${a.description?`(${a.description})`:""}:${a.quantity}${a.unit}${a.section?`|${a.section}`:""}${b}`;if(j+c.length+1>f)break;i.push(c),j+=c.length+1}return 0===i.length?"":["【工程量清单事实锁——确定性权威数据(逐项照抄,不得改动或重新分配)】",`清单来源:${a.sourceFile.split("/").pop()}(${a.totalEntries} 条目,本节锁定 ${i.length} 条)`,"清单给出规格-数量拆分的必须逐项照抄原值(如 100W 109套、120W 9套),不得自行拆分或重新分配;清单只给总量的不得自行拆分;同一规格-数量拆分在全文各章必须一致。",...i].join("\n")}(a.blueprint.billFactLock,c.title,{sections:c.sections||[]}):"",ak=function(a,b){let c=b.indexOf(a),d=(a,b)=>`${(0,aJ.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")}(c,a.planning.effectiveChapters),al=[ab,ad,ai,ak,ag,ac.length?`【数据口径强制约束】${ac.join(";")}`:"",...cO,x?.writingGoal,x?.mustCover?.length?`本章必须覆盖:${x.mustCover.join("、")}`:"",x?.mustUseMaterialKinds?.length?`本章优先使用资料类型:${x.mustUseMaterialKinds.join("、")}`:"",aj].filter(Boolean).join("\n"),am=(0,k.C_)(a.prepare.promptPlan,c);if(a.prepare.promptPlan.writerPrompts.length>0&&!am.primaryWriter)throw Error(`${(0,aJ.GQ)(c.title)} 写作主控提示词未进入章节生成阶段`);let an=[am.promptTexts,a.prepare.generationControlPrompt].filter(Boolean).join("\n\n"),ao=am.promptDetails.length?am.promptDetails:["未绑定章节写作提示词"],ap=(0,n.rC)({template:a.prepare.template,chapter:c,spec:a.prepare.documentSpec,profile:a.prepare.domainProfile,promptTexts:an,requirement:a.global.input.requirement,plan:x?{requiredContents:x.mustCover,evidenceNeeds:Object.values(x.evidenceQueries).flat()}:void 0}),aq=(0,n.ji)({needs:ap,factsModel:a.understanding.preliminaryFactsModel,evidence:T,profile:a.prepare.domainProfile,excludedEvidenceKeys:a.understanding.excludedEvidenceKeys}),ar=aq.filter(a=>a.need.required&&"satisfied"!==a.status).map(a=>a.need.label),as=function(a){let b=(a.chapter.requiredFacts||[]).filter(b=>!a.evidence.some(a=>cM(`${a.sectionTitle||""}${a.content||""}`).includes(cM(b)))),c=a.evidence.length<3?["章节证据数量不足"]:[],d=b.length+c.length,e=d>=5?"high":d>=2?"medium":"low",f="high"===e?"evidence_first":b.length>0?"section_first":"normal";return{chapterId:a.chapter.id,chapterTitle:a.chapter.title,canGenerate:!0,riskLevel:e,missingFacts:b,missingEvidence:c,suggestedStrategy:f,reason:0===d?"章节事实与证据满足常规生成条件。":`识别到 ${d} 项生成前缺口,按 ${f} 策略生成。`}}({chapter:c,evidence:Y}),at=new Set(Y.map(a=>a.filePath)).size,au=!!D&&(D?.graphFiles.size||0)>=8&&at>=6&&0===Z.length&&"low"===as.riskLevel,av=function(a){let b=a.evidenceFileCount<=2;return a.scopedFileCount>80?b:"evidence_first"===a.suggestedStrategy||a.highRisk||a.missingFactsCount>0||a.requiredMissingNeedsCount>0||b||a.evidenceCount<8&&"low"!==a.riskLevel}({scopedFileCount:J.length,evidenceCount:Y.length,evidenceFileCount:at,suggestedStrategy:as.suggestedStrategy,highRisk:j.highRisk,missingFactsCount:Z.length,requiredMissingNeedsCount:ar.length,riskLevel:as.riskLevel});if(!au&&av&&J.length>0){let b=new Set([...Z,...ar]).size;b>0&&(a.global.progressStages[t]=(0,r.X5)({type:"chapter_generation",roleId:"chapter_generation",status:"running",message:`${(0,aJ.GQ)(c.title)} 正在深度召回缺失事实证据(${b} 项需求)`,progress:{current:i+1,total:a.planning.effectiveChapters.length,label:"深度召回"}},{subtitle:(0,aJ.GQ)(c.title),order:i}),a.global.emitProgress());let d=await bk({manager:a.understanding.manager,projectRoot:a.prepare.projectRoot,chapter:c,scopedFilePaths:J,fileRoleByPath:a.understanding.fileRoleByPath,fileProcessingByPath:a.understanding.fileProcessingByPath,requiredNeeds:[...new Set([...Z,...ar])],extraClues:a.prepare.requirementSemantics?.factClues||[],highRisk:j.highRisk||ar.length>0,signal:a.global.input.signal}).catch(()=>[]);_=d.length,d.length>0&&(T=[...T,...(0,m.Su)(d,a.understanding.projectMaterialScope)],a.understanding.excludedEvidenceKeys.size>0&&(T=T.filter(b=>!a.understanding.excludedEvidenceKeys.has((0,cF.hM)(b)))),Y=(0,k.UG)(c,T,{preservePinned:!0},a.planning.generationDiagnostics),Y=(0,o.pm)(Y,a.understanding.canonicalFacts.scopeConflicts),(0,m.U2)(Y,a.understanding.projectMaterialScope,`chapter:${c.id}:deep`),Z=c.requiredFacts.filter(a=>!Y.some(b=>(0,bh.Lk)(b,a)))),ar=(aq=(0,n.ji)({needs:ap,factsModel:a.understanding.preliminaryFactsModel,evidence:T,profile:a.prepare.domainProfile,excludedEvidenceKeys:a.understanding.excludedEvidenceKeys})).filter(a=>a.need.required&&"satisfied"!==a.status).map(a=>a.need.label),a.global.progressStages[t]=(0,r.X5)({type:"chapter_generation",roleId:"chapter_generation",status:"running",message:`${(0,aJ.GQ)(c.title)} 深度召回完成:命中 ${_} 条${ar.length>0?`,仍缺 ${ar.length} 项(触发轻量补充)`:""}`,progress:{current:i+1,total:a.planning.effectiveChapters.length,label:"证据检索"}},{subtitle:(0,aJ.GQ)(c.title),order:i}),a.global.emitProgress()}if(ar.length>0&&J.length>0){let b=(0,m.Su)(await bk({manager:a.understanding.manager,projectRoot:a.prepare.projectRoot,chapter:c,scopedFilePaths:J,fileRoleByPath:a.understanding.fileRoleByPath,fileProcessingByPath:a.understanding.fileProcessingByPath,requiredNeeds:ar,extraClues:a.prepare.requirementSemantics?.factClues||[],highRisk:!0,signal:a.global.input.signal}).catch(()=>[]),a.understanding.projectMaterialScope);b.length>0&&(T=[...T,...b],a.understanding.excludedEvidenceKeys.size>0&&(T=T.filter(b=>!a.understanding.excludedEvidenceKeys.has((0,cF.hM)(b)))),Y=(0,k.UG)(c,T,{preservePinned:!0},a.planning.generationDiagnostics),Y=(0,o.pm)(Y,a.understanding.canonicalFacts.scopeConflicts),(0,m.U2)(Y,a.understanding.projectMaterialScope,`chapter:${c.id}:supplemental`),Z=c.requiredFacts.filter(a=>!Y.some(b=>(0,bh.Lk)(b,a))),ar=(aq=(0,n.ji)({needs:ap,factsModel:a.understanding.preliminaryFactsModel,evidence:T,profile:a.prepare.domainProfile,excludedEvidenceKeys:a.understanding.excludedEvidenceKeys})).filter(a=>a.need.required&&"satisfied"!==a.status).map(a=>a.need.label))}for(let b of((0,m.U2)(Y,a.understanding.projectMaterialScope,`chapter:${c.id}:writer-session.global.input`),0===Y.length&&a.understanding.missingItems.push(`${c.title}:缺少可支撑正文的项目资料证据`),Z))a.understanding.missingItems.push(`${c.title}:事实需求未满足 ${b}`);let aw=(0,r.X5)({type:"knowledge_retrieval",roleId:"knowledge-base",status:a.understanding.allEvidence.length>0?"success":"failed",message:`已检索/绑定 ${a.understanding.allEvidence.length} 条证据`});a.understanding.knowledgeBaseStageIndex<0?a.understanding.knowledgeBaseStageIndex=(0,r.fx)(a.global.progressStages,aw):a.global.progressStages[a.understanding.knowledgeBaseStageIndex]={...aw,order:a.global.progressStages[a.understanding.knowledgeBaseStageIndex]?.order??aw.order},a.global.emitProgress(),(0,e.Te)(a.global.input.signal);let ax=new Map,ay=b=>{let d=(0,e.c6)({kind:"section",query:`${c.title} ${b}`.trim(),scopedFilePaths:J}),f=ax.get(d);if(f)return Promise.resolve(f);let g=(0,bm.Ym)(b,c,Y),h=g.filter(a=>bu.AM.test(a.content)).length;return g.length>=4&&h>=1?(ax.set(d,g),Promise.resolve(g)):(0,k.hW)({manager:a.understanding.manager,projectRoot:a.prepare.projectRoot,chapter:c,sectionTitle:b,scopedFilePaths:J,fileRoleByPath:a.understanding.fileRoleByPath,fileProcessingByPath:a.understanding.fileProcessingByPath,signal:a.global.input.signal}).then(a=>(ax.set(d,a),a))},az=function(a){let b=a.chapter.sections?.length||0,c=(a.chapter.sections||[]).filter(b=>a.evidence.some(a=>(0,bh.Lk)(a,b)||`${a.sectionTitle||""} ${a.content}`.includes(b))).length,d=a.chapter.requiredFacts.length,e=a.chapter.requiredFacts.filter(b=>a.evidence.some(a=>(0,bh.Lk)(a,b))).length;return{chapterId:a.chapter.id,chapterTitle:a.chapter.title,risk:a.risk,evidenceCount:a.evidence.length,evidenceFiles:new Set(a.evidence.map(a=>a.filePath)).size,sectionCovered:c,sectionTotal:b,requiredFactCovered:e,requiredFactTotal:d}}({chapter:c,evidence:Y,risk:j});a.understanding.retrievalCoverageReports.push(az);let aA=new Set(Y.map(a=>a.filePath)),aB=Y.reduce((a,b)=>a+b.content.length,0),aC=[...j.highRisk?[`召回覆盖风险(${j.riskReason||"切片未完全预加载"}):已加载 ${j.loadedChunks}/${j.totalChunks},已启用深召回`]:[],`项目理解缓存证据:${K.length} 条`,`深召回证据:${_} 条`,`事实覆盖:${az.requiredFactCovered}/${az.requiredFactTotal}`,`小节覆盖:${az.sectionCovered}/${az.sectionTotal}`];a.global.progressStages[t]=(0,r.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:a.prepare.promptPlan.writerPrompts[0]?.id,status:"running",message:`${(0,aJ.GQ)(c.title)} 已选取 ${Y.length} 条高相关证据,正在生成正文`,details:[`使用绑定文件:${aA.size} 份`,`上下文字符:${aB}`,`检索查询:${H.length} 组`,...aC],progress:{current:i+1,total:a.planning.effectiveChapters.length,label:"正文生成"}},{subtitle:(0,aJ.GQ)(c.title),order:i}),a.global.emitProgress(),a.planning.generationDiagnostics.evidence.contextChars+=aB;let aD=(0,n.n9)(aq),aE=a.planning.chapterIntentClassifier.needsBasicFacts(c.title)?a.understanding.earlyFactPool.projectBasicFacts:[],aF=(0,bm.qX)((0,bm.hZ)({chapter:c,plan:void 0,spec:a.prepare.documentSpec,roleFacts:R,evidence:Y,missingFacts:Z,indexedFacts:[...aE,...aD],resolvedFactNeeds:aq,factNeedsPrompt:(0,n.GK)(aq),specAuthorityMap:a.understanding.preliminaryFactsModel.specAuthorityMap})),aG=(0,cP.up)({plan:a.planning.plannedDocument.plan,chapter:c,context:a.understanding.agentWorkflow,evidence:Y});if(a.understanding.agentWorkflow.chapterTasks=[...(a.understanding.agentWorkflow.chapterTasks||[]).filter(a=>a.chapterId!==c.id),aG.task],a.understanding.agentWorkflow.nodes.push(aG.node),(0,bl.cN)(a.understanding.agentWorkflow),(0,r.fx)(a.global.progressStages,(0,r.X5)({type:"validation",roleId:`agent-chapter-task-${c.id}`,status:aG.task.ready||v?"success":"failed",message:aG.task.ready?aG.node.outputSummary||`${(0,aJ.GQ)(c.title)} 章节任务规划完成`:v?`${(0,aJ.GQ)(c.title)} 章节任务未完全就绪,已复用已有正文并交由 Reviewer/Repairer 处理`:aG.node.outputSummary||`${(0,aJ.GQ)(c.title)} 章节任务规划完成`,details:aG.task.issues.map(a=>a.message)},{subtitle:"Agent Chapter Task Planner",order:a.global.progressStages.length})),a.global.emitProgress(a.global.chapterDrafts),!aG.task.ready&&!v)throw Error(`${(0,aJ.GQ)(c.title)} 章节任务未就绪:${aG.task.issues.map(a=>a.message).join(";")}`);let aH={total:aq.length,satisfied:aq.filter(a=>"satisfied"===a.status).length,missing:aq.filter(a=>"missing"===a.status).length,lowConfidence:aq.filter(a=>"low_confidence"===a.status).length};for(let b of ar)a.understanding.missingItems.push(`${c.title}:事实需求未确认 ${b}`);let aI=a.planning.documentBudget.chapterTargets.get(c.id)||1200,aK=c.sections?.filter(Boolean).length||0,aL=(0,k.gq)({budgetTarget:aI,sectionCount:aK,title:c.title,longformStrict:a.planning.documentBudget.longformStrict}),aM=Math.ceil(aL.maxWords*(a.planning.documentBudget.maxChars?1.05:1)),aN=(0,q.jM)(c.title,a.planning.chapterIntentClassifier).length>0,aO=(a.blueprint.blueprintActive||aN&&0===l.missing.length)&&a.blueprint.integratedBlueprint?(0,q.md)(a.blueprint.integratedBlueprint,c.title):void 0,aP=aO&&a.blueprint.integratedBlueprint?(0,q.uw)(aO,a.blueprint.integratedBlueprint.data):"",aQ=aL.roundTarget,aR=aK>0?a.planning.documentBudget.longformStrict?aQ:Math.min(aQ,Math.max(1800,aL.structureTarget)):aQ,aS=0,aT=b=>{let d=Date.now();if(d-aS<3e3)return;aS=d;let e=b.filter(Boolean).join("\n\n");e.trim()&&a.global.emitProgress([...a.global.chapterDrafts,{id:c.id,title:c.title,content:`## ${c.title}
57
+ ${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,bn.bb)((0,z.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).slice(0,6):[],reviewed:!0}}catch{return{issues:[],reviewed:!1}}}async function cB(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,C.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;a.telemetry.qualityIssues.blockingCount=d,a.professionalScore=await cz(a.finalChapterDrafts,a.finalMarkdown,{templating:a.qualityBundle.qualityReport.templating}),a.templatingReview=a.qualityBundle.qualityReport.templating?await a.withProgressHeartbeat(()=>cA({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,r.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 e=a.qualityBundle.qualityReport.deliveryProbability<70;a.finalStages.push((0,r.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}${e?";置信度低于 70%,建议完成续修后再交付归档":"(导出门禁已通过,作为后续优化建议归档)"}`:a.qualityBundle.qualityReport.summary,details:e&&a.qualityBundle.finalExportGate.passed?[...a.qualityBundle.qualityReport.actions,"续修建议:交付置信度低于 70% 门槛,建议按交付复核清单补齐短板维度后重新生成或续修。"]:a.qualityBundle.qualityReport.actions},{subtitle:"交付评分"})),a.finalStages.push((0,r.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,r.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,r.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,r.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,r.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 f=(0,k._8)(a.generationDiagnostics.metrics),g=(0,k.bz)(a.generationDiagnostics.llm.callBreakdown),h=a.generationDiagnostics.factSanitize?`,事实净化 截断${a.generationDiagnostics.factSanitize.truncated}/丢弃${a.generationDiagnostics.factSanitize.dropped}/编号补全${a.generationDiagnostics.factSanitize.repaired}`:"";a.finalStages.push((0,r.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}${h}${f?`,Top耗时:${f}`:""}${g?`,调用输入Top5:${g}`:""}`,details:[...(0,k.Il)(a.generationDiagnostics.metrics),...(0,k.NJ)(a.generationDiagnostics.llm.callBreakdown)]},{subtitle:"后台诊断"}))}let cC={prefixCacheHitRateFloor:.4,budgetDropRatioCeiling:.3,llmFailureRateCeiling:.1};async function cD(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<cC.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>cC.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>cC.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,r.X5)({type:"validation",roleId:"document-health-diagnosis",status:"skipped",message:`自动健康诊断:${g.length} 项告警(不阻断,供配置优化参考)`,details:g},{subtitle:"健康诊断"}))}async function cE(a){(0,l.wF)();let{chapterDraftsByOrder:b,chapterGenerationStagesByOrder:c,chapterGenerationStages:d,effectiveChapters:e,input:f,hasExplicitOutline:m,failedChapterMessages:n}=a,{requirement:o}=f,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,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,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,hasExplicitOutline:a.hasExplicitOutline,retrievalCoverageReports:a.retrievalCoverageReports,projectMaterialScope:a.projectMaterialScope,writingTaskBrief:a.writingTaskBrief,globalConsistencyIssues:a.globalConsistencyIssues,agentWorkflow:a.agentWorkflow,factExtractionPromptTexts:a.factExtractionPromptTexts,readiness:a.readiness,promptPlan:a.promptPlan,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),r=b.filter(a=>!!a);if(q.chapterDrafts=r,d.push(...c.filter(a=>!!a)),0===r.length)throw Error(`章节生成未完成:${n.join(";")||"没有生成任何有效章节"}`);if(m&&r.length<e.length)throw Error(`OUTLINE 指定 ${e.length} 章,实际只生成 ${r.length} 章:${n.join(";")||"部分章节未生成"}`);await s(q),await bX(q);let t=(0,A._C)(q.bidComposition),u=q.bidComposition?.formatRules.cover==="forbidden",v=(0,z.rs)((0,z.V3)({templateId:q.template.id,templateName:q.template.name,title:q.template.outputTitle,requirement:q.requirement||"",projectRoot:q.projectRoot,projectId:q.projectId,exportSettings:q.template.exportSettings,generationSettings:q.template.generationSettings,facts:q.facts,structuredFacts:q.structuredFacts,factsModel:q.factsModel,chapters:q.chapterDrafts,sources:q.sources,missingItems:[...new Set(q.missingItems)],validation:q.validation,validationIssues:q.validationIssues,executionStages:q.executionStages,exportGate:{passed:!1,blockingIssues:[],checklist:[]},assets:q.assets,partialChapters:q.chapterDrafts.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:q.chapterDrafts,generatedAt:Date.now()},{forbidDrawingImages:!1,promptRules:q.promptDocumentRules,bodyTableForbidden:t,coverForbidden:u}),q.chapterDrafts,{forbidDrawingImages:!1,promptRules:q.promptDocumentRules,bodyTableForbidden:t,coverForbidden:u});q.finalChapterDrafts=v.chapters.map(a=>{let b=q.effectiveChapters.find(b=>b.id===a.id)||a;return{...a,sections:a.sections||[],content:(0,k.w_)(a.content,b)}}),q.finalMarkdown=(0,z.rs)((0,z.V3)({templateId:q.template.id,templateName:q.template.name,title:q.template.outputTitle,requirement:q.requirement||"",projectRoot:q.projectRoot,projectId:q.projectId,exportSettings:q.template.exportSettings,generationSettings:q.template.generationSettings,facts:q.facts,structuredFacts:q.structuredFacts,factsModel:q.factsModel,chapters:q.finalChapterDrafts,sources:q.sources,missingItems:[...new Set(q.missingItems)],validation:q.validation,validationIssues:q.validationIssues,executionStages:q.executionStages,exportGate:{passed:!1,blockingIssues:[],checklist:[]},assets:q.assets,partialChapters:[],checkpointChapters:q.finalChapterDrafts,generatedAt:Date.now()},{forbidDrawingImages:!1,promptRules:q.promptDocumentRules,bodyTableForbidden:t,coverForbidden:u}),q.finalChapterDrafts,{forbidDrawingImages:!1,promptRules:q.promptDocumentRules,bodyTableForbidden:t,coverForbidden:u}).markdown,q.finalMarkdown=(0,p._D)((0,k.Ht)(bT((0,z.bR)((0,z.kT)((0,z.K7)(bK((0,k.jO)(q.finalMarkdown,q.structuredFacts,{bodyTableForbidden:t}),q.projectMaterialSummary)))),q.template))).markdown,q.finalMarkdown=(0,B.u7)(q.finalMarkdown,{plan:q.bidComposition?.appendixPlan||[],blueprintData:q.blueprintData}),await bZ(q),await b_(q),await cj(q),await ck(q),await cn(q),await cv(q),await cw(q),await co(q),await cB(q),await cD(q);let w=q.finalChapterDrafts.map(a=>({...a,evidence:(0,g.QR)(a.evidence||[],{preservePinned:!0})}));return q.finalChapterDrafts=w,{templateId:q.template.id,templateName:q.template.name,title:q.template.outputTitle,requirement:o||"",projectRoot:q.projectRoot,projectId:q.projectId,exportSettings:q.template.exportSettings,generationSettings:q.template.generationSettings,facts:q.facts,structuredFacts:q.structuredFacts,factsModel:q.factsModel,chapters:w,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:w,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:e,requirement:o}),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 cF=c(71678),cG=c(29055);let cH=[{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"}],cI={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 cJ(a){return(0,aJ.GQ)(a).replace(/\s+/gu,"").toLowerCase()}function cK(a){return cJ(`${a.title} ${(a.sections||[]).join(" ")}`).slice(0,800)}function cL(a){var b;let c,d=(b=a.chapters,[...cH].map(a=>{let c=[],d=new Set;for(let e of b){let b=cJ(`${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=cH.find(b=>b.id===a.groupId);if(!b)continue;let c=g.findIndex(a=>{let c=cJ(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,aJ.GQ)(a).replace(/\s+/gu,"");return b.length>0&&b.length<=3&&/^[\u4e00-\u9fa5]+$/u.test(b)}(c)?c:b.title;!(0,cF.xb)(a)&&(d.sections.some(b=>cJ(b).includes(cJ(a))||cJ(a).includes(cJ(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(cJ(d)===cJ(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(cK);for(let{item:d}of(c=function(a,b,c){let d=[],e=a.map(cK);for(let a of b){let b=a.title;if(!b||e.some(a=>(function(a,b){let c=cJ(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,aJ.Fe)(c)||(0,aJ.ob)(c)||(0,cF.xb)(c))continue;let f=b.reduce((b,d,e)=>{let f=a.semanticSimilarity?a.semanticSimilarity(c,d):+!!d.includes(cJ(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=>cJ(a).includes(cJ(c))||cJ(c).includes(cJ(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,cG.y)(a))if("general"!==b)for(let a of cI[b]){let b=cJ(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=cJ(b.title);return a.chapterPatterns.some(a=>a.test(c))}),d=g[c>=0?c:0];(0,cF.xb)(a.title)||d.sections.push(a.title)}return{diagnostics:d,issues:e,enrichedChapters:g,criteriaAudit:c}}function cM(a){return a.replace(/\s+/gu,"").toLowerCase()}let cN=[{pattern:/概况|总体|理解|说明|编制/u,goal:"以项目资料已确认的事实卡片展开工程概况与总体理解,不得空泛概述",mustCover:["工程名称、建设地点、建设规模、计划工期、质量标准等资料已确认事实","现场条件与招标范围边界","编制依据与适用范围","B5 专业工程清单:资料识别的专业工程逐个展开(不少于 5 个,每个专业工程写明作业对象与工程量、工序顺序、施工方法三方面要素,落到工程量与工艺参数)"]},{pattern:/主要施工内容/u,goal:"按专业工程展开作业对象与工程量、工序顺序、施工方法三方面要素(呈现形式不限),落到工程量与工艺参数",mustCover:["资料识别的专业工程(不少于5个)","每个专业工程的作业对象与工程量/工序顺序/施工方法三方面要素","工程量、材料设备规格、检测验收与资料闭环"]},{pattern:/主要分部分项工程施工方案|主要施工方法/u,goal:"按分项工程方案展开作业对象与工程量、工序顺序、施工方法三方面要素(呈现形式不限),落到工艺参数与工序顺序",mustCover:["资料明确的专业工程范围(逐项展开分项工程方案)","每个分项方案的作业对象与工程量/工序顺序/施工方法三方面要素","每个分项方案不少于4个工艺参数与至少1处3环节以上工序顺序表达","工艺参数来自绑定材料或行业通用规范值,不得编造"]},{pattern:/重点|难点/u,goal:"识别项目重点难点并给出针对性对策,每项落到责任岗位与验收节点",mustCover:["重点难点成因与影响范围","对应施工内容与专项措施","责任岗位、检查频次、整改闭环"]},{pattern:/部署|总体|流水|顺序/u,goal:"明确施工部署逻辑、流水段划分与资源调配机制",mustCover:["施工区段与流水划分","各阶段施工顺序与穿插关系","资源动态调配机制"]},{pattern:/进度|工期/u,goal:"围绕总工期与关键节点展开进度保障",mustCover:["总进度计划与关键节点","周/日计划分解","进度偏差识别与纠偏措施"]},{pattern:/质量/u,goal:"覆盖材料验收、过程控制、隐蔽验收、整改复验的质量闭环",mustCover:["质量目标与验收依据","三检制度与样板引路","隐蔽工程验收与材料复试","质量通病防治与闭环整改","保修与缺陷责任期承诺"]},{pattern:/安全|危大|风险/u,goal:"覆盖风险识别、危大工程专项方案、检查整改与应急响应",mustCover:["危险源辨识与风险分级","危大工程清单与专项方案","安全交底与隐患排查闭环","B5 应急预案:应急组织架构、应急物资储备清单、专项预案与演练计划(演练频次量化,如每半年 1 次)"]},{pattern:/资源|材料|设备|劳动力|人材机/u,goal:"说明资源配置依据、进场验收与保管调配",mustCover:["机械设备投入计划","分阶段劳动力计划","材料进场计划与验收"]},{pattern:/文明|绿色|环保|扬尘|噪声/u,goal:"覆盖扬尘噪声管控、四节一环保与智慧监测",mustCover:["扬尘噪声分时段管控","四节一环保措施","监测预警与台账","B5 四节一环保量化指标:节水(非传统水源利用率/用水量控制)、节材(材料损耗率/废弃物回收率)、节地(土方平衡率)、节能(能耗指标)各至少 1 项带单位量化指标,附录八基准对照项逐项量化响应"]},{pattern:/应急|预案/u,goal:"覆盖应急组织、物资储备与专项预案",mustCover:["应急组织架构","应急物资储备","专项预案与演练计划"]},{pattern:/竣工|验收|移交|保修/u,goal:"覆盖竣工清理、验收移交与保修响应",mustCover:["竣工清理与垃圾外运","缺陷修补与复查销项","验收移交与保修响应"]},{pattern:/工资|劳务|实名/u,goal:"覆盖劳务实名制与农民工工资保障闭环",mustCover:["劳务实名制管理","工资专用账户与银行代发","考勤与工资支付台账"]}],cO=["【结构完整性红线】有序列表编号必须从「1.」起连续、不得跳号或重号,小节内列表独立起编、不得继承父级编号;编号后必须紧跟实质内容(禁止孤立编号);禁止双重冒号「::」「;:」「。:」等行尾标点残留;禁止句子中途截断(行尾无终止标点)与整段重复行;每个小节必须有实质正文,禁止只写标题的空小节","【表格规范红线】每张表只允许一个表头行(禁止重复表头),表名必须独立成行(禁止混入表头首格);数据行不得留空单元格;禁止用「—/若干/约/待定/暂无/待补充」等占位或模糊表达代替具体数据(合计行的「—」与规格型号列「机具无型号」的「—」除外);合计行数值必须可由明细行相加推导;列数与表头一致;说明性内容必须用段落承载,禁止用表格单元格堆砌正文","【数据口径红线(宁缺毋假)】同一指标(劳动力总数、机械台数、工期阶段划分、班组人数等)全文档只允许一套口径,禁止在不同章节或表格中并列矛盾数值;禁止自行取平均值、保守值、众数等在多套口径中盲选统一;无法从资料锁定唯一数值时不得写具体数值(改用定性表述或显式标注待核),严禁编造数值或将候选值随手择一写入","【禁止资料堆砌伪段落】禁止以「本项目主要施工内容包括:X的Y量为Z……」「经识别,本项目工程量为:……」式清单罗列句充当正文段落;禁止把资料条目用顿号/分号首尾相接拼成伪句子;每段必须是连贯的施工描述(含施工对象、工序逻辑、工艺做法、参数落位),工程量清单类明细如需呈现应使用规范表格,不得用罗列句复制表格内容","【工期时序与分批口径红线】时间表述必须符合施工时序逻辑:前期准备动作(施工方案编制报审、图纸会审、交底、考察、封样、检测、培训演练、采购调查等)的完成时限必须落在施工准备阶段内,禁止出现「开工令下发后第 N 日内」且 N 达到或超过总工期的写法(等同于把前期动作排到竣工日);机械、设备、劳动力分批进场表述(首批/剩余/补充进场)各批次数量必须能合计推导为进场总数且与资源配置表同口径,禁止分批数量与总数互相矛盾"];var cP=c(30355),cQ=c(2773),cR=c(38115),cS=c(31129);async function cT(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();for(let b=0;b<a.planning.effectiveChapters.length;b+=a.blueprint.chapterConcurrency){let c=a.planning.effectiveChapters.slice(b,b+a.blueprint.chapterConcurrency);for(let d of(await Promise.all(c.map(async(c,d)=>{let g,i=b+d;(0,e.Te)(a.global.input.signal);let j=a.understanding.rolePoolRisk??bj({totalChunks:0,loadedChunks:0,vectorReady:void 0}),l=a.blueprint.blueprintActive?{missing:[],failedChecks:[]}:(0,q.RT)(c.title,a.blueprint.integratedBlueprint?.validation,a.planning.chapterIntentClassifier);if(l.missing.length>0){let b=l.failedChecks.length>0?`蓝图校验项「${l.failedChecks.join("、")}」未通过`:"蓝图校验未通过或构建异常";throw a.global.progressStages.push((0,r.X5)({type:"chapter_generation",roleId:"chapter_generation",status:"failed",message:`${(0,aJ.GQ)(c.title)} 依赖蓝图权威 [${l.missing.join("、")}],${b},已按节点级把关阻断生成`,details:["数值密集型章所需蓝图权威不可用时禁止无权威成稿","请检查清单解析与蓝图构建诊断后重试"],progress:{current:i+1,total:a.planning.effectiveChapters.length,label:"章节阻断"}},{subtitle:(0,aJ.GQ)(c.title),order:i})),a.global.emitProgress(),Error(`${(0,aJ.GQ)(c.title)} 依赖蓝图权威 [${l.missing.join("、")}],${b},已按节点级把关阻断生成`)}let s=Date.now(),t=a.global.progressStages.length;try{let b,d;a.global.progressStages.push((0,r.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:a.prepare.promptPlan.writerPrompts[0]?.id,status:"running",message:`${(0,aJ.GQ)(c.title)} 正在检索证据并准备章节内容`,details:[`章节序号:${i+1}/${a.planning.effectiveChapters.length}`,`二级小节:${c.sections?.length||0} 个`,"正在生成检索查询"],progress:{current:i+1,total:a.planning.effectiveChapters.length,label:"章节生成"}},{subtitle:(0,aJ.GQ)(c.title),order:i})),a.global.emitProgress();let u=a.global.input.resumeChapters?.find(a=>a.id===c.id||a.title===c.title),v=u?.content?.trim(),w=u?.evidence?.length?[...u.evidence]:[],x=a.prepare.projectUnderstanding.chapterPlans.find(a=>a.chapterId===c.id||a.chapterTitle===c.title),y=x?Object.values(x.evidenceQueries).flat().filter(Boolean):[],B=c.queries.length>0?c.queries:[a.prepare.template.name,a.prepare.template.outputTitle,c.title],D=a.understanding.chapterGraphMap.get(c.id);if(a.understanding.projectGraph&&D&&D.graphFiles.size>0){let b=[...a.understanding.availableEvidenceScopePaths],d=a=>b.includes(a)?a:b.find(b=>b.endsWith(a)||b.includes(a));for(let b of[...D.graphFiles].map(a=>d(a)||a).filter(b=>(0,f.Tz)(a.prepare.projectRoot,b,a.understanding.availableEvidenceScopePaths))){let d=a.understanding.getCachedFileDetail(b);if(d?.chunks?.length)for(let e of d.chunks)w.push({chapterId:c.id,filePath:d.file?.relativePath||b,score:5+(D.graphWorks.length+D.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 F=a.planning.chapterIntentClassifier.needsBasicFacts(c.title),G=a.blueprint.billFactLock?(()=>{let b=cr(c.title,c.sections||[]);return a.blueprint.billFactLock.entries.filter(a=>a.name&&b.some(b=>a.name.includes(b)||a.description.includes(b)||a.section.includes(b))).slice(0,6).map(a=>`${a.name} ${a.description} ${a.quantity}${a.unit}`.trim().slice(0,80))})():[],H=(0,k.QP)(c,[...B,...y,...G],[]),I=Date.now();a.global.progressStages[t]=(0,r.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:a.prepare.promptPlan.writerPrompts[0]?.id,status:"running",message:`${(0,aJ.GQ)(c.title)} 正在执行质量优先的章节检索${D?.graphFiles.size?`(图谱匹配 ${D.graphFiles.size} 个文件)`:""}`,details:H.map(a=>`检索:${a.slice(0,42)}`),progress:{current:i+1,total:a.planning.effectiveChapters.length,label:"证据检索"}},{subtitle:(0,aJ.GQ)(c.title),order:i}),a.global.emitProgress();let J=v?[]:[...a.understanding.availableEvidenceScopePaths].filter(Boolean).sort(),K=v?[]:a.understanding.scopedIntelligence?.evidenceByChapterId?.[c.id]||[];K.length>0&&w.push(...K);let L=[],M=(c.requiredFacts||[]).filter(a=>!!a&&!H.some(b=>b.includes(a)||a.includes(b))).map(a=>`${c.title} ${a}`),N=(a.prepare.requirementSemantics?.factClues||[]).filter(a=>!H.some(b=>b.includes(a)||a.includes(b))&&!M.some(b=>b.includes(a)||a.includes(b))).map(a=>`${c.title} ${a}`.trim()).slice(0,8),O=[...H,...M,...N];if(J.length>0&&O.length>0){(0,e.Te)(a.global.input.signal);let b=await (0,e.l$)(O,async b=>a.understanding.searchWithCache(b,J,Math.min(a.understanding.requestedEvidencePerChapter,12),c.title),{kind:"search"});L.push(...b)}for(let b of(a.planning.generationDiagnostics.evidence.searchQueries+=O.length,a.planning.generationDiagnostics.evidence.searchMs+=Date.now()-I,a.global.progressStages[t]=(0,r.X5)({type:"chapter_generation",roleId:"chapter_generation",status:"running",message:`${(0,aJ.GQ)(c.title)} KB 检索完成:${O.length} 组查询,准备深度召回与语义排序`,progress:{current:i+1,total:a.planning.effectiveChapters.length,label:"证据检索"}},{subtitle:(0,aJ.GQ)(c.title),order:i}),a.global.emitProgress(),L))w.push(...b.filter(b=>(0,f.Tz)(a.prepare.projectRoot,b.filePath,a.understanding.evidenceScopePaths)).map(b=>({chapterId:c.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})));F&&J.length>0&&a.blueprint.basicFactSearchResults.length>0&&w.push(...a.blueprint.basicFactSearchResults.filter(b=>(0,f.Tz)(a.prepare.projectRoot,b.filePath,a.understanding.evidenceScopePaths)).map(b=>({chapterId:c.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 P=v?[]:await (0,cQ.$b)({manager:a.understanding.manager,projectRoot:a.prepare.projectRoot,chapter:c,plan:x,profile:a.prepare.projectMaterialProfile,scopedFilePaths:J,limitPerQuery:Math.min(a.understanding.requestedEvidencePerChapter,10),signal:a.global.input.signal}).catch(()=>[]);w.push(...P);let Q=new Set((c.pinnedEvidenceFilePaths||[]).filter(Boolean)),R=[];a.planning.chapterIntentClassifier.needsBasicFacts(c.title)&&w.push(...a.understanding.safeProjectBasicEvidence.map(a=>({...a,chapterId:c.id,source:"pinned-evidence"})));let S=a.understanding.writerEvidence.filter(a=>/招标|投标须知|评标办法|专用合同条款|投标人须知/u.test(`${a.filePath||""}${a.sectionTitle||""}`));for(let b of(/概况|工程|项目|总体|部署/u.test(c.title)&&S.length>0&&w.push(...S.map(a=>({...a,chapterId:c.id,source:"pinned-evidence"}))),new Set([...Q]))){if(!(0,f.Tz)(a.prepare.projectRoot,b,a.understanding.evidenceScopePaths))continue;let d=Q.has(b),e=a.understanding.getCachedFileDetail(b);e&&w.push(...e.chunks.map(b=>({chapterId:c.id,filePath:e.file.relativePath,score:1,content:b.content,roleId:a.understanding.fileRoleByPath.get(e.file.relativePath),processingType:a.understanding.fileProcessingByPath.get(e.file.relativePath),sectionTitle:b.sectionTitle,source:d?"pinned-evidence":"bound-file"})))}let T=w.filter(b=>(0,f.Tz)(a.prepare.projectRoot,b.filePath,a.understanding.availableEvidenceScopePaths));if(!v&&a.prepare.webAccessConfig.enabled&&a.prepare.webAccessConfig.allowProjectFacts){let b=await $({config:a.prepare.webAccessConfig,chapterId:c.id,chapterTitle:c.title,sectionTitles:c.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}let U=v?[]:(0,cQ.SK)({project:a.understanding.project,chapter:c,plan:x,profile:a.prepare.projectMaterialProfile,scopedFilePaths:J,highRisk:j.highRisk});U.length>0&&T.push(...U),T=(0,m.Su)(T,a.understanding.projectMaterialScope),a.understanding.excludedEvidenceKeys.size>0&&(T=T.filter(b=>!a.understanding.excludedEvidenceKeys.has((0,cF.hM)(b))));let V=(()=>{let a=Number(process.env.DOCUMENT_SEMANTIC_TOP_CANDIDATES);return Number.isFinite(a)&&a>0?Math.floor(a):3e3})(),W=(0,k.Mz)(c,T,V),X=await (0,ae.Mv)([cK(c)],W.map(k.t7)),Y=(0,k.UG)(c,T,{preservePinned:!0,semantic:{similarity:X,queryText:cK(c)}},a.planning.generationDiagnostics);Y=(0,o.pm)(Y,a.understanding.canonicalFacts.scopeConflicts),(0,m.U2)(Y,a.understanding.projectMaterialScope,`chapter:${c.id}:initial`);let Z=c.requiredFacts.filter(a=>!Y.some(b=>(0,bh.Lk)(b,a))),_=0,aa=(0,A._C)(a.understanding.bidComposition),ab=D?[D.graphWorks.length?`图谱识别本章工程内容:${D.graphWorks.join("、")}`:"",D.graphMethods.length?`图谱识别本章施工方法:${D.graphMethods.join("、")}`:"",D.graphBoqItems.length?`图谱识别本章BOQ清单项(${D.graphBoqItems.length}项):${D.graphBoqItems.map(a=>`${a.name} ${a.quantity}${a.unit}`).join("、")}`:"",D.gaps.length?`图谱识别本章资料缺口:${D.gaps.join(";")}`:""].filter(Boolean).join("\n"):"",ac=(0,o.Bf)(a.understanding.canonicalFacts.scopeConflicts),ad=(()=>{if(0===a.blueprint.requirementAssignments.length)return"";let b=(0,af.NT)(c.title),d=a.blueprint.requirementAssignments.filter(a=>a.chapterTitle===b).map(a=>a.entry);return(0,af.HF)(d)})(),ag=a.planning.chapterIntentClassifier.needsDustControl(c.title)||a.planning.chapterIntentClassifier.needsDustControl(`${c.title}${c.purpose||""}`)?"【扬尘治理六个百分百——规范固定条目,必须逐项落实并写入正文,每项一句具体措施,六项不得缺项;若本项目无拆迁工程,对“拆迁工地100%湿法作业”必须显性写明“本项目无拆迁工程,不涉及拆迁工地湿法作业”,不得省略】\n- 施工工地周边100%围挡\n- 物料堆放100%覆盖\n- 出入车辆100%冲洗\n- 施工现场地面100%硬化\n- 拆迁工地100%湿法作业\n- 渣土车辆100%密闭运输":"",ah=(c.sections||[]).filter(a=>!/^(?:施工概况|施工流程|施工方法)$/u.test(a.trim())&&!/^附录/u.test(a.trim())),ai=ah.length>0?`【必须输出以下规划小节为三级标题(### 小节名),逐个小节展开正式正文:每小节正文不少于 100 字,不得只写标题、不得空小节、不得用表格替代正文;小节名与章标题相同或相近也必须输出,不得省略或合并】${ah.join("、")}`:"",aj=a.blueprint.billFactLock?function(a,b,c={}){if(!a||0===a.entries.length)return"";let d=/清单|工程量|主要施工内容|主要施工方法|主要分部分项|资源配置|材料|物资/u.test(b),e=Math.max(1,c.maxEntries??(d?120:60)),f=Math.max(1,c.maxChars??(d?9e3:6e3)),g=cr(b,c.sections||[]),h=a.entries.map(a=>({entry:a,score:function(a,b){let c=`${a.name} ${a.description} ${a.section} ${a.subsection}`;return b.reduce((a,b)=>a+ +!!c.includes(b),0)}(a,g)})).sort((a,b)=>b.score-a.score||a.entry.seq-b.entry.seq).map(a=>a.entry).slice(0,e),i=[],j=0;for(let a of h){let b=a.specQuantityPairs.length>0?` [${a.specQuantityPairs.map(a=>`${a.spec} ${a.quantity}`).join(";")}]`:"",c=`${a.seq}. ${a.name}${a.description?`(${a.description})`:""}:${a.quantity}${a.unit}${a.section?`|${a.section}`:""}${b}`;if(j+c.length+1>f)break;i.push(c),j+=c.length+1}return 0===i.length?"":["【工程量清单事实锁——确定性权威数据(逐项照抄,不得改动或重新分配)】",`清单来源:${a.sourceFile.split("/").pop()}(${a.totalEntries} 条目,本节锁定 ${i.length} 条)`,"清单给出规格-数量拆分的必须逐项照抄原值(如 100W 109套、120W 9套),不得自行拆分或重新分配;清单只给总量的不得自行拆分;同一规格-数量拆分在全文各章必须一致。",...i].join("\n")}(a.blueprint.billFactLock,c.title,{sections:c.sections||[]}):"",ak=function(a,b){let c=b.indexOf(a),d=(a,b)=>`${(0,aJ.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")}(c,a.planning.effectiveChapters),al=[ab,ad,ai,ak,ag,ac.length?`【数据口径强制约束】${ac.join(";")}`:"",...cO,x?.writingGoal,x?.mustCover?.length?`本章必须覆盖:${x.mustCover.join("、")}`:"",x?.mustUseMaterialKinds?.length?`本章优先使用资料类型:${x.mustUseMaterialKinds.join("、")}`:"",aj].filter(Boolean).join("\n"),am=(0,k.C_)(a.prepare.promptPlan,c);if(a.prepare.promptPlan.writerPrompts.length>0&&!am.primaryWriter)throw Error(`${(0,aJ.GQ)(c.title)} 写作主控提示词未进入章节生成阶段`);let an=[am.promptTexts,a.prepare.generationControlPrompt].filter(Boolean).join("\n\n"),ao=am.promptDetails.length?am.promptDetails:["未绑定章节写作提示词"],ap=(0,n.rC)({template:a.prepare.template,chapter:c,spec:a.prepare.documentSpec,profile:a.prepare.domainProfile,promptTexts:an,requirement:a.global.input.requirement,plan:x?{requiredContents:x.mustCover,evidenceNeeds:Object.values(x.evidenceQueries).flat()}:void 0}),aq=(0,n.ji)({needs:ap,factsModel:a.understanding.preliminaryFactsModel,evidence:T,profile:a.prepare.domainProfile,excludedEvidenceKeys:a.understanding.excludedEvidenceKeys}),ar=aq.filter(a=>a.need.required&&"satisfied"!==a.status).map(a=>a.need.label),as=function(a){let b=(a.chapter.requiredFacts||[]).filter(b=>!a.evidence.some(a=>cM(`${a.sectionTitle||""}${a.content||""}`).includes(cM(b)))),c=a.evidence.length<3?["章节证据数量不足"]:[],d=b.length+c.length,e=d>=5?"high":d>=2?"medium":"low",f="high"===e?"evidence_first":b.length>0?"section_first":"normal";return{chapterId:a.chapter.id,chapterTitle:a.chapter.title,canGenerate:!0,riskLevel:e,missingFacts:b,missingEvidence:c,suggestedStrategy:f,reason:0===d?"章节事实与证据满足常规生成条件。":`识别到 ${d} 项生成前缺口,按 ${f} 策略生成。`}}({chapter:c,evidence:Y}),at=new Set(Y.map(a=>a.filePath)).size,au=!!D&&(D?.graphFiles.size||0)>=8&&at>=6&&0===Z.length&&"low"===as.riskLevel,av=function(a){let b=a.evidenceFileCount<=2;return a.scopedFileCount>80?b:"evidence_first"===a.suggestedStrategy||a.highRisk||a.missingFactsCount>0||a.requiredMissingNeedsCount>0||b||a.evidenceCount<8&&"low"!==a.riskLevel}({scopedFileCount:J.length,evidenceCount:Y.length,evidenceFileCount:at,suggestedStrategy:as.suggestedStrategy,highRisk:j.highRisk,missingFactsCount:Z.length,requiredMissingNeedsCount:ar.length,riskLevel:as.riskLevel});if(!au&&av&&J.length>0){let b=new Set([...Z,...ar]).size;b>0&&(a.global.progressStages[t]=(0,r.X5)({type:"chapter_generation",roleId:"chapter_generation",status:"running",message:`${(0,aJ.GQ)(c.title)} 正在深度召回缺失事实证据(${b} 项需求)`,progress:{current:i+1,total:a.planning.effectiveChapters.length,label:"深度召回"}},{subtitle:(0,aJ.GQ)(c.title),order:i}),a.global.emitProgress());let d=await bk({manager:a.understanding.manager,projectRoot:a.prepare.projectRoot,chapter:c,scopedFilePaths:J,fileRoleByPath:a.understanding.fileRoleByPath,fileProcessingByPath:a.understanding.fileProcessingByPath,requiredNeeds:[...new Set([...Z,...ar])],extraClues:a.prepare.requirementSemantics?.factClues||[],highRisk:j.highRisk||ar.length>0,signal:a.global.input.signal}).catch(()=>[]);_=d.length,d.length>0&&(T=[...T,...(0,m.Su)(d,a.understanding.projectMaterialScope)],a.understanding.excludedEvidenceKeys.size>0&&(T=T.filter(b=>!a.understanding.excludedEvidenceKeys.has((0,cF.hM)(b)))),Y=(0,k.UG)(c,T,{preservePinned:!0},a.planning.generationDiagnostics),Y=(0,o.pm)(Y,a.understanding.canonicalFacts.scopeConflicts),(0,m.U2)(Y,a.understanding.projectMaterialScope,`chapter:${c.id}:deep`),Z=c.requiredFacts.filter(a=>!Y.some(b=>(0,bh.Lk)(b,a)))),ar=(aq=(0,n.ji)({needs:ap,factsModel:a.understanding.preliminaryFactsModel,evidence:T,profile:a.prepare.domainProfile,excludedEvidenceKeys:a.understanding.excludedEvidenceKeys})).filter(a=>a.need.required&&"satisfied"!==a.status).map(a=>a.need.label),a.global.progressStages[t]=(0,r.X5)({type:"chapter_generation",roleId:"chapter_generation",status:"running",message:`${(0,aJ.GQ)(c.title)} 深度召回完成:命中 ${_} 条${ar.length>0?`,仍缺 ${ar.length} 项(触发轻量补充)`:""}`,progress:{current:i+1,total:a.planning.effectiveChapters.length,label:"证据检索"}},{subtitle:(0,aJ.GQ)(c.title),order:i}),a.global.emitProgress()}if(ar.length>0&&J.length>0){let b=(0,m.Su)(await bk({manager:a.understanding.manager,projectRoot:a.prepare.projectRoot,chapter:c,scopedFilePaths:J,fileRoleByPath:a.understanding.fileRoleByPath,fileProcessingByPath:a.understanding.fileProcessingByPath,requiredNeeds:ar,extraClues:a.prepare.requirementSemantics?.factClues||[],highRisk:!0,signal:a.global.input.signal}).catch(()=>[]),a.understanding.projectMaterialScope);b.length>0&&(T=[...T,...b],a.understanding.excludedEvidenceKeys.size>0&&(T=T.filter(b=>!a.understanding.excludedEvidenceKeys.has((0,cF.hM)(b)))),Y=(0,k.UG)(c,T,{preservePinned:!0},a.planning.generationDiagnostics),Y=(0,o.pm)(Y,a.understanding.canonicalFacts.scopeConflicts),(0,m.U2)(Y,a.understanding.projectMaterialScope,`chapter:${c.id}:supplemental`),Z=c.requiredFacts.filter(a=>!Y.some(b=>(0,bh.Lk)(b,a))),ar=(aq=(0,n.ji)({needs:ap,factsModel:a.understanding.preliminaryFactsModel,evidence:T,profile:a.prepare.domainProfile,excludedEvidenceKeys:a.understanding.excludedEvidenceKeys})).filter(a=>a.need.required&&"satisfied"!==a.status).map(a=>a.need.label))}for(let b of((0,m.U2)(Y,a.understanding.projectMaterialScope,`chapter:${c.id}:writer-session.global.input`),0===Y.length&&a.understanding.missingItems.push(`${c.title}:缺少可支撑正文的项目资料证据`),Z))a.understanding.missingItems.push(`${c.title}:事实需求未满足 ${b}`);let aw=(0,r.X5)({type:"knowledge_retrieval",roleId:"knowledge-base",status:a.understanding.allEvidence.length>0?"success":"failed",message:`已检索/绑定 ${a.understanding.allEvidence.length} 条证据`});a.understanding.knowledgeBaseStageIndex<0?a.understanding.knowledgeBaseStageIndex=(0,r.fx)(a.global.progressStages,aw):a.global.progressStages[a.understanding.knowledgeBaseStageIndex]={...aw,order:a.global.progressStages[a.understanding.knowledgeBaseStageIndex]?.order??aw.order},a.global.emitProgress(),(0,e.Te)(a.global.input.signal);let ax=new Map,ay=b=>{let d=(0,e.c6)({kind:"section",query:`${c.title} ${b}`.trim(),scopedFilePaths:J}),f=ax.get(d);if(f)return Promise.resolve(f);let g=(0,bm.Ym)(b,c,Y),h=g.filter(a=>bu.AM.test(a.content)).length;return g.length>=4&&h>=1?(ax.set(d,g),Promise.resolve(g)):(0,k.hW)({manager:a.understanding.manager,projectRoot:a.prepare.projectRoot,chapter:c,sectionTitle:b,scopedFilePaths:J,fileRoleByPath:a.understanding.fileRoleByPath,fileProcessingByPath:a.understanding.fileProcessingByPath,signal:a.global.input.signal}).then(a=>(ax.set(d,a),a))},az=function(a){let b=a.chapter.sections?.length||0,c=(a.chapter.sections||[]).filter(b=>a.evidence.some(a=>(0,bh.Lk)(a,b)||`${a.sectionTitle||""} ${a.content}`.includes(b))).length,d=a.chapter.requiredFacts.length,e=a.chapter.requiredFacts.filter(b=>a.evidence.some(a=>(0,bh.Lk)(a,b))).length;return{chapterId:a.chapter.id,chapterTitle:a.chapter.title,risk:a.risk,evidenceCount:a.evidence.length,evidenceFiles:new Set(a.evidence.map(a=>a.filePath)).size,sectionCovered:c,sectionTotal:b,requiredFactCovered:e,requiredFactTotal:d}}({chapter:c,evidence:Y,risk:j});a.understanding.retrievalCoverageReports.push(az);let aA=new Set(Y.map(a=>a.filePath)),aB=Y.reduce((a,b)=>a+b.content.length,0),aC=[...j.highRisk?[`召回覆盖风险(${j.riskReason||"切片未完全预加载"}):已加载 ${j.loadedChunks}/${j.totalChunks},已启用深召回`]:[],`项目理解缓存证据:${K.length} 条`,`深召回证据:${_} 条`,`事实覆盖:${az.requiredFactCovered}/${az.requiredFactTotal}`,`小节覆盖:${az.sectionCovered}/${az.sectionTotal}`];a.global.progressStages[t]=(0,r.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:a.prepare.promptPlan.writerPrompts[0]?.id,status:"running",message:`${(0,aJ.GQ)(c.title)} 已选取 ${Y.length} 条高相关证据,正在生成正文`,details:[`使用绑定文件:${aA.size} 份`,`上下文字符:${aB}`,`检索查询:${H.length} 组`,...aC],progress:{current:i+1,total:a.planning.effectiveChapters.length,label:"正文生成"}},{subtitle:(0,aJ.GQ)(c.title),order:i}),a.global.emitProgress(),a.planning.generationDiagnostics.evidence.contextChars+=aB;let aD=(0,n.n9)(aq),aE=a.planning.chapterIntentClassifier.needsBasicFacts(c.title)?a.understanding.earlyFactPool.projectBasicFacts:[],aF=(0,bm.qX)((0,bm.hZ)({chapter:c,plan:void 0,spec:a.prepare.documentSpec,roleFacts:R,evidence:Y,missingFacts:Z,indexedFacts:[...aE,...aD],resolvedFactNeeds:aq,factNeedsPrompt:(0,n.GK)(aq),specAuthorityMap:a.understanding.preliminaryFactsModel.specAuthorityMap})),aG=(0,cP.up)({plan:a.planning.plannedDocument.plan,chapter:c,context:a.understanding.agentWorkflow,evidence:Y});if(a.understanding.agentWorkflow.chapterTasks=[...(a.understanding.agentWorkflow.chapterTasks||[]).filter(a=>a.chapterId!==c.id),aG.task],a.understanding.agentWorkflow.nodes.push(aG.node),(0,bl.cN)(a.understanding.agentWorkflow),(0,r.fx)(a.global.progressStages,(0,r.X5)({type:"validation",roleId:`agent-chapter-task-${c.id}`,status:aG.task.ready||v?"success":"failed",message:aG.task.ready?aG.node.outputSummary||`${(0,aJ.GQ)(c.title)} 章节任务规划完成`:v?`${(0,aJ.GQ)(c.title)} 章节任务未完全就绪,已复用已有正文并交由 Reviewer/Repairer 处理`:aG.node.outputSummary||`${(0,aJ.GQ)(c.title)} 章节任务规划完成`,details:aG.task.issues.map(a=>a.message)},{subtitle:"Agent Chapter Task Planner",order:a.global.progressStages.length})),a.global.emitProgress(a.global.chapterDrafts),!aG.task.ready&&!v)throw Error(`${(0,aJ.GQ)(c.title)} 章节任务未就绪:${aG.task.issues.map(a=>a.message).join(";")}`);let aH={total:aq.length,satisfied:aq.filter(a=>"satisfied"===a.status).length,missing:aq.filter(a=>"missing"===a.status).length,lowConfidence:aq.filter(a=>"low_confidence"===a.status).length};for(let b of ar)a.understanding.missingItems.push(`${c.title}:事实需求未确认 ${b}`);let aI=a.planning.documentBudget.chapterTargets.get(c.id)||1200,aK=c.sections?.filter(Boolean).length||0,aL=(0,k.gq)({budgetTarget:aI,sectionCount:aK,title:c.title,longformStrict:a.planning.documentBudget.longformStrict}),aM=Math.ceil(aL.maxWords*(a.planning.documentBudget.maxChars?1.05:1)),aN=(0,q.jM)(c.title,a.planning.chapterIntentClassifier).length>0,aO=(a.blueprint.blueprintActive||aN&&0===l.missing.length)&&a.blueprint.integratedBlueprint?(0,q.md)(a.blueprint.integratedBlueprint,c.title):void 0,aP=aO&&a.blueprint.integratedBlueprint?(0,q.uw)(aO,a.blueprint.integratedBlueprint.data):"",aQ=aL.roundTarget,aR=aK>0?a.planning.documentBudget.longformStrict?aQ:Math.min(aQ,Math.max(1800,aL.structureTarget)):aQ,aS=0,aT=b=>{let d=Date.now();if(d-aS<3e3)return;aS=d;let e=b.filter(Boolean).join("\n\n");e.trim()&&a.global.emitProgress([...a.global.chapterDrafts,{id:c.id,title:c.title,content:`## ${c.title}
58
58
 
59
59
  ${e}`,evidence:Y,missingFacts:Z,sections:c.sections||[],tablePlans:c.tablePlans||[],inProgress:!0}])},aU=a=>{"complete"===a.phase&&a.partialSections&&aT(a.partialSections)};if(v)d=(0,k.w_)(v,c),d=await (0,k._k)(d,a.understanding.bidProcedureJudge),g=(0,r.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:am.primaryPromptId,status:"success",message:`${(0,aJ.GQ)(c.title)} 已复用已有章节正文:当前 ${(0,h.V7)(d)} 字,跳过 Writer,直接进入章节收口`,details:[`有效证据:${Y.length} 条`,`事实需求:${aH.satisfied}/${aH.total} 已满足,缺失 ${aH.missing},低置信 ${aH.lowConfidence}`,"来源:resumeChapters/checkpointChapters"],progress:{current:i+1,total:a.planning.effectiveChapters.length,label:"复用章节"}},{subtitle:(0,aJ.GQ)(c.title),order:i}),a.global.progressStages[t]=g,a.global.emitProgress(a.global.chapterDrafts);else{let g;a.global.progressStages[t]=(0,r.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:am.primaryPromptId,status:"running",message:`${(0,aJ.GQ)(c.title)} 正在规划主题块并准备并发成稿`,details:[...ao,`有效证据:${Y.length} 条`,`事实需求:${aH.satisfied}/${aH.total} 已满足,缺失 ${aH.missing},低置信 ${aH.lowConfidence}`,aL.label,`生成上限约 ${aM} 字`,`模板细目:${c.sections?.length||0} 条`,"先由章级 Planner 聚类为主题块并语义合并,再按主题块全并发出稿,避免逐小节碎片化"],progress:{current:i+1,total:a.planning.effectiveChapters.length,label:"主题块并发"}},{subtitle:(0,aJ.GQ)(c.title),order:i}),a.global.emitProgress();let h=async(a,b,c)=>{let d=await Promise.all(b.map(({block:b})=>(0,bm.nl)({...a,targetWords:b.targetWords,maxWords:Math.ceil(1.1*b.targetWords)},{blocks:[b],coveredSections:[],fallbackSections:[]}).then(a=>a?.markdown).catch(()=>void 0))),e=[...c];return b.forEach(({index:a},b)=>{let c=d[b];c&&(e[a]=c.replace(/^##\s+.+$/mu,"").trim())}),e},j=await a.global.withProgressHeartbeat(()=>(0,f.X6)(a.planning.generationDiagnostics,`chapter-plan:${c.id}`,async()=>(0,q.OY)({blueprintChapter:aO,inputSections:c.sections||[],chapterTitle:(0,aJ.GQ)(c.title),targetWords:aR,projectContext:a.planning.projectContext,evidence:Y}))),l=await a.global.withProgressHeartbeat(()=>(0,cR.G8)({chapterTitle:(0,aJ.GQ)(c.title),blocks:j.blocks.map(a=>({title:a.title,pointTitles:a.subPoints.map(a=>a.title)})),fingerprintPool:a.planning.fingerprintPool||(0,cS.$R)(),excludeDocumentId:a.global.input.diversitySeed,profile:a.planning.diversityProfile,signal:a.global.input.signal,diagnostics:a.planning.generationDiagnostics}));if(l.renamed>0&&(j={...j,blocks:j.blocks.map((a,b)=>({...a,title:l.titles[b]}))}),j.blocks.length>0){b=j;let d=[an,(0,cP.$8)(aG.task,j)].filter(Boolean).join("\n\n"),e=j.blocks.reduce((a,b)=>a+b.subPoints.length,0),k=j.blocks.reduce((a,b)=>a+b.subPoints.reduce((a,b)=>a+Math.max(0,b.sources.length-1),0),0),m=aO?j.fallbackSections.length>0?`(蓝图章切片确定性转换:${j.fallbackSections.length} 条细目由覆盖校验挂回主题块)`:"(蓝图章切片确定性转换:主题块来自蓝图小节/工作包)":"(蓝图未覆盖本章,已按语义域确定性分组)";a.global.progressStages[t]=(0,r.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:am.primaryPromptId,status:"running",message:`${(0,aJ.GQ)(c.title)} 已规划 ${j.blocks.length} 个主题块,正在按主题块并发成稿${m}`,details:[...ao,`有效证据:${Y.length} 条`,`输入细目 ${aK} 条 → 主题块 ${j.blocks.length} 个(每块 2~4 个 H4 要点)`,`语义合并 ${k} 条细目,目录级 H4 合计 ${e} 个`,"单块 1800~2800 字,主题块间全并发,单节深度与整体耗时双优",...l.summary?[l.summary]:[]],progress:{current:i+1,total:a.planning.effectiveChapters.length,label:"主题块并发"}},{subtitle:(0,aJ.GQ)(c.title),order:i});let n=a.global.progressStages.find(a=>a.roleId===`agent-chapter-task-${c.id}`);n&&(n.message=`${aG.task.sections.filter(a=>a.ready).length}/${aG.task.sections.length} 条细目任务就绪(已规划为 ${j.blocks.length} 个主题块)`),a.global.emitProgress(a.global.chapterDrafts);let o={template:a.prepare.template,chapter:c,evidence:Y,missingFacts:Z,promptTexts:d,projectContext:a.planning.chapterScopedProjectContext(c),skeletonProjectContext:a.planning.projectContext,requirement:a.global.input.requirement,roleContext:al,targetWords:aR,maxWords:aM,forbidDrawingImages:aa,bidComposition:a.understanding.bidComposition,factCoverageContext:aF,compactProjectContext:!0,scopedProjectContext:!0,blueprintData:a.blueprint.integratedBlueprint?.validation.passed?a.blueprint.integratedBlueprint.data:void 0,blueprintChapter:aO,blueprintMustCiteHint:aP,sectionEvidenceProvider:ay,onSectionProgress:aU,diagnostics:a.planning.generationDiagnostics,signal:a.global.input.signal},p=await a.global.withProgressHeartbeat(()=>(0,f.X6)(a.planning.generationDiagnostics,`chapter-planned-block-draft:${c.id}`,()=>(0,bm.nl)(o,j)));if(p?.allSucceeded)g=p.markdown;else if(p){let a=await h(o,p.failedBlocks,p.sections);a.every(a=>!!a)&&(g=`## ${c.title}
60
60
 
61
- ${a.join("\n\n")}`)}}if(g||(a.planning.generationDiagnostics.llm.lastError=a.planning.generationDiagnostics.llm.lastError||"全部成稿路径未返回有效正文"),g&&aO&&a.blueprint.integratedBlueprint){let b=(0,q.C8)(g,aO,a.blueprint.integratedBlueprint.data);b.fixed.length>0?(g=b.markdown,a.planning.generationDiagnostics.llm.lastInfo=`蓝图引用对齐:${c.title} 回填 ${b.fixed.length} 处(${b.fixed.map(a=>`${a.anchor} ${a.from}→${a.to}`).join("、")})${b.missing.length?`;未引用缺口 ${b.missing.length} 项:${b.missing.join("、")}`:""}`):b.missing.length>0&&(a.planning.generationDiagnostics.llm.lastInfo=`蓝图引用缺口观测:${c.title} 未在正文引用 ${b.missing.length} 项 must_cite 参数(${b.missing.slice(0,6).join("、")}${b.missing.length>6?" 等":""}),由跨章一致性审查兑底`)}if(g&&a.blueprint.integratedBlueprint){let b=(0,p.Pl)(g,(0,E.i2)(a.blueprint.integratedBlueprint.data));if(b.fixedCount>0){g=b.markdown;let d=a.planning.generationDiagnostics.llm.lastInfo;a.planning.generationDiagnostics.llm.lastInfo=`${d?`${d};`:""}阶段劳动力口径对齐:${c.title} 回填 ${b.fixedCount} 处(${b.details.join("、")})`}}if((0,e.Te)(a.global.input.signal),!g){let b=a.planning.generationDiagnostics.llm.lastError||"空响应或超时",d=`${(0,aJ.GQ)(c.title)} 正文未达到成稿要求,已阻断生成(${b.slice(0,160)})`;throw a.global.progressStages[t]=(0,r.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:am.primaryPromptId,status:"failed",message:d,details:[`阻断归因:${b}`,`证据条数:${Y.length}`],progress:{current:i+1,total:a.planning.effectiveChapters.length,label:"章节阻断"}},{subtitle:(0,aJ.GQ)(c.title),order:i}),a.global.emitProgress(a.global.chapterDrafts),Error(d)}if(!g.trim())throw Error(`${(0,aJ.GQ)(c.title)} 首次生成失败,未获得可用于定稿的正文`);let m=b&&b.blocks.length>0?b.blocks.map(a=>a.title):(c.sections||[]).filter(Boolean),n=b&&b.blocks.length>0?b.blocks.flatMap(a=>a.subPoints.map(a=>a.title)):[],o=g;m.length>0&&(o=(0,e.Ww)(o,m,3)),n.length>0&&(o=(0,e.Ww)(o,n,4)),d=(0,k.w_)(o,c),d=await (0,k._k)(d,a.understanding.bidProcedureJudge)}let aV=await bo({chapter:c,content:d,evidence:Y}),aW=(0,h.V7)(d),aX=(0,z.r4)(d),aY=b&&b.blocks.length>0?b.blocks.map(a=>a.title):(c.sections||[]).filter(Boolean),aZ=aY.filter((a,b)=>a!==aY[b-1]),a$=aZ.length>0?aZ:aX.length>0?aX:[],a_=(0,C.qK)(d,[{title:c.title,content:d,sections:a$}]).map(a=>a.message),a0=aV.slice(0,6).map(a=>`小节事实密度需优化:${a}`),a1=[...a_,...a0],a2=(0,k.md)(aW,aQ,a1);return g=(0,r.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:am.primaryPromptId,status:a2,message:(0,r.AQ)(`${(0,aJ.GQ)(c.title)} 已由大模型成稿:当前 ${aW} 字;章节预算约 ${aL.budgetTarget} 字,本轮目标约 ${aL.roundTarget} 字${a1.length?`;待优化:${a1.slice(0,8).join("、")}`:""}`,s),details:[`本轮完成率:${Math.round(aW/Math.max(1,aL.roundTarget)*100)}%`,`结构目标约 ${aL.structureTarget} 字`,...ao,`二级小节:${a$.length} 个`],progress:{current:i+1,total:a.planning.effectiveChapters.length,label:a1.length?"章节已生成":"章节达标"}},{subtitle:(0,aJ.GQ)(c.title),order:i}),a.understanding.chapterGenerationStagesByOrder[i]=g,async()=>{let b={id:c.id,title:c.title,content:d,evidence:Y,missingFacts:Z,sections:a$,tablePlans:c.tablePlans||[]};a.understanding.chapterDraftsByOrder[i]=b,a.global.chapterDrafts=a.understanding.chapterDraftsByOrder.filter(a=>!!a),a.global.emitProgress(a.global.chapterDrafts)}}catch(f){if(a.global.input.signal?.aborted)throw f;let b=a.planning.generationDiagnostics.llm.lastError,d=`failures=${a.planning.generationDiagnostics.llm.failures} retries=${a.planning.generationDiagnostics.llm.retries} reasoningTokens=${a.planning.generationDiagnostics.llm.reasoningTokens||0}`;console.error(`[gen] chapter ${c.title} failed:`,f,b?`| LLM lastError: ${b}`:"| LLM lastError: (none)","|",d);let e=`${c.title}:${f instanceof Error?f.message:"生成失败"}`;a.understanding.failedChapterMessages.push(e),g=(0,r.X5)({type:"chapter_generation",roleId:"chapter_generation",status:"failed",message:`${(0,aJ.GQ)(c.title)} 生成失败:${e}`,details:[`LLM 最近错误:${b||"无记录"}`,`LLM 调用失败 ${a.planning.generationDiagnostics.llm.failures} 次、重试 ${a.planning.generationDiagnostics.llm.retries} 次`]},{subtitle:(0,aJ.GQ)(c.title),order:i}),a.understanding.chapterGenerationStagesByOrder[i]=g}g&&(a.global.progressStages[t]=g),a.global.emitProgress(a.global.chapterDrafts)}))))d&&a.blueprint.reviewTaskPool.push(a.blueprint.reviewSemaphore.run(d))}await Promise.all(a.blueprint.reviewTaskPool),a.planning.generationDiagnostics.metrics.push({name:"phase:draft",startedAt:a.chapterLoop.draftPhaseStartedAt,endedAt:Date.now(),durationMs:Date.now()-a.chapterLoop.draftPhaseStartedAt}),a.chapterLoop.globalReviewPhaseStartedAt=Date.now(),a.chapterLoop.chapterDraftsFinal=a.understanding.chapterDraftsByOrder.filter(a=>!!a),a.understanding.chapterGenerationStages.push(...a.understanding.chapterGenerationStagesByOrder.filter(a=>!!a))}async function cU(a){let b=Math.round(([...a.planning.documentBudget.chapterTargets.values()].reduce((a,b)=>a+b,0)||a.planning.documentBudget.targetChars||0)/Math.max(1,a.planning.effectiveChapters.length)),c=(0,b0.z)().chapterConcurrency||0;a.blueprint.chapterConcurrency=a.planning.generationBudget.chapterConcurrency,a.blueprint.reviewConcurrency=a.planning.generationBudget.reviewConcurrency,(0,r.fx)(a.global.progressStages,(0,r.X5)({type:"validation",roleId:"chapter-concurrency",status:"success",message:`章节流水线调度:${a.planning.effectiveChapters.length} 章全部同批并行生成,审查修复 ${a.blueprint.reviewConcurrency} 路流水线(章节生成完立即进入审查,与后续章节生成重叠)`,details:[`有效章节数:${a.planning.effectiveChapters.length}`,`平均章节目标:${b} 字`,Number.isFinite(c)&&c>0?`章节并发来自 tuningProfile.chapterConcurrency=${Math.floor(c)}`:`全部章节并行生成,在飞调用不设并发上限;每章单轮修复(失败即放弃)`]},{subtitle:"章节流水线策略"})),a.global.emitProgress(),a.blueprint.reviewSemaphore=new e.jf(a.blueprint.reviewConcurrency),a.blueprint.reviewTaskPool=[];let d=[...a.understanding.availableEvidenceScopePaths].filter(Boolean).sort(),f=Date.now();a.blueprint.basicFactSearchResults=d.length>0?(await (0,e.l$)(k.xs,async b=>a.understanding.searchWithCache(b,d,Math.min(a.understanding.requestedEvidencePerChapter,12),""),{kind:"search"})).flat():[],a.planning.generationDiagnostics.evidence.searchQueries+=k.xs.length,a.planning.generationDiagnostics.evidence.searchMs+=Date.now()-f;let g=Date.now();try{a.blueprint.integratedBlueprint=(0,q.DL)({projectRoot:a.prepare.projectRoot,boundFilePaths:a.prepare.materialFilePaths,chapterTitles:a.planning.effectiveChapters.map(a=>a.title),templateName:a.prepare.template.name,basicFacts:(0,q.eT)(a.understanding.canonicalFacts),evidence:a.understanding.writerEvidence,facts:[...a.understanding.earlyFactPool.localFacts,...a.understanding.earlyFactPool.projectBasicFacts,...a.understanding.earlyFactPool.preciseFacts],composition:a.understanding.bidComposition,signal:a.global.input.signal,diagnostics:a.planning.generationDiagnostics});let b=(0,q.Fq)(a.prepare.projectRoot,a.blueprint.integratedBlueprint),c=a.blueprint.integratedBlueprint.outline.chapters.reduce((a,b)=>a+b.subSections.reduce((a,b)=>a+b.workPackages.length,0),0),d=a.understanding.bidComposition,e=d?`${"blind"===d.bidType?"暗标(正文禁表格/禁图片,图表转文末附表区)":"open"===d.bidType?"明标(正文可含表格)":"未识别勾选标记(按常规口径)"}${d.appendixPlan.length>0?`;文末附表 ${d.appendixPlan.length} 项`:""}`:"未识别(阶段 1 判定缺失,按常规口径)";(0,r.fx)(a.global.progressStages,(0,r.X5)({type:"validation",roleId:"integrated-blueprint",status:a.blueprint.integratedBlueprint.validation.passed?"success":"failed",message:a.blueprint.integratedBlueprint.validation.passed?`一体化蓝图已构建并落盘:清单 ${a.blueprint.integratedBlueprint.diagnostics.boq?.totalEntries??0} 条目、工作包 ${c} 个(校验通过,参数桶与章切片接管各章写作)`:`一体化蓝图已构建但校验未通过(参数桶不注入,不阻断生成):${a.blueprint.integratedBlueprint.validation.checks.filter(a=>!a.passed).map(a=>a.name).join("、")}`,details:[`耗时 ${Date.now()-g}ms`,`落盘:${b}`,`清单解析:${a.blueprint.integratedBlueprint.diagnostics.boq?`${a.blueprint.integratedBlueprint.diagnostics.boq.totalEntries} 条目 / ${a.blueprint.integratedBlueprint.diagnostics.boq.villageCount} 村 / 完整性校验${a.blueprint.integratedBlueprint.diagnostics.boq.complete?"通过":"未通过"}`:"未解析(见警告)"}`,`标书编制规格:${e}`,`校验链:${a.blueprint.integratedBlueprint.validation.checks.map(a=>`${a.name}${a.passed?"✓":"✗"}`).join(" / ")}`,...a.blueprint.integratedBlueprint.diagnostics.warnings.slice(0,6).map(a=>`警告:${a}`)]},{subtitle:"一体化蓝图"})),a.global.emitProgress()}catch(b){a.blueprint.integratedBlueprint=void 0,(0,r.fx)(a.global.progressStages,(0,r.X5)({type:"validation",roleId:"integrated-blueprint",status:"failed",message:`一体化蓝图构建异常(参数桶不注入,不阻断生成):${b instanceof Error?b.message:String(b)}`,details:[`耗时 ${Date.now()-g}ms`,"蓝图异常时参数桶与章切片不注入,各章按证据独立成稿"]},{subtitle:"一体化蓝图"})),a.global.emitProgress()}if(a.blueprint.integratedBlueprint)try{let b=(0,q.wY)({projectRoot:a.prepare.projectRoot,boundFilePaths:a.prepare.materialFilePaths});a.blueprint.billFactLock=function(a){let b=a.boq;if(b&&0!==b.totalEntries)return{entries:b.entries.map(a=>({seq:a.seq,name:String(a.name||"").trim(),description:String(a.description||"").trim(),quantity:a.quantity,unit:String(a.unit||"").trim(),section:String(a.section||"").trim(),subsection:String(a.subsection||"").trim(),villageGroup:String(a.villageGroup||"").trim(),sourceFile:a.sourceFile,specQuantityPairs:cq(a.description).map(b=>({spec:b,quantity:`${a.quantity}${a.unit}`}))})),totalEntries:b.totalEntries,sourceFile:b.sourceFile,complete:b.complete}}({boq:b.boq}),a.blueprint.billFactLock&&(a.planning.generationDiagnostics.llm.lastInfo=`清单事实锁:锁定 ${a.blueprint.billFactLock.totalEntries} 条目(完整性校验${a.blueprint.billFactLock.complete?"通过":"未通过"}),写作直读与数值核对轮生效`)}catch(b){console.error(`[blueprint] 清单事实锁构建失败(章节按证据独立成稿):${b instanceof Error?b.message:String(b)}`),a.blueprint.billFactLock=void 0}let i=a.planning.documentBudget.targetChars;if(a.planning.documentBudget.longformStrict&&0!==(0,b0.z)().capacityFeasibilityRecalibration&&i&&a.blueprint.integratedBlueprint?.validation.passed){let b=a.blueprint.integratedBlueprint,c=Date.now();try{let d=new Map,e=a=>{let c=d.get(a.id);return c||(c=(0,q.iV)((0,q.md)(b,a.title),a.sections||[]),d.set(a.id,c)),c},f=a.prepare.documentSpec,{chapterTargets:g,adjustments:j,compressed:k}=(0,h.K1)({chapters:a.planning.effectiveChapters,targetChars:i,floorOf:a=>Math.max(f?.chapterRules.find(b=>b.id===a.id||b.title===a.title)?.minWords||0,f?.dynamicChapterRule.minWordsPerChapter||0),feasibilityFloorOf:a=>e(a).minFeasibleWords,currentTargets:a.planning.documentBudget.chapterTargets});for(let[b,c]of(a.planning.documentBudget.chapterTargets.clear(),g))a.planning.documentBudget.chapterTargets.set(b,c);(0,r.fx)(a.global.progressStages,(0,r.X5)({type:"validation",roleId:"chapter-budget-feasibility",status:k?"failed":"success",message:k?"章预算可行性校准:最低密度预算合计超出全文目标,按下限比例压缩(不阻断;容量密度需求与目标字数冲突已显式暴露)":j.length>0?`章预算可行性校准:${j.length} 章按真实要点密度重锚(Σ章预算 = ${i} 字守恒)`:"章预算可行性校准:各章预算均满足密度可行性下限,无需调整",details:[...j.map(b=>{let c=a.planning.effectiveChapters.find(a=>a.id===b.id),d=c?e(c).points:0;return`${b.title}:${b.from} → ${b.to} 字(要点 ${d} 个 \xd7 密度下限 1800 字/块)`}).slice(0,12),`本地校准时耗 ${Date.now()-c}ms`,`开关:tuningProfile.capacityFeasibilityRecalibration=${(0,b0.z)().capacityFeasibilityRecalibration??"缺省开启"}`]},{subtitle:"章预算可行性校准"})),(j.length>0||k)&&console.warn(`[blueprint] 章预算可行性校准:${j.length} 章调整能量;Σ章预算 = ${i} 字守恒`),a.global.emitProgress()}catch(a){console.error(`[blueprint] 章预算可行性校准失败(沿用原章预算,不阻断):${a instanceof Error?a.message:String(a)}`)}}a.blueprint.blueprintActive=!!a.blueprint.integratedBlueprint?.validation.passed}var cV=c(36366);async function cW(a){if(0===a.requirementSummary.length||0===a.chapters.length)return[];let b=a.chapters.map(a=>`【${(0,aJ.GQ)(a.title)}】
61
+ ${a.join("\n\n")}`)}}if(g||(a.planning.generationDiagnostics.llm.lastError=a.planning.generationDiagnostics.llm.lastError||"全部成稿路径未返回有效正文"),g&&aO&&a.blueprint.integratedBlueprint){let b=(0,q.C8)(g,aO,a.blueprint.integratedBlueprint.data);b.fixed.length>0?(g=b.markdown,a.planning.generationDiagnostics.llm.lastInfo=`蓝图引用对齐:${c.title} 回填 ${b.fixed.length} 处(${b.fixed.map(a=>`${a.anchor} ${a.from}→${a.to}`).join("、")})${b.missing.length?`;未引用缺口 ${b.missing.length} 项:${b.missing.join("、")}`:""}`):b.missing.length>0&&(a.planning.generationDiagnostics.llm.lastInfo=`蓝图引用缺口观测:${c.title} 未在正文引用 ${b.missing.length} 项 must_cite 参数(${b.missing.slice(0,6).join("、")}${b.missing.length>6?" 等":""}),由跨章一致性审查兑底`)}if(g&&a.blueprint.integratedBlueprint){let b=(0,p.Pl)(g,(0,E.i2)(a.blueprint.integratedBlueprint.data));if(b.fixedCount>0){g=b.markdown;let d=a.planning.generationDiagnostics.llm.lastInfo;a.planning.generationDiagnostics.llm.lastInfo=`${d?`${d};`:""}阶段劳动力口径对齐:${c.title} 回填 ${b.fixedCount} 处(${b.details.join("、")})`}}if((0,e.Te)(a.global.input.signal),!g){let b=a.planning.generationDiagnostics.llm.lastError||"空响应或超时",d=`${(0,aJ.GQ)(c.title)} 正文未达到成稿要求,已阻断生成(${b.slice(0,160)})`;throw a.global.progressStages[t]=(0,r.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:am.primaryPromptId,status:"failed",message:d,details:[`阻断归因:${b}`,`证据条数:${Y.length}`],progress:{current:i+1,total:a.planning.effectiveChapters.length,label:"章节阻断"}},{subtitle:(0,aJ.GQ)(c.title),order:i}),a.global.emitProgress(a.global.chapterDrafts),Error(d)}if(!g.trim())throw Error(`${(0,aJ.GQ)(c.title)} 首次生成失败,未获得可用于定稿的正文`);let m=b&&b.blocks.length>0?b.blocks.map(a=>a.title):(c.sections||[]).filter(Boolean),n=b&&b.blocks.length>0?b.blocks.flatMap(a=>a.subPoints.map(a=>a.title)):[],o=g;m.length>0&&(o=(0,e.Ww)(o,m,3)),n.length>0&&(o=(0,e.Ww)(o,n,4)),d=(0,k.w_)(o,c),d=await (0,k._k)(d,a.understanding.bidProcedureJudge)}let aV=await bo({chapter:c,content:d,evidence:Y}),aW=(0,h.V7)(d),aX=(0,z.r4)(d),aY=b&&b.blocks.length>0?b.blocks.map(a=>a.title):(c.sections||[]).filter(Boolean),aZ=aY.filter((a,b)=>a!==aY[b-1]),a$=aZ.length>0?aZ:aX.length>0?aX:[],a_=(0,C.qK)(d,[{title:c.title,content:d,sections:a$}]).map(a=>a.message),a0=aV.slice(0,6).map(a=>`小节事实密度需优化:${a}`),a1=[...a_,...a0],a2=(0,k.md)(aW,aQ,a1);return g=(0,r.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:am.primaryPromptId,status:a2,message:(0,r.AQ)(`${(0,aJ.GQ)(c.title)} 已由大模型成稿:当前 ${aW} 字;章节预算约 ${aL.budgetTarget} 字,本轮目标约 ${aL.roundTarget} 字${a1.length?`;待优化:${a1.slice(0,8).join("、")}`:""}`,s),details:[`本轮完成率:${Math.round(aW/Math.max(1,aL.roundTarget)*100)}%`,`结构目标约 ${aL.structureTarget} 字`,...ao,`二级小节:${a$.length} 个`],progress:{current:i+1,total:a.planning.effectiveChapters.length,label:a1.length?"章节已生成":"章节达标"}},{subtitle:(0,aJ.GQ)(c.title),order:i}),a.understanding.chapterGenerationStagesByOrder[i]=g,async()=>{let b=d,e=a.blueprint.requirementAssignments.filter(a=>a.chapterTitle===(0,af.NT)(c.title));if(e.length>0){let d={title:c.title,content:b},f=await (0,af.Mj)({chapters:[d],assignments:e,signal:a.global.input.signal,diagnostics:a.planning.generationDiagnostics});f.fixedCount>0&&(b=d.content,(0,r.fx)(a.global.progressStages,(0,r.X5)({type:"validation",roleId:`chapter-requirement-acceptance-${c.id}`,status:"success",message:`${(0,aJ.GQ)(c.title)} 章级要求验收:补写 ${f.fixedCount} 条未响应责任要求(章内修复前移)`,details:f.details},{subtitle:`${(0,aJ.GQ)(c.title)}\xb7要求验收`,order:a.global.progressStages.length})))}let f={id:c.id,title:c.title,content:b,evidence:Y,missingFacts:Z,sections:a$,tablePlans:c.tablePlans||[]};a.understanding.chapterDraftsByOrder[i]=f,a.global.chapterDrafts=a.understanding.chapterDraftsByOrder.filter(a=>!!a),a.global.emitProgress(a.global.chapterDrafts)}}catch(f){if(a.global.input.signal?.aborted)throw f;let b=a.planning.generationDiagnostics.llm.lastError,d=`failures=${a.planning.generationDiagnostics.llm.failures} retries=${a.planning.generationDiagnostics.llm.retries} reasoningTokens=${a.planning.generationDiagnostics.llm.reasoningTokens||0}`;console.error(`[gen] chapter ${c.title} failed:`,f,b?`| LLM lastError: ${b}`:"| LLM lastError: (none)","|",d);let e=`${c.title}:${f instanceof Error?f.message:"生成失败"}`;a.understanding.failedChapterMessages.push(e),g=(0,r.X5)({type:"chapter_generation",roleId:"chapter_generation",status:"failed",message:`${(0,aJ.GQ)(c.title)} 生成失败:${e}`,details:[`LLM 最近错误:${b||"无记录"}`,`LLM 调用失败 ${a.planning.generationDiagnostics.llm.failures} 次、重试 ${a.planning.generationDiagnostics.llm.retries} 次`]},{subtitle:(0,aJ.GQ)(c.title),order:i}),a.understanding.chapterGenerationStagesByOrder[i]=g}g&&(a.global.progressStages[t]=g),a.global.emitProgress(a.global.chapterDrafts)}))))d&&a.blueprint.reviewTaskPool.push(a.blueprint.reviewSemaphore.run(d))}await Promise.all(a.blueprint.reviewTaskPool),a.planning.generationDiagnostics.metrics.push({name:"phase:draft",startedAt:a.chapterLoop.draftPhaseStartedAt,endedAt:Date.now(),durationMs:Date.now()-a.chapterLoop.draftPhaseStartedAt}),a.chapterLoop.globalReviewPhaseStartedAt=Date.now(),a.chapterLoop.chapterDraftsFinal=a.understanding.chapterDraftsByOrder.filter(a=>!!a),a.understanding.chapterGenerationStages.push(...a.understanding.chapterGenerationStagesByOrder.filter(a=>!!a))}async function cU(a){let b=Math.round(([...a.planning.documentBudget.chapterTargets.values()].reduce((a,b)=>a+b,0)||a.planning.documentBudget.targetChars||0)/Math.max(1,a.planning.effectiveChapters.length)),c=(0,b0.z)().chapterConcurrency||0;a.blueprint.chapterConcurrency=a.planning.generationBudget.chapterConcurrency,a.blueprint.reviewConcurrency=a.planning.generationBudget.reviewConcurrency,(0,r.fx)(a.global.progressStages,(0,r.X5)({type:"validation",roleId:"chapter-concurrency",status:"success",message:`章节流水线调度:${a.planning.effectiveChapters.length} 章全部同批并行生成,审查修复 ${a.blueprint.reviewConcurrency} 路流水线(章节生成完立即进入审查,与后续章节生成重叠)`,details:[`有效章节数:${a.planning.effectiveChapters.length}`,`平均章节目标:${b} 字`,Number.isFinite(c)&&c>0?`章节并发来自 tuningProfile.chapterConcurrency=${Math.floor(c)}`:`全部章节并行生成,在飞调用不设并发上限;每章单轮修复(失败即放弃)`]},{subtitle:"章节流水线策略"})),a.global.emitProgress(),a.blueprint.reviewSemaphore=new e.jf(a.blueprint.reviewConcurrency),a.blueprint.reviewTaskPool=[];let d=[...a.understanding.availableEvidenceScopePaths].filter(Boolean).sort(),f=Date.now();a.blueprint.basicFactSearchResults=d.length>0?(await (0,e.l$)(k.xs,async b=>a.understanding.searchWithCache(b,d,Math.min(a.understanding.requestedEvidencePerChapter,12),""),{kind:"search"})).flat():[],a.planning.generationDiagnostics.evidence.searchQueries+=k.xs.length,a.planning.generationDiagnostics.evidence.searchMs+=Date.now()-f;let g=Date.now();try{a.blueprint.integratedBlueprint=(0,q.DL)({projectRoot:a.prepare.projectRoot,boundFilePaths:a.prepare.materialFilePaths,chapterTitles:a.planning.effectiveChapters.map(a=>a.title),templateName:a.prepare.template.name,basicFacts:(0,q.eT)(a.understanding.canonicalFacts),evidence:a.understanding.writerEvidence,facts:[...a.understanding.earlyFactPool.localFacts,...a.understanding.earlyFactPool.projectBasicFacts,...a.understanding.earlyFactPool.preciseFacts],composition:a.understanding.bidComposition,signal:a.global.input.signal,diagnostics:a.planning.generationDiagnostics});let b=(0,q.Fq)(a.prepare.projectRoot,a.blueprint.integratedBlueprint),c=a.blueprint.integratedBlueprint.outline.chapters.reduce((a,b)=>a+b.subSections.reduce((a,b)=>a+b.workPackages.length,0),0),d=a.understanding.bidComposition,e=d?`${"blind"===d.bidType?"暗标(正文禁表格/禁图片,图表转文末附表区)":"open"===d.bidType?"明标(正文可含表格)":"未识别勾选标记(按常规口径)"}${d.appendixPlan.length>0?`;文末附表 ${d.appendixPlan.length} 项`:""}`:"未识别(阶段 1 判定缺失,按常规口径)";(0,r.fx)(a.global.progressStages,(0,r.X5)({type:"validation",roleId:"integrated-blueprint",status:a.blueprint.integratedBlueprint.validation.passed?"success":"failed",message:a.blueprint.integratedBlueprint.validation.passed?`一体化蓝图已构建并落盘:清单 ${a.blueprint.integratedBlueprint.diagnostics.boq?.totalEntries??0} 条目、工作包 ${c} 个(校验通过,参数桶与章切片接管各章写作)`:`一体化蓝图已构建但校验未通过(参数桶不注入,不阻断生成):${a.blueprint.integratedBlueprint.validation.checks.filter(a=>!a.passed).map(a=>a.name).join("、")}`,details:[`耗时 ${Date.now()-g}ms`,`落盘:${b}`,`清单解析:${a.blueprint.integratedBlueprint.diagnostics.boq?`${a.blueprint.integratedBlueprint.diagnostics.boq.totalEntries} 条目 / ${a.blueprint.integratedBlueprint.diagnostics.boq.villageCount} 村 / 完整性校验${a.blueprint.integratedBlueprint.diagnostics.boq.complete?"通过":"未通过"}`:"未解析(见警告)"}`,`标书编制规格:${e}`,`校验链:${a.blueprint.integratedBlueprint.validation.checks.map(a=>`${a.name}${a.passed?"✓":"✗"}`).join(" / ")}`,...a.blueprint.integratedBlueprint.diagnostics.warnings.slice(0,6).map(a=>`警告:${a}`)]},{subtitle:"一体化蓝图"})),a.global.emitProgress()}catch(b){a.blueprint.integratedBlueprint=void 0,(0,r.fx)(a.global.progressStages,(0,r.X5)({type:"validation",roleId:"integrated-blueprint",status:"failed",message:`一体化蓝图构建异常(参数桶不注入,不阻断生成):${b instanceof Error?b.message:String(b)}`,details:[`耗时 ${Date.now()-g}ms`,"蓝图异常时参数桶与章切片不注入,各章按证据独立成稿"]},{subtitle:"一体化蓝图"})),a.global.emitProgress()}if(a.blueprint.integratedBlueprint)try{let b=(0,q.wY)({projectRoot:a.prepare.projectRoot,boundFilePaths:a.prepare.materialFilePaths});a.blueprint.billFactLock=function(a){let b=a.boq;if(b&&0!==b.totalEntries)return{entries:b.entries.map(a=>({seq:a.seq,name:String(a.name||"").trim(),description:String(a.description||"").trim(),quantity:a.quantity,unit:String(a.unit||"").trim(),section:String(a.section||"").trim(),subsection:String(a.subsection||"").trim(),villageGroup:String(a.villageGroup||"").trim(),sourceFile:a.sourceFile,specQuantityPairs:cq(a.description).map(b=>({spec:b,quantity:`${a.quantity}${a.unit}`}))})),totalEntries:b.totalEntries,sourceFile:b.sourceFile,complete:b.complete}}({boq:b.boq}),a.blueprint.billFactLock&&(a.planning.generationDiagnostics.llm.lastInfo=`清单事实锁:锁定 ${a.blueprint.billFactLock.totalEntries} 条目(完整性校验${a.blueprint.billFactLock.complete?"通过":"未通过"}),写作直读与数值核对轮生效`)}catch(b){console.error(`[blueprint] 清单事实锁构建失败(章节按证据独立成稿):${b instanceof Error?b.message:String(b)}`),a.blueprint.billFactLock=void 0}{let b=a.planning.tenderRequirements.entries,c=(0,af.Hj)(b,a.planning.effectiveChapters,a.planning.requirementsSimilarity);if(a.blueprint.requirementAssignments=c.assignments,c.assignments.length!==b.length)throw Error(`招标要求分配对账失败:要求 ${b.length} 条,分配 ${c.assignments.length} 条`);if(b.length>0){let d=(0,af.T3)(a.prepare.projectRoot,c.assignments),e=new Map;for(let a of c.assignments)e.set(a.chapterTitle,(e.get(a.chapterTitle)||0)+1);(0,r.fx)(a.global.progressStages,(0,r.X5)({type:"validation",roleId:"tender-requirement-assignment",status:"success",message:`招标要求分配:${c.assignments.length} 条要求全部落位 ${e.size} 个责任章${c.lowConfidenceCount>0?`(低置信 ${c.lowConfidenceCount} 条,已分配唯一主责章)`:""}`,details:[`分配对账:要求 ${b.length} 条 = 分配 ${c.assignments.length} 条(未分配 0)`,`落盘:${d}`,...[...e.entries()].map(([a,b])=>`${a}:${b} 条`),...c.assignments.filter(a=>a.lowConfidence).slice(0,8).map(a=>`低置信:${a.entry.text} → ${a.chapterTitle}(相似度 ${a.score.toFixed(2)})`)]},{subtitle:"招标要求分配",order:a.global.progressStages.length})),a.global.emitProgress()}}let i=a.planning.documentBudget.targetChars;if(a.planning.documentBudget.longformStrict&&0!==(0,b0.z)().capacityFeasibilityRecalibration&&i&&a.blueprint.integratedBlueprint?.validation.passed){let b=a.blueprint.integratedBlueprint,c=Date.now();try{let d=new Map,e=a=>{let c=d.get(a.id);return c||(c=(0,q.iV)((0,q.md)(b,a.title),a.sections||[]),d.set(a.id,c)),c},f=a.prepare.documentSpec,{chapterTargets:g,adjustments:j,compressed:k}=(0,h.K1)({chapters:a.planning.effectiveChapters,targetChars:i,floorOf:a=>Math.max(f?.chapterRules.find(b=>b.id===a.id||b.title===a.title)?.minWords||0,f?.dynamicChapterRule.minWordsPerChapter||0),feasibilityFloorOf:a=>e(a).minFeasibleWords,currentTargets:a.planning.documentBudget.chapterTargets});for(let[b,c]of(a.planning.documentBudget.chapterTargets.clear(),g))a.planning.documentBudget.chapterTargets.set(b,c);(0,r.fx)(a.global.progressStages,(0,r.X5)({type:"validation",roleId:"chapter-budget-feasibility",status:k?"failed":"success",message:k?"章预算可行性校准:最低密度预算合计超出全文目标,按下限比例压缩(不阻断;容量密度需求与目标字数冲突已显式暴露)":j.length>0?`章预算可行性校准:${j.length} 章按真实要点密度重锚(Σ章预算 = ${i} 字守恒)`:"章预算可行性校准:各章预算均满足密度可行性下限,无需调整",details:[...j.map(b=>{let c=a.planning.effectiveChapters.find(a=>a.id===b.id),d=c?e(c).points:0;return`${b.title}:${b.from} → ${b.to} 字(要点 ${d} 个 \xd7 密度下限 1800 字/块)`}).slice(0,12),`本地校准时耗 ${Date.now()-c}ms`,`开关:tuningProfile.capacityFeasibilityRecalibration=${(0,b0.z)().capacityFeasibilityRecalibration??"缺省开启"}`]},{subtitle:"章预算可行性校准"})),(j.length>0||k)&&console.warn(`[blueprint] 章预算可行性校准:${j.length} 章调整能量;Σ章预算 = ${i} 字守恒`),a.global.emitProgress()}catch(a){console.error(`[blueprint] 章预算可行性校准失败(沿用原章预算,不阻断):${a instanceof Error?a.message:String(a)}`)}}a.blueprint.blueprintActive=!!a.blueprint.integratedBlueprint?.validation.passed}var cV=c(36366);async function cW(a){if(0===a.requirementSummary.length||0===a.chapters.length)return[];let b=a.chapters.map(a=>`【${(0,aJ.GQ)(a.title)}】
62
62
  ${(a.sections||[]).filter(Boolean).map(a=>`- ${a}`).join("\n")||"(本章暂无预设小节)"}`).join("\n\n"),c=await (0,bn.bb)((0,z.y4)('你是施工组织设计大纲校准专家。输入各章已有小节与招标评分项要求,只输出需要新增的小节。\n\n新增小节必须显性承接评分项要求(如"创优目标与奖惩承诺""绿色建筑等级达标专项""智慧工地实施""装配式专项施工方案"),只允许新增,不得修改或删除任何已有小节。\n\n只有当前章节结构确实缺少对应承接小节时才新增;已有小节已覆盖该要求时不要重复新增。\n\n新增小节标题必须具体、可直接成稿,控制在 16 个汉字以内;不得新增与评分项要求无关的小节,不得输出条款碎片(如"1委员会确定中")。\n\n只返回 JSON,不要返回 markdown。'),[`文档模板:${a.templateName}`,`招标评分项要求摘要(必须逐条在结构层显性承接):
63
63
  ${a.requirementSummary.map(a=>`- ${a}`).join("\n")}`,`各章当前小节列表:
64
64
  ${b}`,a.diversityDirective?`${a.diversityDirective}
65
65
  新增小节标题命名需遵循上述差异化设定(与本章已有小节命名风格一致)。`:"","请输出需要新增的小节;没有需要新增的章节不要出现在 additions 中,整体无新增则输出空数组。",'JSON 格式:{"additions":[{"chapterTitle":"章标题(必须与上方章节名一致)","sections":["新增小节标题"]}]}'].filter(Boolean).join("\n\n"),{maxTokens:2e3,temperature:cV.TD,signal:a.signal}),d=[],e=0;for(let b of c?.additions||[]){if(!b?.chapterTitle||!Array.isArray(b.sections))continue;let c=function(a,b){let c=(0,aJ.nz)(b);if(!c)return -1;let d=a.findIndex(a=>(0,aJ.GQ)(a.title)===c||(0,aJ.nz)(a.title)===c);return d>=0?d:a.findIndex(a=>{let b=(0,aJ.nz)(a.title);return b.length>=4&&(b.includes(c)||c.includes(b))})}(a.chapters,b.chapterTitle);if(c<0)continue;let f=a.chapters[c],g=[];for(let a of b.sections){let b=(0,b4.EN)((0,aJ.nz)(String(a||"")));!(!b||(0,b4.tQ)(b,f.title)||(0,aJ.mq)(b)||(0,cF.dn)(b)||(0,cF.xb)(b)||(f.sections||[]).some(a=>(0,b4.kw)(a,b)))&&(g.some(a=>(0,b4.kw)(a,b))||g.push(b))}let h=Math.min(2,g.length,Math.max(0,8-e)),i=g.slice(0,h);if(0!==i.length&&(e+=i.length,d.push({chapterTitle:f.title,sections:i}),e>=8))break}for(let b of[{summaryRe:/创优|优质工程|优质结构|文明工地|争创|质量目标/u,coverageRe:/创优|优质工程|优质结构|文明工地/u,sectionTitle:"创优目标与奖惩承诺",hostRe:/质量|创优/u,fallbackHostRe:/安全|文明|环保|绿色/u},{summaryRe:/工伤保险|意外伤害保险|社会保险/u,coverageRe:/工伤保险|劳动保障|意外伤害/u,sectionTitle:"工伤保险与劳动保障",hostRe:/安全|文明|保障|职业健康|劳保/u,fallbackHostRe:/质量/u}]){if(!a.requirementSummary.some(a=>b.summaryRe.test(a))||a.chapters.some(a=>(a.sections||[]).some(a=>b.coverageRe.test(a))))continue;let c=a.chapters.find(a=>b.hostRe.test((0,aJ.GQ)(a.title)))||a.chapters.find(a=>b.fallbackHostRe.test((0,aJ.GQ)(a.title)))||a.chapters[0];if(!c)continue;let e=d.find(a=>a.chapterTitle===c.title);e?e.sections.some(a=>(0,b4.kw)(a,b.sectionTitle))||e.sections.push(b.sectionTitle):d.push({chapterTitle:c.title,sections:[b.sectionTitle]})}return d}let cX=["计划总工期为300日历天","合同工期为300日历天","施工总工期为300日历天","招标控制价为6000万元","合同估算价为6000万元","投资估算为6000万元","总建筑面积为28000平方米","总用地面积为15000平方米","总占地面积为15000平方米","建设规模为28000平方米"],cY=["专项应急演练4次","每日巡查2次","每周检查1次","每月安全培训2次","监理旁站24小时","三级安全教育培训20学时"];function cZ(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 c$(){let a=(0,ae.VN)(),[b,c]=await Promise.all([a.embedDocuments([...cX]),a.embedDocuments([...cY])]);if(b.length!==cX.length||c.length!==cY.length)throw Error(`本地语义模型锚点嵌入数量不一致:范围锚点 ${b.length}/${cX.length},计数锚点 ${c.length}/${cY.length}`);return{async batchClassify(d){if(0===d.length)return[];let e=await a.embedDocuments(d);return d.map((a,d)=>{let f=e[d];if(!f||0===f.length)return"other";let g=Math.max(...b.map(a=>cZ(f,a))),h=Math.max(...c.map(a=>cZ(f,a)));return h>=.62&&h>g?"other":g>=.6?"scope":"other"})}}}let c_=[{authority:"laborPeak",anchors:["劳动力安排计划","劳动力配置计划","劳动力投入计划","主要劳动力计划","劳动力使用计划"]},{authority:"schedule",anchors:["施工进度计划","施工总进度计划","工程进度计划","进度计划","工期计划","施工部署","总体部署"]},{authority:"blueprint",anchors:["主要资源配置计划","资源配置计划","资源需求计划","机械设备配置计划","材料供应计划","主要施工机械设备表"]}],c0=["工程概况","项目概况","工程总体概况","施工总体部署","施工部署","工程目标","工程质量目标","工程进度目标"],c1=["扬尘治理措施","扬尘污染防治措施","文明施工措施","环境保护措施","绿色施工措施","安全文明施工措施","扬尘控制措施"],c2=/劳动力/u,c3=/资源配置|资源|机械|设备|机具/u,c4=/进度计划|进度|工期/u,c5=/概况|工程|项目|总体|部署|进度|工期|质量/u,c6=/扬尘|文明施工|环境保护|绿色施工|安全文明|环保/u;async function c7(a){let b=(0,ae.VN)(),c=[...c_.flatMap(a=>a.anchors),...c0,...c1],d=await b.embedDocuments([...c,...a]);if(d.length!==c.length+a.length)throw Error(`本地语义模型锚点嵌入数量不一致:预期 ${c.length+a.length},实际 ${d.length}`);let e=d.slice(0,c.length),f=new Map;a.forEach((a,b)=>f.set(a,d[c.length+b]??[]));let g=0,h=c_.map(a=>{let b=e.slice(g,g+a.anchors.length);return g+=a.anchors.length,b}),i=e.slice(g,g+c0.length);g+=c0.length;let j=e.slice(g,g+c1.length),k=(a,b)=>{let c=f.get(a);return!!(c&&c.length>0&&Math.max(...b.map(a=>(function(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})(c,a)))>=.6)};return{needsBlueprintAuthority(a){let b=[];return c_.forEach((c,d)=>{k(a,h[d])&&b.push(c.authority)}),!b.includes("laborPeak")&&c2.test(a)&&b.push("laborPeak"),!b.includes("blueprint")&&c3.test(a)&&b.push("blueprint"),!b.includes("schedule")&&c4.test(a)&&b.push("schedule"),b},needsBasicFacts:a=>k(a,i)||c5.test(a),needsDustControl:a=>k(a,j)||c6.test(a)}}let c8={factuality:["本章关键数据以招标文件、工程量清单与施工图纸为依据","正文引用的工期、面积、金额与绑定资料口径一致","施工内容与项目实际工程范围对应而非通用模板描述"],structure:["内容按施工准备、工艺流程、施工方法、验收标准的顺序组织","章节内有清晰的工作阶段划分与工序步骤","段落之间有先后衔接与层次递进关系"],depth:["包含关键工序控制点、隐蔽工程验收与检验批划分","关键技术环节给出工艺参数与质量标准","针对本项目特点展开专业分析而非通用做法罗列"],executable:["明确责任主体、检查频次与记录台账要求","给出可执行的资源进场、调配与投入安排","措施可落地执行并配验收复核机制"],specificity:["结合本项目建设地点、工程规模与计划工期展开","引用本项目工程量数据支撑施工部署","措施针对本项目工程特点制定而非通用套话"],consistency:["章节间工期、质量、安全数据口径一致","本章内容与总进度计划、质量目标相互呼应","章节内前后表述无矛盾冲突"]},c9={schedule:["采用关键线路法编制进度计划,明确关键节点与动态纠偏措施","计划节点与资源投入相匹配,含穿插施工与资源保障安排"],quality:["材料进场验收与复验、隐蔽工程验收、质量问题整改与复验闭环","质量资料归档与检验批验收记录"],safety:["风险源辨识、临电消防管理、安全检查与隐患整改闭环","应急预案、应急物资与演练安排"],resource:["劳动力、材料、设备进场计划、验收、保管与调配","资源投入与进度节点相匹配"],construction:["施工准备、工艺流程、工序控制点与验收标准交底","施工方法与工艺参数明确具体"]},da=["材料进场验收、工序控制点、隐蔽工程验收记录","检验批划分、技术交底、整改复查闭环","引用本项目工程量清单与设计图纸参数"],db=["自检互检交接检、整改复查、资料归档","风险辨识、专项交底、现场检查、隐患整改、复查销项","计划分解、偏差识别、资源纠偏、节点复核"];function dc(a,b){let c=0;for(let d of a)for(let a of b){let b=function(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}(d,a);b>c&&(c=b)}return c}async function dd(){let a=(0,ae.VN)(),b=[...Object.keys(c8).map(a=>[`dimension:${a}`,c8[a]]),...Object.keys(c9).map(a=>[`need:${a}`,c9[a]]),["concrete",[...da]],["closedLoop",[...db]]],c=new Map;for(let[d,e]of b){let b=await a.embedDocuments(e);if(b.length!==e.length)throw Error(`本地语义模型锚点嵌入数量不一致:${d} ${b.length}/${e.length}`);c.set(d,b)}let d=new Map,e=async b=>{let c=d.get(b);if(void 0!==c)return c;let e=function(a){let b=a.split(/\n+/u).map(a=>a.trim()).filter(Boolean),c=[],d="";for(let a of b)d&&d.length+a.length+1>400?(c.push(d),d=a):d=d?`${d}
66
- ${a}`:a;if(d&&c.push(d),c.length<=20)return c;let e=[c[0]],f=(c.length-2)/18;for(let a=1;a<19;a+=1)e.push(c[Math.min(c.length-2,Math.round(1+(a-1)*f))]);return e.push(c[c.length-1]),e}(b),f=await a.embedDocuments(e);return d.set(b,f),f};return{async analyze(a){if(!a.trim())return;let b=await e(a);if(0!==b.length)return{dimensions:function(a,b){let c={};for(let d of Object.keys(c8)){let e=b.get(`dimension:${d}`)||[];c[d]=dc(a,e)>=ae.Eh}return c}(b,c),contentNeeds:function(a,b){let c={};for(let d of Object.keys(c9)){let e=b.get(`need:${d}`)||[];c[d]=dc(a,e)>=ae.Eh}return c}(b,c),concrete:dc(b,c.get("concrete")||[])>=ae.Eh,closedLoop:dc(b,c.get("closedLoop")||[])>=ae.Eh}}}}var de=c(79227),df=c(25284);async function dg(a){var b;a.planning.effectiveChapters=a.planning.baseEffectiveChapters,a.planning.constructionOrgContext=(0,df.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,b4.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=0,i=0,j=0,l=0,m=new Map,n=[];a.planning.diversityProfile=(0,cV.y$)(a.global.input.diversitySeed||a.global.input.templateId,(0,cV.u)(a.global.input.templateId)),(0,cV.a1)(a.global.input.templateId,a.planning.diversityProfile.id),a.planning.fingerprintPool=(0,cS.$R)();let o=[...new Set(a.planning.fingerprintPool.entries.flatMap(a=>[...a.h3||[],...a.h4||[]]))].filter(Boolean).slice(0,60),p=b=>(0,cS.F$)(b,a.planning.fingerprintPool,{excludeDocumentId:a.global.input.diversitySeed}).map(a=>({title:a.title,collidedWith:a.collidedWith})),q=0,s=0;a.planning.plannedChapters=await (0,e.l$)(a.planning.effectiveChapters.map((a,b)=>({chapter:a,chapterIndex:b})),async({chapter:b,chapterIndex:e})=>{let f=a.planning.promptStructuralRules.filter(a=>a.chapterIndex===e||a.chapterTitle&&(0,aJ.GQ)(a.chapterTitle)===(0,aJ.GQ)(b.title)).flatMap(a=>a.requiredSections.slice().sort((a,b)=>(a.order||0)-(b.order||0)).map(a=>a.title)),h=(0,b4.k2)([...f,...b.sections||[]],b.title);for(let a of[...f,...b.sections||[]]){let c=(0,b4.EN)(String(a).trim());c&&c!==String(a).trim()&&n.push(`${(0,aJ.GQ)(b.title)}:${a} → ${c}`)}d+=h.length,j+=1;let t=(0,g.QR)(a.understanding.writerEvidence.filter(a=>a.chapterId===b.id||(0,bh.Lk)(a,b.title)),{preservePinned:!0}),u=a.prepare.projectUnderstanding.chapterPlans.find(a=>a.chapterId===b.id)?.writingGoal||"",v=(0,k.C_)(a.prepare.promptPlan,b),w=await (0,b4.SP)({template:c,chapter:b,chapterIndex:e,evidence:t,promptTexts:v.promptTexts,projectContext:a.planning.projectContext,requirement:a.global.input.requirement,roleContext:u,targetWords:a.planning.provisionalBudget.chapterTargets.get(b.id)||1200,projectGraphSummary:a.planning.chapterGraphSummaryText(b.id),lockedSections:h,bodyTablePolicy:a.understanding.bidComposition.bodyTablePolicy,signal:a.global.input.signal,diversity:{directive:a.planning.diversityProfile.prompt,avoidSections:o,overlapCheck:p}});w.diversity?.retried&&(q+=1,s+=w.diversity.remainingCollisions),m.set(b.id,w.tables),l+=w.tables.length,i+=w.sections.length;let x=w.sections.filter(a=>!h.some(b=>(0,b4.kw)(b,a)));if((0,r.fx)(a.global.progressStages,(0,r.X5)({type:"validation",roleId:"section-planning",promptId:v.primaryPromptId,status:w.sections.length?"success":"failed",message:`${(0,aJ.GQ)(b.title)} 小节规划:锁定 ${h.length} 个、LLM 规划增量 ${x.length} 个${w.tables.length?`、表格需求 ${w.tables.length} 项`:""}`,details:[...v.promptDetails,...h.map(a=>`锁定小节:${a}`),...x.map(a=>`规划小节:${a}`),...w.tables.map(a=>`表格需求:${a.title}${a.fields.length?`(${a.fields.join("、")})`:""}`)]},{subtitle:"小节规划"})),!w.sections.length)throw Error(`${(0,aJ.GQ)(b.title)} 小节规划未生成可用小节`);return{...b,sections:w.sections}},{kind:"llmRepair",targetWords:a.planning.provisionalBudget.targetChars||4e3}),a.planning.tenderRequirements=await a.understanding.tenderRequirementsTask;let t=a.planning.plannedChapters;if((0,af.l)(a.planning.tenderRequirements)){let b=await a.global.withProgressHeartbeat(()=>cW({chapters:t,requirementSummary:(0,af.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,aJ.GQ)(b.title)===(0,aJ.GQ)(a.chapterTitle)||(0,aJ.nz)(b.title)===(0,aJ.nz)(a.chapterTitle));if(b<0)continue;let e=d[b],f=a.sections.filter(a=>!(e.sections||[]).some(b=>(0,b4.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,b4.kw)(b,a)))})?{chapters:d,applied:c}:{chapters:a,applied:[]}}(t,b);c.applied.length>0?(t=c.chapters,(0,r.fx)(a.global.progressStages,(0,r.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,aJ.GQ)(a.chapterTitle)}:${a.sections.join("、")}`)},{subtitle:"大纲要求校准",order:a.global.progressStages.length}))):(0,r.fx)(a.global.progressStages,(0,r.X5)({type:"validation",roleId:"outline-requirement-calibration",status:"skipped",message:"大纲要求校准未通过结构守恒校验,回退原规划",details:["校准新增小节未通过章名匹配/标题清洗校验,全部丢弃"]},{subtitle:"大纲要求校准",order:a.global.progressStages.length})),a.global.emitProgress()}else(0,r.fx)(a.global.progressStages,(0,r.X5)({type:"validation",roleId:"outline-requirement-calibration",status:"skipped",message:"大纲要求校准未产出有效增量(章节结构已覆盖评分项要求或校准调用失败),回退原规划",details:[]},{subtitle:"大纲要求校准",order:a.global.progressStages.length})),a.global.emitProgress()}let u=await (0,cF.mI)(t),v=t.reduce((a,b,c)=>a+Math.max(0,(b.sections||[]).length-(u[c]?.sections||[]).length),0),w=await (0,ae.Mv)(a.understanding.evaluationItems.map(a=>a.title),u.map(cK));a.planning.finalBidStructureAudit=cL({template:a.prepare.template,chapters:u,requirement:a.global.input.requirement,evaluationItems:a.understanding.evaluationItems,semanticSimilarity:w});let x=(0,b7.lR)({chapters:a.planning.finalBidStructureAudit.enrichedChapters,plannedTables:m,requiredTables:a.prepare.runtimePromptRules.requiredTables,bodyTablePolicy:a.understanding.bidComposition?.bodyTablePolicy});if(a.planning.effectiveChapters=x.chapters,(0,A._C)(a.understanding.bidComposition)){let b=a.understanding.bidComposition;(0,r.fx)(a.global.progressStages,(0,r.X5)({type:"validation",roleId:"bid-composition-table-policy",status:"success",message:`暗标编制规格消费:正文禁用表格与框图——小节规划 ${l} 项表格需求与提示词必需表格 ${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 x.unattachedRequiredTables.length>0&&(0,r.fx)(a.global.progressStages,(0,r.X5)({type:"validation",roleId:"required-tables-unattached",status:"success",message:`提示词必需表格归属:${x.unattachedRequiredTables.length} 张未匹配到明确章节(${x.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,v>0&&((0,r.fx)(a.global.progressStages,(0,r.X5)({type:"validation",roleId:"outline-topic-filter",status:"success",message:`大纲小节主题过滤:剔除 ${v} 个评标纪律/商务报价类离题小节`,details:["被剔除小节不进入写作、目录与预算计划"]},{subtitle:"大纲主题约束",order:a.global.progressStages.length})),a.global.emitProgress()),(a.planning.finalBidStructureAudit.issues.length>0||a.understanding.bidStructureAudit.issues.length>0)&&(0,r.fx)(a.global.progressStages,(0,r.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,ae.Mv)((0,af.Uk)(a.planning.tenderRequirements).map(({item:a})=>(0,af.E6)(a)),a.planning.effectiveChapters.map(a=>(0,af.NT)(a.title))),a.planning.requirementsRoutes=await (0,af.VX)(a.planning.tenderRequirements,a.planning.effectiveChapters,a.planning.requirementsSimilarity),a.planning.requirementsRoutes.length>0&&((0,r.fx)(a.global.progressStages,(0,r.X5)({type:"validation",roleId:"tender-requirement-routing",status:"success",message:`评分项要求章节级路由:${a.planning.requirementsRoutes.length} 条要求已路由到责任章节(生成时显性响应)`,details:a.planning.requirementsRoutes.map(a=>`${a.kind}“${a.item.text}” → ${a.chapterTitle}(相似度 ${a.score.toFixed(2)})`)},{subtitle:"要求响应路由",order:a.global.progressStages.length})),a.global.emitProgress()),a.planning.factTokenScopeClassifier=await c$(),a.planning.chapterIntentClassifier=await c7(a.planning.effectiveChapters.map(a=>a.title)),a.planning.professionalDepthClassifier=await dd(),a.planning.writingTaskBrief=function(a){let b=(0,cG.y)({template:{id:"runtime",name:a.templateName||"",outputTitle:"",description:"",category:"",chapters:a.chapters},chapters:a.chapters,requirement:a.requirement}),c=/施工组织设计|施工组织|施组|技术标/u.test(`${a.templateName||""} ${a.requirement||""} ${a.chapters.map(a=>a.title).join(" ")}`)||b.length>0,d=Object.values(a.factsModel?.canonical?.byKey||{}).map(a=>`${a.label}=${a.value}`),e=d.filter(a=>/建设规模|建筑面积|占地|用地面积|装配|层数|高度/u.test(a)).slice(0,8),f=(a.tenderRequirements?.frontScheduleClauses||[]).map(a=>a.text).filter(Boolean).slice(0,12),g=["正文必须落到本项目资料已确认的事实,不得使用模板化空话或跨小节复制段落","措施类内容写成“责任岗位+执行动作+量化标准+检查频次+整改时限+复查销项”闭环句式:同一自然段内三要素(责任岗位+检查频次+整改闭环)须同时出现,全文每 1500 字至少 1 段闭环句式","正文每 1000 字至少落位 6 处带单位量化工艺参数(mm/MPa/养护天数/间距/压实度等),施工流程与施工方法须有明确的工序顺序表达(形式按小节序号轮换使用:顺序词叙述、编号步骤、有序列表、箭头链,禁止相邻小节同一形式、禁止通篇同一形式),每个分部分项方案至少 1 处 3 环节以上工序顺序表达",'专业工程类小节必须覆盖作业对象与工程量、工序顺序、施工方法三方面要素(必须融入连贯段落叙述,禁止以"施工概况/施工流程/施工方法"等结构标签充当标题或段落开头引导),小节标题用专业工程正式名称(如"拆除工程"),禁止使用"工作包"等后台概念命名','质量目标与创优目标必须使用招标文件原文的奖项名称逐字落位,禁止替换、降级或省略为其他奖项名称(如把招标文件指定奖项写成其他奖项);招标文件"确保/达到"类等级要求不得弱化为"争创/争取"','B5 属地创优目标(安徽省属地适配项):招标文件未明确具体奖项时,正文必须提出不低于招标文件要求的属地创优目标,如"争创合肥市级优质工程""争创市级安全文明标准化工地"等,并在质量与文明施工章节落位','B5 表格数据一致性(丰乐镇第三轮实测:合计行 5088 与阶段工日之和 5808 矛盾、班组人数 22/28/30 多值并存):表格类内容(劳动力投入、材料配置、机械设备等)合计行数值必须与上方明细行数据一致、可由各行相加推导;各阶段人数与全项目峰值人数必须显式区分口径并保持一致(如写明"阶段高峰人数按阶段分别统计,合计行仅列全项目峰值口径");同一班组人数在配置表与进退场表中必须同值,不得多值并存',...cO,...f.length?[`投标人须知前附表响应条款(正文必须逐条落位或遵守,零响应即评标失分):${f.map((a,b)=>`${b+1}.${a}`).join(";")}`]:[]],h=a.chapters.map(b=>{var c;let d=(c=b.title,cN.find(a=>a.pattern.test(c))),e=(a.projectGraph?.works||[]).filter(a=>a.name&&(b.title.includes(a.name.slice(0,2))||/概况|总体|施工内容|方案|施工/u.test(b.title))).slice(0,10),f=(a.projectGraph?.resources||[]).filter(a=>a.quantity&&/概况|资源|总体|施工内容|方案/u.test(b.title)).slice(0,12).map(a=>({itemCode:"",itemName:a.name,quantity:a.quantity,unit:a.unit}));return{chapterId:b.id,chapterTitle:b.title,writingGoal:d?.goal||"结合本章标题与项目资料事实展开专业内容,避免泛化叙述",mustCover:[...d?.mustCover||[],...(b.requiredFacts||[]).slice(0,6)],factDomains:[...b.requiredFacts||[],...e.map(a=>a.name)].slice(0,10),evidenceRefs:b.queries.slice(0,6).map(a=>({filePath:a,kind:"query",priority:"should"})),boqTargets:f,drawingTargets:[],gaps:[]}});return{documentType:c?"施工组织设计":"专业文档",globalWritingFocus:c?[...g,"招标硬性要求必须逐项明确响应:质量标准、计划工期、缺陷责任期与保修、安全文明目标、项目经理及组织机构;工期/质量/保修类承诺可在概况与质量章节落位,不得遗漏",...e.length?[`项目规模事实卡(口径裁决值,正文引用规模数据必须与之一致,不得混淆总占地与建筑总量口径):${e.join(";")}`]:[],...d.length?[`项目可信基础事实(写作时必须优先落位):${d.slice(0,10).join(";")}`]:[]]:g.slice(0,2),chapters:h}}({chapters:a.planning.effectiveChapters,factsModel:a.understanding.preliminaryFactsModel,projectGraph:a.understanding.projectGraph||void 0,requirement:a.global.input.requirement,templateName:a.prepare.template.name,tenderRequirements:a.planning.tenderRequirements}),a.planning.tenderWritingRulesText=(0,af.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:a.global.input.requirement,promptTexts:a.prepare.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,r.fx)(a.global.progressStages,(0,r.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 y=a.planning.documentBudget.targetChars||[...a.planning.documentBudget.chapterTargets.values()].reduce((a,b)=>a+b,0);a.planning.generationStrategy=(0,f.JP)({template:a.prepare.template,targetWords:y,requirement:a.global.input.requirement,materialFileCount:a.prepare.materialFilePaths.length,evidenceCount:a.understanding.allEvidence.length}),a.planning.generationBudget=(0,de.C)({template:a.prepare.template,chapters:a.planning.effectiveChapters,targetWords:y,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,b0.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,bn.t5)(y),(0,r.fx)(a.global.progressStages,(0,r.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,r.fx)(a.global.progressStages,(0,r.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 z=a.prepare.hasExplicitOutline?"OUTLINE 章节":"模板章节";a.planning.sectionPlanningStage=(0,r.X5)({type:"validation",roleId:"section-planning",status:"success",message:`小节规划:${j} 章统一融合规划(基于${z}、提示词强制小节与项目资料)——融合小节合计 ${i} 个(其中锁定 ${d} 个)、表格需求 ${l} 项`,details:n.length?[...n]:void 0},{subtitle:"小节规划策略"});let B=a.prepare.hasExplicitOutline?`;识别到 OUTLINE 章节 ${a.prepare.explicitPromptChapters.length} 个`:";未识别到有效 OUTLINE,将使用模板章节",C=[...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,r.fx)(a.global.progressStages,(0,r.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} 条${B}`,details:[...C,...a.prepare.runtimePromptRules.executionSummary.map(a=>`runtimeRule|${a}`)]},{subtitle:a.prepare.projectRoleConfigName,roleName:a.prepare.projectRoleConfigName})),(0,r.fx)(a.global.progressStages,(0,r.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,r.fx)(a.global.progressStages,(0,r.X5)({type:"validation",roleId:"document-readiness",status:a.prepare.readiness.ready?"success":"failed",message:"生成准备度:绑定资料已就绪",details:a.prepare.readiness.diagnostics},{subtitle:"生成准备度检查"})),(0,r.fx)(a.global.progressStages,(0,r.X5)({type:"validation",roleId:"diversity-governance",status:"success",message:`多文档反雷同:组织视角「${a.planning.diversityProfile.perspective}」\xd7命名风格「${a.planning.diversityProfile.style}」;历史指纹避让 ${o.length} 个标题${q>0?`,撞名局部改名 ${q} 章${s>0?`(局部改名后仍近似 ${s} 处,已接受)`:""}`:""}`,details:[`历史指纹池 ${a.planning.fingerprintPool.entries.length} 条(仅本机历史文档标题与结构,无正文)`,`多样性画像 ${a.planning.diversityProfile.id}`]},{subtitle:"多样性治理"})),(0,r.fx)(a.global.progressStages,a.planning.sectionPlanningStage),a.global.emitProgress()}var dh=c(76760),di=c(14070),dj=c(70963);async function dk(a){if(a.understanding.evidenceScopePaths=new Set(a.prepare.materialFilePaths),a.understanding.fileRoleByPath=new Map([...a.prepare.kindByPath.entries()].map(([a,b])=>[a,(0,cQ._W)(b)])),a.understanding.fileProcessingByPath=new Map([...a.prepare.processingByPath.entries()].map(([a,b])=>[a,b])),(0,r.fx)(a.global.progressStages,(0,r.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.projectMaterialScope=(0,m.Zq)(a.prepare.projectId,[...a.understanding.availableEvidenceScopePaths]),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=bj({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,r.fx)(a.global.progressStages,(0,r.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=new Map;a.understanding.getCachedFileDetail=b=>{let c=`${b}::full`;if(!d.has(c))try{d.set(c,a.understanding.project.getFileDetail?.(b))}catch{d.set(c,void 0)}return d.get(c)},a.understanding.searchWithCache=async(b,d,f,g)=>{let h=(0,k.Iu)(g),i=(0,e.c6)({query:b,scopedFilePaths:d,limit:f,weights:h,generationMode:!0,reranker:!0}),j=c.get(i);if(j)return j;let l=await a.understanding.manager.search(a.prepare.projectRoot,b,{scope:"project",filters:{filePaths:d},limit:f,weights:h,generationMode:!0,disableReranker:!1}).catch(()=>null),m=l?.results||[];return c.set(i,m),m};let f={stage:(0,r.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,r.fx)(a.global.progressStages,f.stage),a.global.emitProgress();let h=(0,m.Su)(await (0,k.jX)({manager:a.understanding.manager,project:a.understanding.project,projectRoot:a.prepare.projectRoot,scopedFilePaths:[...a.understanding.evidenceScopePaths].filter(Boolean).sort(),fileRoleByPath:a.understanding.fileRoleByPath,fileProcessingByPath:a.understanding.fileProcessingByPath,signal:a.global.input.signal}),a.understanding.projectMaterialScope);(0,m.U2)(h,a.understanding.projectMaterialScope,"project-basic-evidence"),h.length>0&&(a.understanding.allEvidence.push(...h),(0,r.fx)(a.global.progressStages,(0,r.X5)({type:"knowledge_retrieval",roleId:"project-basic-evidence",status:"success",message:`已锁定项目基础事实证据 ${h.length} 条`,details:h.slice(0,8).map(a=>`${dh.basename(a.filePath)}|${a.sectionTitle||"正文片段"}|score=${a.score.toFixed(2)}`)},{subtitle:"基础事实召回",order:a.global.progressStages.length})),a.global.emitProgress());let{safe:i,excluded:j}=await (0,cF.a0)(a.understanding.allEvidence);a.understanding.writerEvidence=i,a.understanding.bidProcedureJudge=await (0,cF.M8)(),j.length>0&&((0,r.fx)(a.global.progressStages,(0,r.X5)({type:"knowledge_retrieval",roleId:"evidence-content-safety",status:"success",message:`证据内容安全过滤:${j.length} 条投标程序/评标纪律类证据已从写作链断开(系统侧提取通道不受影响)`,details:j.slice(0,6).map(a=>`${dh.basename(a.filePath)}|${a.sectionTitle||"正文片段"}`)},{subtitle:"证据内容安全",order:a.global.progressStages.length})),a.global.emitProgress()),a.understanding.safeProjectBasicEvidence=h.filter(a=>!j.includes(a)),a.understanding.excludedEvidenceKeys=new Set(j.map(cF.hM)),a.understanding.earlyFactPool=(0,n.d6)({evidence:a.understanding.writerEvidence,template:a.prepare.template,spec:a.prepare.documentSpec,profile:a.prepare.domainProfile,scope:a.understanding.projectMaterialScope});let l=a.understanding.earlyFactPool.localFacts,p=[...l,...a.understanding.earlyFactPool.projectBasicFacts,...a.understanding.earlyFactPool.preciseFacts];a.understanding.scopedIntelligence=(0,df.hp)({projectRoot:a.prepare.projectRoot,template:a.prepare.template,requirement:a.global.input.requirement,materialScope:a.prepare.materialScope});let q=[...(0,e.lX)(a.understanding.scopedIntelligence?.facts||[]),...p,...(0,o.UT)(a.understanding.writerEvidence)],s=(0,o.GZ)(q,a.prepare.projectRoot);for(let b of(a.understanding.preliminaryFactsModel=await (0,n.d7)(s,a.understanding.earlyFactPool.structuredTables,a.understanding.missingItems,a.prepare.documentSpec,a.prepare.domainProfile),a.understanding.agentWorkflow=(0,bl.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,bl.SU)(a.understanding.agentWorkflow)))(0,r.fx)(a.global.progressStages,b);if(a.understanding.scopedIntelligence&&(0,r.fx)(a.global.progressStages,(0,r.X5)({type:"file_understanding",roleId:"project-intelligence-cache",status:"success",message:`已复用入库后项目理解资产与绑定 scope 快照:${a.understanding.scopedIntelligence.files.length} 份绑定资料`,details:[`项目级缓存时间:${new Date(a.understanding.scopedIntelligence.cache.createdAt).toLocaleString()}`,`scope 快照:${a.understanding.scopedIntelligence.scopeSnapshot.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:"项目理解缓存 / Scope 快照"})),a.global.emitProgress(),a.understanding.projectGraph=a.understanding.agentWorkflow.baseProjectGraph,!a.understanding.scopedIntelligence){(0,r.fx)(a.global.progressStages,(0,r.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,dj.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,r.fx)(a.global.progressStages,b.stage),a.global.emitProgress()}a.understanding.projectGraph&&(a.prepare.projectUnderstanding=(0,cQ._n)(a.prepare.template,a.prepare.projectMaterialProfile,a.understanding.projectGraph)),(0,r.fx)(a.global.progressStages,(0,r.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,o.qD)({facts:q,projectGraph:a.understanding.projectGraph,requiredKeys:o.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,aJ.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))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,aJ.ob)(a)||(0,aJ.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,r.fx)(a.global.progressStages,(0,r.X5)({type:"validation",roleId:"bid-structure-audit",status:"skipped",message:"评审章节证据存在但未提取到评分条目标题:评分标准编号条目提取为空,承接审计将静默通过",details:["请检查招标文件评标办法章节编号格式;评分项要求(创优目标/绿色等级/禁编日期)由评分项要求提取通道覆盖"]},{subtitle:"评标结构校验",order:a.global.progressStages.length}));let v=await (0,ae.Mv)(a.understanding.evaluationItems.map(a=>a.title),t.map(cK));a.understanding.bidStructureAudit=cL({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,A.SD)({tenderTexts:w,requirement:a.global.input.requirement,requiredTables:a.prepare.runtimePromptRules.requiredTables});let x=(0,A.iJ)(a.understanding.bidComposition);if((0,r.fx)(a.global.progressStages,(0,r.X5)({type:"validation",roleId:"bid-composition",status:x.status,message:x.message,details:x.details},{subtitle:"标书编制规格",order:a.global.progressStages.length})),a.global.emitProgress(),(0,A._C)(a.understanding.bidComposition)){let b=a=>{let b=(0,A.E1)(a||"");return{next:b,changed:b!==(a||"")}},c=[],d=b(a.prepare.runtimeRulesText);a.prepare.runtimeRulesText=d.next,d.changed&&c.push("runtimeRulesText");let e=b(a.prepare.promptTexts);a.prepare.promptTexts=e.next,e.changed&&c.push("promptTexts");let f=b(a.prepare.factExtractionPromptTexts);a.prepare.factExtractionPromptTexts=f.next,f.changed&&c.push("factExtractionPromptTexts");let g=b(a.prepare.reviewPromptTexts);a.prepare.reviewPromptTexts=g.next,g.changed&&c.push("reviewPromptTexts");let h=b(a.prepare.repairPromptTexts);a.prepare.repairPromptTexts=h.next,h.changed&&c.push("repairPromptTexts"),c.length>0&&((0,r.fx)(a.global.progressStages,(0,r.X5)({type:"validation",roleId:"bid-composition-prompt-dissolve",status:"success",message:`暗标口径消解:提示词「必须输出表格」规则行已从 ${c.length} 处消费文本移除(${c.join("、")})`,details:["正文表格需求改由终稿文末附表区按招标附表清单直出;写作/检查/修复提示词不再要求正文输出表格"]},{subtitle:"标书编制规格",order:a.global.progressStages.length})),a.global.emitProgress())}if(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?await (0,af.ur)(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});if(c.length>0){let b=c.reduce((a,b)=>a+(b.content?.length||0),0),e=d.reduce((a,b)=>a+(b.content?.length||0),0);(0,r.fx)(a.global.progressStages,(0,r.X5)({type:"validation",roleId:"tender-requirement-preselect",status:"success",message:`评分项要求有用数据预筛:${c.length} → ${d.length} 条切片(${Math.round(e/Math.max(1,b)*100)}% 字符量)`,details:["投标程序/清单/目录/格式类切片已从主提取输入剔除(义务词形+语义命中双通道保留)","全量切片仍作必提条款窄通道召回池,兜底不失效"]},{subtitle:"评分项要求提取\xb7预筛",order:a.global.progressStages.length})),a.global.emitProgress()}let e="0"!==process.env.DOCUMENT_EXTRACTION_CACHE?(0,af.Sf)({collectionEvidence:c,preselectEvidence:d}):void 0,f=e?(0,af.jl)(a.prepare.projectRoot,e):void 0;if(f)b=f,(0,r.fx)(a.global.progressStages,(0,r.X5)({type:"validation",roleId:"tender-requirements-cache",status:"success",message:"复用上次提取结果(招标文件与预筛输入哈希命中,跳过主提取/窄通道 LLM)",details:(0,af.zD)(b)},{subtitle:"评分项要求提取\xb7缓存复用",order:a.global.progressStages.length})),a.global.emitProgress();else{b=await a.global.withProgressHeartbeat(()=>(0,af.mg)(d,{signal:a.global.input.signal})),!(0,af.l)(b)&&d.length>0&&(b=await a.global.withProgressHeartbeat(()=>(0,af.mg)(d,{signal:a.global.input.signal})));let f=await (0,af.wC)(c),g=(0,af.xk)(b);if(f.length>0&&g.length>0){let c=await a.global.withProgressHeartbeat(()=>(0,af.mg)(f,{signal:a.global.input.signal}));(0,af.l)(c)&&(b=(0,af.HX)(b,c),(0,r.fx)(a.global.progressStages,(0,r.X5)({type:"validation",roleId:"tender-mandatory-extraction",status:"success",message:"必提条款窄通道补提完成(主提取漏提字段已补齐)",details:(0,af.zD)(c)},{subtitle:"评分项要求提取\xb7必提补提",order:a.global.progressStages.length})),a.global.emitProgress())}let h=[];if((0,af.BC)(b).length>0&&c.length>0){let d=await a.global.withProgressHeartbeat(()=>(0,af.EW)(b,c,{signal:a.global.input.signal}));b=d.model,h=d.stillGaps;let e=d.noEvidenceGaps,f=d.stillGaps;0===d.stillGaps.length&&((0,r.fx)(a.global.progressStages,(0,r.X5)({type:"validation",roleId:"tender-field-gap-extraction",status:"success",message:"评分项要求字段定向补提完成(字段级聚焦提取,全部评分项要求字段已提取)",details:(0,af.zD)(b)},{subtitle:"评分项要求提取\xb7字段补提",order:a.global.progressStages.length})),a.global.emitProgress());let g=a=>af.i.includes(a);if(f.length>0){let b=f.filter(g),c=f.filter(a=>!g(a)),d=[b.length>0?`必提字段 ${b.map(a=>(0,af.wG)(a)).join("、")}`:"",c.length>0?`常规字段 ${c.map(a=>(0,af.wG)(a)).join("、")}`:""].filter(Boolean);(0,r.fx)(a.global.progressStages,(0,r.X5)({type:"validation",roleId:"tender-field-gap-missing",status:"skipped",message:`字段定向补提后仍缺失:${d.join(";")}(条款窗口证据存在但 LLM 提取失败)`,details:["请检查 LLM 可用性与输出质量;正文将无法显性响应上述评分项要求"]},{subtitle:"评分项要求提取\xb7字段缺口",order:a.global.progressStages.length})),a.global.emitProgress()}if(e.length>0){let b=e.filter(g),c=e.filter(a=>!g(a)),d=[b.length>0?`必提字段 ${b.map(a=>(0,af.wG)(a)).join("、")}`:"",c.length>0?`常规字段 ${c.map(a=>(0,af.wG)(a)).join("、")}`:""].filter(Boolean);(0,r.fx)(a.global.progressStages,(0,r.X5)({type:"validation",roleId:"tender-field-gap-no-evidence",status:"skipped",message:`${d.join(";")}:招标资料中未找到对应条款或条款值为「无」(判定为无此要求,非漏提)`,details:["若项目实际存在该要求,请检查招标文件相关章节切片完整性"]},{subtitle:"评分项要求提取\xb7字段缺口",order:a.global.progressStages.length})),a.global.emitProgress()}}e&&0===h.length&&(0,af.e_)(a.prepare.projectRoot,e,b)}return(0,af.l)(b)?((0,r.fx)(a.global.progressStages,(0,r.X5)({type:"validation",roleId:"tender-requirements-extraction",status:"success",message:"招标文件评分项要求结构化提取完成",details:(0,af.zD)(b)},{subtitle:"评分项要求提取",order:a.global.progressStages.length})),a.global.emitProgress()):d.length>0&&((0,r.fx)(a.global.progressStages,(0,r.X5)({type:"validation",roleId:"tender-requirements-extraction",status:"skipped",message:"评分项要求提取未获得有效结果(模型不可用或资料中无要求),零响应检测自动跳过",details:[]},{subtitle:"评分项要求提取",order:a.global.progressStages.length})),a.global.emitProgress()),b}catch(b){return(0,r.fx)(a.global.progressStages,(0,r.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,af.Mx)(!1)}})(),a.planning.baseEffectiveChapters=a.understanding.bidStructureAudit.enrichedChapters,a.prepare.template={...a.prepare.template,chapters:a.planning.baseEffectiveChapters},a.planning.plannedDocumentTask=(0,cP.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,di.C1)(a,d,.18)||(0,di.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,df.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,r.fx)(a.global.progressStages,(0,r.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,aJ.GQ)(b.title)}:匹配文件${c?.graphFiles.size||0}个,BOQ项${c?.graphBoqItems.length||0}个`})},{subtitle:"图谱章节映射"})),a.global.emitProgress())}}var dl=c(19898),dm=c(44533),dn=c(29281),dp=c(25840),dq=c(6444),dr=c(85441),ds=c(56942);function dt(){return{parsed:!1,globalRequirements:[],chapterRequirements:[],factClues:[],styleRequirements:[],mandatoryBlockText:"",summary:""}}let du=[(0,z.y4)("你是用户生成要求的语义解析专家。"),'把用户的生成提示词完整解析为可逐条核验的结构化要求清单,不得遗漏用户的任何实质要求;不得把通用客套话(如"请帮我生成""谢谢")当作要求。\n要求必须逐条短句(每条 ≤60 字)、可核验(生成后能判断是否满足);一条要求只写一件事,复合要求必须拆分。\nglobalRequirements:全文级强制要求——写作内容、深度、覆盖面、表格、量化要求等不限定具体章节的要求;若要求明确指向某个章节,必须放入 chapterRequirements 而不是 globalRequirements。\nchapterRequirements:章节级要求——chapterTitle 必须原样取自给定的章节列表,不得编造不存在的章节名;同一章节的多条要求合并为一条记录。\nfactClues:用户提示词中显式给出的项目专属事实线索——含数值、单位、规格、型号、标准编号、日期、地点、规模、金额、目标的短句(如"一般路灯 100W 109套、120W 9套""计划工期 365 日历天""开挖深度 5.2m");要求类语句("必须写X")不算事实线索;线索必须原样保留数值与表述,不得改写或换算。\nstyleRequirements:写作风格与格式要求(语气、详略、表格偏好、禁止风格等),最多 8 条。\n只返回 JSON。'].join("\n");function dv(a,b){let c=String(a||"").trim().replace(/^\d+[.、))]\s*/u,"");return!c||c.length>b?"":c}async function dw(a){let b=(a.requirement||"").trim(),c=(a.chapterTitles||[]).filter(Boolean),d=dt();if(!b||b.length<4||b.length<=40&&!/[::]|\n/u.test(b))return d;try{let e=await (0,bn.bb)(du,`章节列表(chapterRequirements 的 chapterTitle 必须原样取自以下列表):${c.join("、")||"(无)"}
66
+ ${a}`:a;if(d&&c.push(d),c.length<=20)return c;let e=[c[0]],f=(c.length-2)/18;for(let a=1;a<19;a+=1)e.push(c[Math.min(c.length-2,Math.round(1+(a-1)*f))]);return e.push(c[c.length-1]),e}(b),f=await a.embedDocuments(e);return d.set(b,f),f};return{async analyze(a){if(!a.trim())return;let b=await e(a);if(0!==b.length)return{dimensions:function(a,b){let c={};for(let d of Object.keys(c8)){let e=b.get(`dimension:${d}`)||[];c[d]=dc(a,e)>=ae.Eh}return c}(b,c),contentNeeds:function(a,b){let c={};for(let d of Object.keys(c9)){let e=b.get(`need:${d}`)||[];c[d]=dc(a,e)>=ae.Eh}return c}(b,c),concrete:dc(b,c.get("concrete")||[])>=ae.Eh,closedLoop:dc(b,c.get("closedLoop")||[])>=ae.Eh}}}}var de=c(79227),df=c(25284);async function dg(a){var b;a.planning.effectiveChapters=a.planning.baseEffectiveChapters,a.planning.constructionOrgContext=(0,df.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,b4.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=0,i=0,j=0,l=0,m=new Map,n=[];a.planning.diversityProfile=(0,cV.y$)(a.global.input.diversitySeed||a.global.input.templateId,(0,cV.u)(a.global.input.templateId)),(0,cV.a1)(a.global.input.templateId,a.planning.diversityProfile.id),a.planning.fingerprintPool=(0,cS.$R)();let o=[...new Set(a.planning.fingerprintPool.entries.flatMap(a=>[...a.h3||[],...a.h4||[]]))].filter(Boolean).slice(0,60),p=b=>(0,cS.F$)(b,a.planning.fingerprintPool,{excludeDocumentId:a.global.input.diversitySeed}).map(a=>({title:a.title,collidedWith:a.collidedWith})),q=0,s=0;a.planning.plannedChapters=await (0,e.l$)(a.planning.effectiveChapters.map((a,b)=>({chapter:a,chapterIndex:b})),async({chapter:b,chapterIndex:e})=>{let f=a.planning.promptStructuralRules.filter(a=>a.chapterIndex===e||a.chapterTitle&&(0,aJ.GQ)(a.chapterTitle)===(0,aJ.GQ)(b.title)).flatMap(a=>a.requiredSections.slice().sort((a,b)=>(a.order||0)-(b.order||0)).map(a=>a.title)),h=(0,b4.k2)([...f,...b.sections||[]],b.title);for(let a of[...f,...b.sections||[]]){let c=(0,b4.EN)(String(a).trim());c&&c!==String(a).trim()&&n.push(`${(0,aJ.GQ)(b.title)}:${a} → ${c}`)}d+=h.length,j+=1;let t=(0,g.QR)(a.understanding.writerEvidence.filter(a=>a.chapterId===b.id||(0,bh.Lk)(a,b.title)),{preservePinned:!0}),u=a.prepare.projectUnderstanding.chapterPlans.find(a=>a.chapterId===b.id)?.writingGoal||"",v=(0,k.C_)(a.prepare.promptPlan,b),w=await (0,b4.SP)({template:c,chapter:b,chapterIndex:e,evidence:t,promptTexts:v.promptTexts,projectContext:a.planning.projectContext,requirement:a.global.input.requirement,roleContext:u,targetWords:a.planning.provisionalBudget.chapterTargets.get(b.id)||1200,projectGraphSummary:a.planning.chapterGraphSummaryText(b.id),lockedSections:h,bodyTablePolicy:a.understanding.bidComposition.bodyTablePolicy,signal:a.global.input.signal,diversity:{directive:a.planning.diversityProfile.prompt,avoidSections:o,overlapCheck:p}});w.diversity?.retried&&(q+=1,s+=w.diversity.remainingCollisions),m.set(b.id,w.tables),l+=w.tables.length,i+=w.sections.length;let x=w.sections.filter(a=>!h.some(b=>(0,b4.kw)(b,a)));if((0,r.fx)(a.global.progressStages,(0,r.X5)({type:"validation",roleId:"section-planning",promptId:v.primaryPromptId,status:w.sections.length?"success":"failed",message:`${(0,aJ.GQ)(b.title)} 小节规划:锁定 ${h.length} 个、LLM 规划增量 ${x.length} 个${w.tables.length?`、表格需求 ${w.tables.length} 项`:""}`,details:[...v.promptDetails,...h.map(a=>`锁定小节:${a}`),...x.map(a=>`规划小节:${a}`),...w.tables.map(a=>`表格需求:${a.title}${a.fields.length?`(${a.fields.join("、")})`:""}`)]},{subtitle:"小节规划"})),!w.sections.length)throw Error(`${(0,aJ.GQ)(b.title)} 小节规划未生成可用小节`);return{...b,sections:w.sections}},{kind:"llmRepair",targetWords:a.planning.provisionalBudget.targetChars||4e3}),a.planning.tenderRequirements=await a.understanding.tenderRequirementsTask;let t=a.planning.plannedChapters;if((0,af.l)(a.planning.tenderRequirements)){let b=await a.global.withProgressHeartbeat(()=>cW({chapters:t,requirementSummary:(0,af.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,aJ.GQ)(b.title)===(0,aJ.GQ)(a.chapterTitle)||(0,aJ.nz)(b.title)===(0,aJ.nz)(a.chapterTitle));if(b<0)continue;let e=d[b],f=a.sections.filter(a=>!(e.sections||[]).some(b=>(0,b4.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,b4.kw)(b,a)))})?{chapters:d,applied:c}:{chapters:a,applied:[]}}(t,b);c.applied.length>0?(t=c.chapters,(0,r.fx)(a.global.progressStages,(0,r.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,aJ.GQ)(a.chapterTitle)}:${a.sections.join("、")}`)},{subtitle:"大纲要求校准",order:a.global.progressStages.length}))):(0,r.fx)(a.global.progressStages,(0,r.X5)({type:"validation",roleId:"outline-requirement-calibration",status:"skipped",message:"大纲要求校准未通过结构守恒校验,回退原规划",details:["校准新增小节未通过章名匹配/标题清洗校验,全部丢弃"]},{subtitle:"大纲要求校准",order:a.global.progressStages.length})),a.global.emitProgress()}else(0,r.fx)(a.global.progressStages,(0,r.X5)({type:"validation",roleId:"outline-requirement-calibration",status:"skipped",message:"大纲要求校准未产出有效增量(章节结构已覆盖评分项要求或校准调用失败),回退原规划",details:[]},{subtitle:"大纲要求校准",order:a.global.progressStages.length})),a.global.emitProgress()}let u=await (0,cF.mI)(t),v=t.reduce((a,b,c)=>a+Math.max(0,(b.sections||[]).length-(u[c]?.sections||[]).length),0),w=await (0,ae.Mv)(a.understanding.evaluationItems.map(a=>a.title),u.map(cK));a.planning.finalBidStructureAudit=cL({template:a.prepare.template,chapters:u,requirement:a.global.input.requirement,evaluationItems:a.understanding.evaluationItems,semanticSimilarity:w});let x=(0,b7.lR)({chapters:a.planning.finalBidStructureAudit.enrichedChapters,plannedTables:m,requiredTables:a.prepare.runtimePromptRules.requiredTables,bodyTablePolicy:a.understanding.bidComposition?.bodyTablePolicy});if(a.planning.effectiveChapters=x.chapters,(0,A._C)(a.understanding.bidComposition)){let b=a.understanding.bidComposition;(0,r.fx)(a.global.progressStages,(0,r.X5)({type:"validation",roleId:"bid-composition-table-policy",status:"success",message:`暗标编制规格消费:正文禁用表格与框图——小节规划 ${l} 项表格需求与提示词必需表格 ${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 x.unattachedRequiredTables.length>0&&(0,r.fx)(a.global.progressStages,(0,r.X5)({type:"validation",roleId:"required-tables-unattached",status:"success",message:`提示词必需表格归属:${x.unattachedRequiredTables.length} 张未匹配到明确章节(${x.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,v>0&&((0,r.fx)(a.global.progressStages,(0,r.X5)({type:"validation",roleId:"outline-topic-filter",status:"success",message:`大纲小节主题过滤:剔除 ${v} 个评标纪律/商务报价类离题小节`,details:["被剔除小节不进入写作、目录与预算计划"]},{subtitle:"大纲主题约束",order:a.global.progressStages.length})),a.global.emitProgress()),(a.planning.finalBidStructureAudit.issues.length>0||a.understanding.bidStructureAudit.issues.length>0)&&(0,r.fx)(a.global.progressStages,(0,r.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,ae.Mv)((0,af.Uk)(a.planning.tenderRequirements).map(({item:a})=>(0,af.E6)(a)),a.planning.effectiveChapters.map(a=>(0,af.NT)(a.title))),a.planning.factTokenScopeClassifier=await c$(),a.planning.chapterIntentClassifier=await c7(a.planning.effectiveChapters.map(a=>a.title)),a.planning.professionalDepthClassifier=await dd(),a.planning.writingTaskBrief=function(a){let b=(0,cG.y)({template:{id:"runtime",name:a.templateName||"",outputTitle:"",description:"",category:"",chapters:a.chapters},chapters:a.chapters,requirement:a.requirement}),c=/施工组织设计|施工组织|施组|技术标/u.test(`${a.templateName||""} ${a.requirement||""} ${a.chapters.map(a=>a.title).join(" ")}`)||b.length>0,d=Object.values(a.factsModel?.canonical?.byKey||{}).map(a=>`${a.label}=${a.value}`),e=d.filter(a=>/建设规模|建筑面积|占地|用地面积|装配|层数|高度/u.test(a)).slice(0,8),f=["正文必须落到本项目资料已确认的事实,不得使用模板化空话或跨小节复制段落","措施类内容写成“责任岗位+执行动作+量化标准+检查频次+整改时限+复查销项”闭环句式:同一自然段内三要素(责任岗位+检查频次+整改闭环)须同时出现,全文每 1500 字至少 1 段闭环句式","正文每 1000 字至少落位 6 处带单位量化工艺参数(mm/MPa/养护天数/间距/压实度等),施工流程与施工方法须有明确的工序顺序表达(形式按小节序号轮换使用:顺序词叙述、编号步骤、有序列表、箭头链,禁止相邻小节同一形式、禁止通篇同一形式),每个分部分项方案至少 1 处 3 环节以上工序顺序表达",'专业工程类小节必须覆盖作业对象与工程量、工序顺序、施工方法三方面要素(必须融入连贯段落叙述,禁止以"施工概况/施工流程/施工方法"等结构标签充当标题或段落开头引导),小节标题用专业工程正式名称(如"拆除工程"),禁止使用"工作包"等后台概念命名','质量目标与创优目标必须使用招标文件原文的奖项名称逐字落位,禁止替换、降级或省略为其他奖项名称(如把招标文件指定奖项写成其他奖项);招标文件"确保/达到"类等级要求不得弱化为"争创/争取"','B5 属地创优目标(安徽省属地适配项):招标文件未明确具体奖项时,正文必须提出不低于招标文件要求的属地创优目标,如"争创合肥市级优质工程""争创市级安全文明标准化工地"等,并在质量与文明施工章节落位','B5 表格数据一致性(丰乐镇第三轮实测:合计行 5088 与阶段工日之和 5808 矛盾、班组人数 22/28/30 多值并存):表格类内容(劳动力投入、材料配置、机械设备等)合计行数值必须与上方明细行数据一致、可由各行相加推导;各阶段人数与全项目峰值人数必须显式区分口径并保持一致(如写明"阶段高峰人数按阶段分别统计,合计行仅列全项目峰值口径");同一班组人数在配置表与进退场表中必须同值,不得多值并存',...cO],g=a.chapters.map(b=>{var c;let d=(c=b.title,cN.find(a=>a.pattern.test(c))),e=(a.projectGraph?.works||[]).filter(a=>a.name&&(b.title.includes(a.name.slice(0,2))||/概况|总体|施工内容|方案|施工/u.test(b.title))).slice(0,10),f=(a.projectGraph?.resources||[]).filter(a=>a.quantity&&/概况|资源|总体|施工内容|方案/u.test(b.title)).slice(0,12).map(a=>({itemCode:"",itemName:a.name,quantity:a.quantity,unit:a.unit}));return{chapterId:b.id,chapterTitle:b.title,writingGoal:d?.goal||"结合本章标题与项目资料事实展开专业内容,避免泛化叙述",mustCover:[...d?.mustCover||[],...(b.requiredFacts||[]).slice(0,6)],factDomains:[...b.requiredFacts||[],...e.map(a=>a.name)].slice(0,10),evidenceRefs:b.queries.slice(0,6).map(a=>({filePath:a,kind:"query",priority:"should"})),boqTargets:f,drawingTargets:[],gaps:[]}});return{documentType:c?"施工组织设计":"专业文档",globalWritingFocus:c?[...f,"招标硬性要求必须逐项明确响应:质量标准、计划工期、缺陷责任期与保修、安全文明目标、项目经理及组织机构;工期/质量/保修类承诺可在概况与质量章节落位,不得遗漏",...e.length?[`项目规模事实卡(口径裁决值,正文引用规模数据必须与之一致,不得混淆总占地与建筑总量口径):${e.join(";")}`]:[],...d.length?[`项目可信基础事实(写作时必须优先落位):${d.slice(0,10).join(";")}`]:[]]:f.slice(0,2),chapters:g}}({chapters:a.planning.effectiveChapters,factsModel:a.understanding.preliminaryFactsModel,projectGraph:a.understanding.projectGraph||void 0,requirement:a.global.input.requirement,templateName:a.prepare.template.name}),a.planning.tenderWritingRulesText=(0,af.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:a.global.input.requirement,promptTexts:a.prepare.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,r.fx)(a.global.progressStages,(0,r.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 y=a.planning.documentBudget.targetChars||[...a.planning.documentBudget.chapterTargets.values()].reduce((a,b)=>a+b,0);a.planning.generationStrategy=(0,f.JP)({template:a.prepare.template,targetWords:y,requirement:a.global.input.requirement,materialFileCount:a.prepare.materialFilePaths.length,evidenceCount:a.understanding.allEvidence.length}),a.planning.generationBudget=(0,de.C)({template:a.prepare.template,chapters:a.planning.effectiveChapters,targetWords:y,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,b0.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,bn.t5)(y),(0,r.fx)(a.global.progressStages,(0,r.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,r.fx)(a.global.progressStages,(0,r.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 z=a.prepare.hasExplicitOutline?"OUTLINE 章节":"模板章节";a.planning.sectionPlanningStage=(0,r.X5)({type:"validation",roleId:"section-planning",status:"success",message:`小节规划:${j} 章统一融合规划(基于${z}、提示词强制小节与项目资料)——融合小节合计 ${i} 个(其中锁定 ${d} 个)、表格需求 ${l} 项`,details:n.length?[...n]:void 0},{subtitle:"小节规划策略"});let B=a.prepare.hasExplicitOutline?`;识别到 OUTLINE 章节 ${a.prepare.explicitPromptChapters.length} 个`:";未识别到有效 OUTLINE,将使用模板章节",C=[...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,r.fx)(a.global.progressStages,(0,r.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} 条${B}`,details:[...C,...a.prepare.runtimePromptRules.executionSummary.map(a=>`runtimeRule|${a}`)]},{subtitle:a.prepare.projectRoleConfigName,roleName:a.prepare.projectRoleConfigName})),(0,r.fx)(a.global.progressStages,(0,r.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,r.fx)(a.global.progressStages,(0,r.X5)({type:"validation",roleId:"document-readiness",status:a.prepare.readiness.ready?"success":"failed",message:"生成准备度:绑定资料已就绪",details:a.prepare.readiness.diagnostics},{subtitle:"生成准备度检查"})),(0,r.fx)(a.global.progressStages,(0,r.X5)({type:"validation",roleId:"diversity-governance",status:"success",message:`多文档反雷同:组织视角「${a.planning.diversityProfile.perspective}」\xd7命名风格「${a.planning.diversityProfile.style}」;历史指纹避让 ${o.length} 个标题${q>0?`,撞名局部改名 ${q} 章${s>0?`(局部改名后仍近似 ${s} 处,已接受)`:""}`:""}`,details:[`历史指纹池 ${a.planning.fingerprintPool.entries.length} 条(仅本机历史文档标题与结构,无正文)`,`多样性画像 ${a.planning.diversityProfile.id}`]},{subtitle:"多样性治理"})),(0,r.fx)(a.global.progressStages,a.planning.sectionPlanningStage),a.global.emitProgress()}var dh=c(76760),di=c(14070),dj=c(70963);async function dk(a){if(a.understanding.evidenceScopePaths=new Set(a.prepare.materialFilePaths),a.understanding.fileRoleByPath=new Map([...a.prepare.kindByPath.entries()].map(([a,b])=>[a,(0,cQ._W)(b)])),a.understanding.fileProcessingByPath=new Map([...a.prepare.processingByPath.entries()].map(([a,b])=>[a,b])),(0,r.fx)(a.global.progressStages,(0,r.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.projectMaterialScope=(0,m.Zq)(a.prepare.projectId,[...a.understanding.availableEvidenceScopePaths]),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=bj({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,r.fx)(a.global.progressStages,(0,r.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=new Map;a.understanding.getCachedFileDetail=b=>{let c=`${b}::full`;if(!d.has(c))try{d.set(c,a.understanding.project.getFileDetail?.(b))}catch{d.set(c,void 0)}return d.get(c)},a.understanding.searchWithCache=async(b,d,f,g)=>{let h=(0,k.Iu)(g),i=(0,e.c6)({query:b,scopedFilePaths:d,limit:f,weights:h,generationMode:!0,reranker:!0}),j=c.get(i);if(j)return j;let l=await a.understanding.manager.search(a.prepare.projectRoot,b,{scope:"project",filters:{filePaths:d},limit:f,weights:h,generationMode:!0,disableReranker:!1}).catch(()=>null),m=l?.results||[];return c.set(i,m),m};let f={stage:(0,r.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,r.fx)(a.global.progressStages,f.stage),a.global.emitProgress();let h=(0,m.Su)(await (0,k.jX)({manager:a.understanding.manager,project:a.understanding.project,projectRoot:a.prepare.projectRoot,scopedFilePaths:[...a.understanding.evidenceScopePaths].filter(Boolean).sort(),fileRoleByPath:a.understanding.fileRoleByPath,fileProcessingByPath:a.understanding.fileProcessingByPath,signal:a.global.input.signal}),a.understanding.projectMaterialScope);(0,m.U2)(h,a.understanding.projectMaterialScope,"project-basic-evidence"),h.length>0&&(a.understanding.allEvidence.push(...h),(0,r.fx)(a.global.progressStages,(0,r.X5)({type:"knowledge_retrieval",roleId:"project-basic-evidence",status:"success",message:`已锁定项目基础事实证据 ${h.length} 条`,details:h.slice(0,8).map(a=>`${dh.basename(a.filePath)}|${a.sectionTitle||"正文片段"}|score=${a.score.toFixed(2)}`)},{subtitle:"基础事实召回",order:a.global.progressStages.length})),a.global.emitProgress());let{safe:i,excluded:j}=await (0,cF.a0)(a.understanding.allEvidence);a.understanding.writerEvidence=i,a.understanding.bidProcedureJudge=await (0,cF.M8)(),j.length>0&&((0,r.fx)(a.global.progressStages,(0,r.X5)({type:"knowledge_retrieval",roleId:"evidence-content-safety",status:"success",message:`证据内容安全过滤:${j.length} 条投标程序/评标纪律类证据已从写作链断开(系统侧提取通道不受影响)`,details:j.slice(0,6).map(a=>`${dh.basename(a.filePath)}|${a.sectionTitle||"正文片段"}`)},{subtitle:"证据内容安全",order:a.global.progressStages.length})),a.global.emitProgress()),a.understanding.safeProjectBasicEvidence=h.filter(a=>!j.includes(a)),a.understanding.excludedEvidenceKeys=new Set(j.map(cF.hM)),a.understanding.earlyFactPool=(0,n.d6)({evidence:a.understanding.writerEvidence,template:a.prepare.template,spec:a.prepare.documentSpec,profile:a.prepare.domainProfile,scope:a.understanding.projectMaterialScope});let l=a.understanding.earlyFactPool.localFacts,p=[...l,...a.understanding.earlyFactPool.projectBasicFacts,...a.understanding.earlyFactPool.preciseFacts];a.understanding.scopedIntelligence=(0,df.hp)({projectRoot:a.prepare.projectRoot,template:a.prepare.template,requirement:a.global.input.requirement,materialScope:a.prepare.materialScope});let q=[...(0,e.lX)(a.understanding.scopedIntelligence?.facts||[]),...p,...(0,o.UT)(a.understanding.writerEvidence)],s=(0,o.GZ)(q,a.prepare.projectRoot);for(let b of(a.understanding.preliminaryFactsModel=await (0,n.d7)(s,a.understanding.earlyFactPool.structuredTables,a.understanding.missingItems,a.prepare.documentSpec,a.prepare.domainProfile),a.understanding.agentWorkflow=(0,bl.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,bl.SU)(a.understanding.agentWorkflow)))(0,r.fx)(a.global.progressStages,b);if(a.understanding.scopedIntelligence&&(0,r.fx)(a.global.progressStages,(0,r.X5)({type:"file_understanding",roleId:"project-intelligence-cache",status:"success",message:`已复用入库后项目理解资产与绑定 scope 快照:${a.understanding.scopedIntelligence.files.length} 份绑定资料`,details:[`项目级缓存时间:${new Date(a.understanding.scopedIntelligence.cache.createdAt).toLocaleString()}`,`scope 快照:${a.understanding.scopedIntelligence.scopeSnapshot.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:"项目理解缓存 / Scope 快照"})),a.global.emitProgress(),a.understanding.projectGraph=a.understanding.agentWorkflow.baseProjectGraph,!a.understanding.scopedIntelligence){(0,r.fx)(a.global.progressStages,(0,r.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,dj.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,r.fx)(a.global.progressStages,b.stage),a.global.emitProgress()}a.understanding.projectGraph&&(a.prepare.projectUnderstanding=(0,cQ._n)(a.prepare.template,a.prepare.projectMaterialProfile,a.understanding.projectGraph)),(0,r.fx)(a.global.progressStages,(0,r.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,o.qD)({facts:q,projectGraph:a.understanding.projectGraph,requiredKeys:o.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,aJ.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))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,aJ.ob)(a)||(0,aJ.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,r.fx)(a.global.progressStages,(0,r.X5)({type:"validation",roleId:"bid-structure-audit",status:"skipped",message:"评审章节证据存在但未提取到评分条目标题:评分标准编号条目提取为空,承接审计将静默通过",details:["请检查招标文件评标办法章节编号格式;评分项要求(创优目标/绿色等级/禁编日期)由评分项要求提取通道覆盖"]},{subtitle:"评标结构校验",order:a.global.progressStages.length}));let v=await (0,ae.Mv)(a.understanding.evaluationItems.map(a=>a.title),t.map(cK));a.understanding.bidStructureAudit=cL({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,A.SD)({tenderTexts:w,requirement:a.global.input.requirement,requiredTables:a.prepare.runtimePromptRules.requiredTables});let x=(0,A.iJ)(a.understanding.bidComposition);if((0,r.fx)(a.global.progressStages,(0,r.X5)({type:"validation",roleId:"bid-composition",status:x.status,message:x.message,details:x.details},{subtitle:"标书编制规格",order:a.global.progressStages.length})),a.global.emitProgress(),(0,A._C)(a.understanding.bidComposition)){let b=a=>{let b=(0,A.E1)(a||"");return{next:b,changed:b!==(a||"")}},c=[],d=b(a.prepare.runtimeRulesText);a.prepare.runtimeRulesText=d.next,d.changed&&c.push("runtimeRulesText");let e=b(a.prepare.promptTexts);a.prepare.promptTexts=e.next,e.changed&&c.push("promptTexts");let f=b(a.prepare.factExtractionPromptTexts);a.prepare.factExtractionPromptTexts=f.next,f.changed&&c.push("factExtractionPromptTexts");let g=b(a.prepare.reviewPromptTexts);a.prepare.reviewPromptTexts=g.next,g.changed&&c.push("reviewPromptTexts");let h=b(a.prepare.repairPromptTexts);a.prepare.repairPromptTexts=h.next,h.changed&&c.push("repairPromptTexts"),c.length>0&&((0,r.fx)(a.global.progressStages,(0,r.X5)({type:"validation",roleId:"bid-composition-prompt-dissolve",status:"success",message:`暗标口径消解:提示词「必须输出表格」规则行已从 ${c.length} 处消费文本移除(${c.join("、")})`,details:["正文表格需求改由终稿文末附表区按招标附表清单直出;写作/检查/修复提示词不再要求正文输出表格"]},{subtitle:"标书编制规格",order:a.global.progressStages.length})),a.global.emitProgress())}if(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,af.Sf)({collectionEvidence:d}):void 0,f=e?(0,af.jl)(a.prepare.projectRoot,e):void 0;return f?(b=f,(0,r.fx)(a.global.progressStages,(0,r.X5)({type:"validation",roleId:"tender-requirements-cache",status:"success",message:"复用上次提取结果(招标资料哈希命中,跳过判定 LLM)",details:(0,af.zD)(b)},{subtitle:"招标要求提取\xb7缓存复用",order:a.global.progressStages.length})),a.global.emitProgress()):(b=await a.global.withProgressHeartbeat(()=>(0,af.mg)(d,{signal:a.global.input.signal,diagnostics:a.planning.generationDiagnostics,onPhase:(b,c)=>{(0,r.fx)(a.global.progressStages,(0,r.X5)({type:"validation",roleId:"tender-requirements-extraction",status:"running",message:b,details:c},{subtitle:"招标要求提取",order:a.global.progressStages.length})),a.global.emitProgress()}})),e&&(0,af.e_)(a.prepare.projectRoot,e,b)),(0,af.l)(b)?((0,r.fx)(a.global.progressStages,(0,r.X5)({type:"validation",roleId:"tender-requirements-extraction",status:"success",message:`招标要求结构化提取完成:要求 ${b.reconciliation.entryCount} 条、排除 ${b.reconciliation.excludedCount} 条(${b.reconciliation.batchCount} 批判定)`,details:(0,af.zD)(b)},{subtitle:"招标要求提取",order:a.global.progressStages.length})),a.global.emitProgress()):d.length>0&&((0,r.fx)(a.global.progressStages,(0,r.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,r.fx)(a.global.progressStages,(0,r.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,r.fx)(a.global.progressStages,(0,r.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,af.Mx)(!1)}})(),a.planning.baseEffectiveChapters=a.understanding.bidStructureAudit.enrichedChapters,a.prepare.template={...a.prepare.template,chapters:a.planning.baseEffectiveChapters},a.planning.plannedDocumentTask=(0,cP.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,di.C1)(a,d,.18)||(0,di.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,df.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,r.fx)(a.global.progressStages,(0,r.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,aJ.GQ)(b.title)}:匹配文件${c?.graphFiles.size||0}个,BOQ项${c?.graphBoqItems.length||0}个`})},{subtitle:"图谱章节映射"})),a.global.emitProgress())}}var dl=c(19898),dm=c(44533),dn=c(29281),dp=c(25840),dq=c(6444),dr=c(85441),ds=c(56942);function dt(){return{parsed:!1,globalRequirements:[],chapterRequirements:[],factClues:[],styleRequirements:[],mandatoryBlockText:"",summary:""}}let du=[(0,z.y4)("你是用户生成要求的语义解析专家。"),'把用户的生成提示词完整解析为可逐条核验的结构化要求清单,不得遗漏用户的任何实质要求;不得把通用客套话(如"请帮我生成""谢谢")当作要求。\n要求必须逐条短句(每条 ≤60 字)、可核验(生成后能判断是否满足);一条要求只写一件事,复合要求必须拆分。\nglobalRequirements:全文级强制要求——写作内容、深度、覆盖面、表格、量化要求等不限定具体章节的要求;若要求明确指向某个章节,必须放入 chapterRequirements 而不是 globalRequirements。\nchapterRequirements:章节级要求——chapterTitle 必须原样取自给定的章节列表,不得编造不存在的章节名;同一章节的多条要求合并为一条记录。\nfactClues:用户提示词中显式给出的项目专属事实线索——含数值、单位、规格、型号、标准编号、日期、地点、规模、金额、目标的短句(如"一般路灯 100W 109套、120W 9套""计划工期 365 日历天""开挖深度 5.2m");要求类语句("必须写X")不算事实线索;线索必须原样保留数值与表述,不得改写或换算。\nstyleRequirements:写作风格与格式要求(语气、详略、表格偏好、禁止风格等),最多 8 条。\n只返回 JSON。'].join("\n");function dv(a,b){let c=String(a||"").trim().replace(/^\d+[.、))]\s*/u,"");return!c||c.length>b?"":c}async function dw(a){let b=(a.requirement||"").trim(),c=(a.chapterTitles||[]).filter(Boolean),d=dt();if(!b||b.length<4||b.length<=40&&!/[::]|\n/u.test(b))return d;try{let e=await (0,bn.bb)(du,`章节列表(chapterRequirements 的 chapterTitle 必须原样取自以下列表):${c.join("、")||"(无)"}
67
67
 
68
68
  用户要求全文:
69
69
  ${b}
@@ -72,7 +72,7 @@ ${b}
72
72
  ${b}`,(0,r.fx)(a.global.progressStages,(0,r.X5)({type:"validation",roleId:"writing-constraints-evolution",status:"success",message:`写作硬约束自进化:已注入缺陷热力图规避提醒 ${b.length} 字符`,details:[b]},{subtitle:"写作硬约束"})))}a.prepare.generationControlPrompt=[a.prepare.generationWritingConstraintsPrompt,a.prepare.projectUnderstanding.prompt,(0,dr.F)(a.prepare.projectMaterialSummary,{publicSafe:!0}),(0,dq.N)(a.prepare.documentSpec,j.sourceHash,{publicSafe:!0}),(0,ds.R)(a.prepare.readiness,{publicSafe:!0})].filter(Boolean).join("\n\n"),a.prepare.diagnosticControlPrompt=[a.prepare.projectUnderstanding.prompt,(0,dr.F)(a.prepare.projectMaterialSummary),(0,dq.N)(a.prepare.documentSpec,j.sourceHash),(0,ds.R)(a.prepare.readiness)].filter(Boolean).join("\n\n");let k=(0,f.fC)([...a.prepare.promptPlan.writerPrompts,...a.prepare.promptPlan.formattingPrompts]),l=(0,f.fC)([...a.prepare.promptPlan.writerPrompts,...a.prepare.promptPlan.chapterPrompts,...a.prepare.promptPlan.formattingPrompts]),m=(0,f.fC)(a.prepare.promptPlan.prompts);a.prepare.webAccessConfig=(0,dn.I)().load().webAccess||{enabled:!1,allowProjectFacts:!1,maxQueriesPerChapter:2,maxResultsPerQuery:3,trustedDomains:[]},a.prepare.runtimePromptRules=(0,b4.c_)({promptTexts:[a.prepare.generationControlPrompt,m].filter(Boolean).join("\n\n"),requirement:a.global.input.requirement,template:a.prepare.template,rolePrompts:a.prepare.promptPlan.prompts}),a.prepare.runtimeRulesText=[(0,b4.el)(a.prepare.runtimePromptRules),!a.prepare.webAccessConfig.enabled?"":"公开资料补充使用规则:\n1. 公开资料只可用于补充通用规范、政策、工艺和措施。\n2. 不得使用公开资料新增或修改项目名称、建设地点、建设规模、工期、质量标准、工程量、材料规格、图纸参数、商务数据。\n3. 本地项目资料与公开资料冲突时,必须以本地项目资料为准。\n4. 不得在正文中出现任何检索过程、外部页面、工具调用或系统内部过程性表述。\n5. 不得把公开资料中的其他项目案例参数写入本项目正文。"].filter(Boolean).join("\n\n"),a.prepare.requirementSemantics=await a.global.withProgressHeartbeat(()=>dw({requirement:a.global.input.requirement,chapterTitles:a.prepare.template.chapters.map(a=>a.title),signal:a.global.input.signal,diagnostics:void 0}).catch(()=>dt())),a.prepare.requirementSemantics.mandatoryBlockText&&(a.prepare.runtimeRulesText=`${a.prepare.runtimeRulesText}
73
73
 
74
74
  ${a.prepare.requirementSemantics.mandatoryBlockText}`),a.prepare.promptTexts=[a.prepare.generationControlPrompt,a.prepare.runtimeRulesText,`生成前规划章节结构:
75
- ${(0,z.CK)(a.prepare.template)}`,k||l].filter(Boolean).join("\n\n"),a.prepare.promptDocumentRules=a.prepare.runtimePromptRules,a.prepare.factExtractionPromptTexts=[a.prepare.diagnosticControlPrompt,a.prepare.runtimeRulesText,(0,f.fC)([...a.prepare.promptPlan.extractionPrompts,...a.prepare.promptPlan.referencePrompts])].filter(Boolean).join("\n\n"),a.prepare.reviewPromptTexts=[a.prepare.generationControlPrompt,a.prepare.runtimeRulesText,(0,f.fC)([...a.prepare.promptPlan.writerPrompts,...a.prepare.promptPlan.chapterPrompts,...a.prepare.promptPlan.formattingPrompts])].filter(Boolean).join("\n\n"),a.prepare.repairPromptTexts=[a.prepare.generationControlPrompt,a.prepare.runtimeRulesText,(0,f.fC)(a.prepare.promptPlan.formattingPrompts)].filter(Boolean).join("\n\n"),(0,r.fx)(a.global.progressStages,(0,r.X5)({type:"validation",roleId:"document-preparation",status:"success",message:`模板规范与项目资料理解完成,识别 ${a.prepare.materialFilePaths.length} 份项目资料`,details:[`提示词绑定:${a.prepare.promptBindings.length} 个`,`项目资料包:${a.prepare.projectMaterialProfile.materialRoots.join("、")||"当前知识库"}`,a.prepare.hasExplicitOutline?`识别 OUTLINE 章节:${a.prepare.explicitPromptChapters.length} 个`:"未识别显式 OUTLINE,使用模板章节"],progress:{current:3,total:3,label:"准备完成"}},{subtitle:"生成准备",order:a.global.progressStages.length})),a.global.emitProgress()}async function dA(a){(0,e.Te)(a.signal);let b={global:{input:a},prepare:{},understanding:{},planning:{},blueprint:{chapterConcurrency:0,reviewConcurrency:0,reviewSemaphore:new e.jf(1),reviewTaskPool:[],basicFactSearchResults:[],integratedBlueprint:void 0,blueprintActive:!1,billFactLock:void 0},chapterLoop:{draftPhaseStartedAt:0,chapterDraftsFinal:[],globalReviewPhaseStartedAt:0}};await dz(b),await dk(b),await dg(b),await cU(b),await cT(b);let c=[],d=!1;if(b.planning.generationStrategy.enableGlobalReview){let a=await ci({globalReviewSamplingRate:b.planning.generationStrategy.globalReviewSamplingRate,chapterDraftsFinal:b.chapterLoop.chapterDraftsFinal,template:b.prepare.template,reviewPromptTexts:b.prepare.reviewPromptTexts,repairPromptTexts:b.prepare.repairPromptTexts,requirement:b.global.input.requirement,signal:b.global.input.signal,projectContext:b.planning.projectContext,generationDiagnostics:b.planning.generationDiagnostics,preliminaryFactsModel:b.understanding.preliminaryFactsModel,scopeConflicts:b.understanding.canonicalFacts.scopeConflicts,progressStages:b.global.progressStages,emitProgress:b.global.emitProgress,withProgressHeartbeat:b.global.withProgressHeartbeat,blueprintData:b.blueprint.integratedBlueprint?.validation.passed?b.blueprint.integratedBlueprint.data:void 0,billFactLock:b.blueprint.billFactLock,bidComposition:b.understanding.bidComposition});c=a.issues,d=a.dedupRan}else await cg({chapterDraftsFinal:b.chapterLoop.chapterDraftsFinal,template:b.prepare.template,repairPromptTexts:b.prepare.repairPromptTexts,projectContext:b.planning.projectContext,requirement:b.global.input.requirement,signal:b.global.input.signal,generationDiagnostics:b.planning.generationDiagnostics,progressStages:b.global.progressStages,emitProgress:b.global.emitProgress,withProgressHeartbeat:b.global.withProgressHeartbeat,bidComposition:b.understanding.bidComposition});await ch({chapterDraftsFinal:b.chapterLoop.chapterDraftsFinal,template:b.prepare.template,repairPromptTexts:b.prepare.repairPromptTexts,requirement:b.global.input.requirement,signal:b.global.input.signal,generationDiagnostics:b.planning.generationDiagnostics,progressStages:b.global.progressStages,emitProgress:b.global.emitProgress,withProgressHeartbeat:b.global.withProgressHeartbeat,bidComposition:b.understanding.bidComposition});let{tableFixApplied:g}=await cd({effectiveChapters:b.planning.effectiveChapters,chapterDraftsFinal:b.chapterLoop.chapterDraftsFinal,template:b.prepare.template,repairPromptTexts:b.prepare.repairPromptTexts,requirement:b.global.input.requirement,signal:b.global.input.signal,generationDiagnostics:b.planning.generationDiagnostics,progressStages:b.global.progressStages,emitProgress:b.global.emitProgress,withProgressHeartbeat:b.global.withProgressHeartbeat,bidComposition:b.understanding.bidComposition});return(g||!d)&&(c=await cb({chapterDraftsFinal:b.chapterLoop.chapterDraftsFinal,globalConsistencyIssues:c,progressStages:b.global.progressStages,emitProgress:b.global.emitProgress})),!function(a){let{generationDiagnostics:b,progressStages:c,chapterDraftsFinal:d,emitProgress:e}=a,f=b.evidence,g=b.llm,h=(0,ae.Bd)();b.semantic=h;let i=h.embedCacheHits+h.embedCacheMisses,j=i>0?Math.round(1e4*h.embedCacheHits/i)/100:null,k=(g.promptCacheHitTokens||0)+(g.promptCacheMissTokens||0),l=k>0?Math.round(1e4*(g.promptCacheHitTokens||0)/k)/100:null,m=g.layerChars,n=m?m.l0+m.l1+m.l2+m.l3:0,o=a=>n>0?Math.round(1e4*a/n)/100:0,p=m&&n>0?`上下文分层:L0 system 恒定 ${m.l0} 字(${o(m.l0)}%)、L1 任务级 ${m.l1} 字(${o(m.l1)}%)、L2 章级 ${m.l2} 字(${o(m.l2)}%)、L3 小节级 ${m.l3} 字(${o(m.l3)}%)`:"上下文分层:本次生成未采集 L0-L3 分层统计";(0,r.fx)(c,(0,r.X5)({type:"validation",roleId:"budget-trim-report",status:"success",message:`预算裁剪报告:证据 ${f.raw} 条 → 采用 ${f.used} 条(噪声过滤 ${f.filteredNoise} 条、预算兜底裁剪 ${f.budgetDropped} 条),证据上下文 ${f.contextChars} 字`,details:[`证据质量:平均噪声分 ${f.avgNoiseScore},平均事实密度 ${f.avgFactDensity}`,`证据分层(T0 关键事实/T1 高相关片段/T2 目录索引):T0 注入 ${f.t0Chars||0} 字、T1 注入 ${f.t1Chars||0} 字、T2 索引 ${f.t2Lines||0} 行、目录省略 ${f.omittedChars||0} 字——A2 块级增量压缩后 T1 应显著低于 T0+T2`,`检索:${f.searchQueries} 组查询,耗时 ${Math.round(f.searchMs/1e3)} 秒`,`LLM:${g.calls} 次调用,失败 ${g.failures} 次,重试 ${g.retries} 次,schema 校验失败 ${g.schemaFailures} 次`,`LLM 上下文输入:${g.inputChars||0} 字符(system+user)${g.unlayeredChars?`(其中未分层调用 ${g.unlayeredChars} 字符,占比 ${Math.round(g.unlayeredChars/(g.inputChars||1)*1e4)/100}%)`:""},输入 ${g.inputTokens||0} token / 输出 ${g.outputTokens||0} token`,p,null===l?"上下文缓存:提供商未返回 prefix cache 指标(prompt_cache_hit/miss_tokens),无法观测命中率":`上下文缓存:命中 ${g.promptCacheHitTokens} token / 未命中 ${g.promptCacheMissTokens} token(命中率 ${l}%)——未命中占比高说明固定前缀未收敛,system/user 分离(A5)后应显著上升`,`推理 token:${g.reasoningTokens?`${g.reasoningTokens} token(思考未完全关闭,disableThinking 未生效风险)`:"0(思考已关闭)"}`,null===j?"bge 嵌入缓存:本次生成无嵌入调用":`bge 嵌入缓存:命中 ${h.embedCacheHits} 条 / 未命中 ${h.embedCacheMisses} 条(命中率 ${j}%,全局 LRU 容量 ${process.env.DOCUMENT_EMBED_CACHE_SIZE||2e3})`,"防爆兜底类软限制(保留并逐项记录裁剪量):selectEvidenceByBudget 的 maxItems/maxChars、uniqueEvidence 噪声过滤、evidenceBundlePrompt 的 maxChars、块级证据 top-k 截断、块级 facts 截断","语义取舍类软限制(已迁移本地语义模型):evaluationTexts 词面过滤→条目对象化、criterionFeatures 二字滑窗→bge-small 余弦、章节证据字符硬截→语义排序取 top-k","LLM 输出侧:schema 校验(截断位置可诊断)、空响应重试提示词收敛、块成稿 maxTokens 按目标字数 1:1.2(不走 thinking \xd76 放大)"]},{subtitle:"预算裁剪审计"})),e(d)}({generationDiagnostics:b.planning.generationDiagnostics,progressStages:b.global.progressStages,chapterDraftsFinal:b.chapterLoop.chapterDraftsFinal,emitProgress:b.global.emitProgress}),b.planning.generationDiagnostics.metrics.push({name:"phase:global-review",startedAt:b.chapterLoop.globalReviewPhaseStartedAt,endedAt:Date.now(),durationMs:Date.now()-b.chapterLoop.globalReviewPhaseStartedAt}),(0,f.X6)(b.planning.generationDiagnostics,"phase:finalize",()=>cE({chapterDrafts:b.chapterLoop.chapterDraftsFinal,chapterDraftsByOrder:b.understanding.chapterDraftsByOrder,chapterGenerationStagesByOrder:b.understanding.chapterGenerationStagesByOrder,chapterGenerationStages:b.understanding.chapterGenerationStages,effectiveChapters:b.planning.effectiveChapters,template:b.prepare.template,allEvidence:b.understanding.allEvidence,projectMaterialScope:b.understanding.projectMaterialScope,progressStages:b.global.progressStages,documentSpec:b.prepare.documentSpec,projectMaterialProfile:b.prepare.projectMaterialProfile,projectMaterialSummary:b.prepare.projectMaterialSummary,domainProfile:b.prepare.domainProfile,documentBudget:b.planning.documentBudget,promptTexts:b.prepare.promptTexts,reviewPromptTexts:b.prepare.reviewPromptTexts,repairPromptTexts:b.prepare.repairPromptTexts,input:b.global.input,generationStrategy:b.planning.generationStrategy,generationDiagnostics:b.planning.generationDiagnostics,chapterScopedContext:b.planning.chapterScopedProjectContext,promptBindings:b.prepare.promptBindings,promptDocumentRules:b.prepare.promptDocumentRules,projectUnderstanding:b.prepare.projectUnderstanding,projectContext:b.planning.projectContext,projectRoot:b.prepare.projectRoot,projectId:b.prepare.projectId,readiness:b.prepare.readiness,factExtractionPromptTexts:b.prepare.factExtractionPromptTexts,blueprintData:b.blueprint.integratedBlueprint?.validation.passed?b.blueprint.integratedBlueprint.data:void 0,bidComposition:b.understanding.bidComposition,billFactLock:b.blueprint.billFactLock,requirementSemantics:b.prepare.requirementSemantics,hasExplicitOutline:b.prepare.hasExplicitOutline,missingItems:b.understanding.missingItems,retrievalCoverageReports:b.understanding.retrievalCoverageReports,failedChapterMessages:b.understanding.failedChapterMessages,webResearchReport:b.understanding.webResearchReport,indexHealth:b.understanding.indexHealth,promptPlan:b.prepare.promptPlan,globalConsistencyIssues:c,scopeConflicts:b.understanding.canonicalFacts.scopeConflicts,writingTaskBrief:b.planning.writingTaskBrief,evaluationCriteriaItems:b.understanding.evaluationItems.map(a=>a.title).filter(Boolean),tenderRequirements:b.planning.tenderRequirements,requirementsSimilarity:b.planning.requirementsSimilarity,factTokenScopeClassifier:b.planning.factTokenScopeClassifier,professionalDepthClassifier:b.planning.professionalDepthClassifier,agentWorkflow:b.understanding.agentWorkflow,emitProgress:b.global.emitProgress,withProgressHeartbeat:b.global.withProgressHeartbeat}))}c(64753),c(18292),c(87635),c(39372)},18292:(a,b,c)=>{c.d(b,{Oc:()=>g,br:()=>l,hS:()=>k});var d=c(1218),e=c(22157),f=c(87635);function g(a,b){return a.filter(a=>!!a.sourceFile)}function h(a){return(0,d.de)(a).replace(/[\s,,.。::;;||()()《》<>【】"“”'‘’\-—–―─-〜~·•]/gu,"").split("[").join("").split("]").join("").toLowerCase()}function i(a){return/工程造价|造价|报价|投标报价|报价明细|综合单价|单价|合价|金额|税率|增值税|利润|预留金|暂列金额|最高投标限价|招标控制价|合同估算价|合同估算价格|投资估算|估算价/u.test(a)}function j(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)||i(b)||b.length>160?"":b}function k(a,b,c={}){let d=b.filter(a=>{let b=`${a.key||""}${a.fieldName||""}${a.fieldId||""}`,c=(0,e.lG)(a.value);return!i(`${b}${c}`)&&!!j(c)&&!(/\.(?:docx?|pdf|xlsx?|zip|rar)$/iu.test(c)||/[A-Z]{8,}/u.test(c)||/([\u4e00-\u9fa5]{2,3})\1/u.test(c)||/[((](?:公章|签章|签名|盖章)[))]|住所:|法定代表人:|委托代理人:|年月日/u.test(c)||/[::]$/u.test(c)||/^见.{0,12}(?:前附表|须知|公告|文件)/u.test(c)||/^(?:项目所在地|项目名称|工程名称|标段名称|分部小计|小计|合计|总计|计量单位)$/u.test(c)||/^(?:项目编号|招标项目编号|标段名称|询标日期)[::]/u.test(c)||/招标人|建设单位|发包人/u.test(b)&&/投标|参加|承担|费用|协商|贯彻|方针|为了/u.test(c)||/[\u3400-\u4DBF\uE000-\uF8FF]/u.test(c)||/^[A-Z]\d[A-Z]\d/u.test(c)||/^[((][^))]{1,12}[))]$/u.test(c)&&/名称|编号|单位|日期|签章|公章|甲方|乙方/u.test(c)||/招标人|建设单位|发包人|项目名称|工程名称/u.test(b)&&/^(?:将报|拟报|应按|应报|须报|须按|拟按)/u.test(c)||/^(?:本项目|项目|工程)(?:位于|地处|坐落在?|选址在?)/u.test(c)||/^[((]?[一二三四五六七八九十]{1,3}[))]?是/u.test(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 d){let d=j(b.value).replace(/^(?:招标人|招标单位|建设单位|发包人|项目名称|工程名称|项目编号|招标项目编号|标段名称|建设地点|建设规模|招标范围|计划工期|合同工期|质量标准|质量目标)[::]\s*/u,"");if(!d)continue;let e=b.fieldName||b.key||b.fieldId||"资料事实",i=`${e}:${d}`;if(!f.has(i)&&(f.add(i),!function(a,b){let c=h(a),d=h(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=>h(a).length>=2&&c.includes(h(a))))return!0;let f=b.split(/[、,,;;。::\s]+/u).map(a=>h(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}(a,d)&&(g.push({fact:b,label:e,value:d}),c.maxItems&&g.length>=c.maxItems)))break}return g}function l(a,b,c={}){return k(a,b,{maxItems:c.maxIssues}).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:()=>q,Ep:()=>p,I6:()=>t,KJ:()=>x,ab:()=>v,ap:()=>y,eB:()=>u,eL:()=>l,iA:()=>s,qj:()=>w,sh:()=>r,xu:()=>m});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}function p(a,b){let c=(function(a,b){let c=[],d=a.match(/施工工作包结构化数据:\s*(\[[^\n]*\])/u);if(d)try{for(let a of JSON.parse(d[1])){let b=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));!(!b||/项目施工$|项目$|^\d{4}年度/u.test(b))&&(!d||/资料内容事实|#{2,6}/u.test(d)||c.push({name:b,scope:d,quantities:e,process:f,acceptance:g}))}if(c.length>0)return c.slice(0,16)}catch{c.length=0}for(let b of a.split(/\r?\n/u).filter(a=>/^\d+\.\s+.+?|范围:/u.test(a))){let a=b.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)||c.push({name:d,scope:e,quantities:f,process:g,acceptance:h}))}return c.slice(0,8)})(a,0).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=a.indexOf("招标范围");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)),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,g=/计价|费用|税金|规费|暂列|暂估|合计|汇总|小计|措施项目|其他项目|税金项目/u;for(let a of c){let b=a.key.replace(/^清单条目:/u,"").trim();!(!b||b.length<2||b.length>24||g.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 p=/公厕|厕所|过路涵|涵洞|涵管|污水|排水沟|水沟|清淤|沟塘|塘|小菜园|菜园|菜地|花池|树池|挡墙|护栏|路灯|检查井|化粪池|泵站|生态池|生态塘|护坡|驳岸|栈道|步道/u;if(g.length<3)for(let a of[...f].sort((a,b)=>Number(p.test(b))-Number(p.test(a)))){if(g.length>=12)break;h(a)}else for(let a of f){if(g.length>=16)break;p.test(a)&&h(a)}return g}function q(a,b,c=3,d){let e=d??p(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 r(a,b,c=3){let d=p(a,b);return d.length>=c?d:[]}function s(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 t(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 u(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=t(l);return m===l?a:a.replace(l,m)}function v(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 w(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 x(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}
75
+ ${(0,z.CK)(a.prepare.template)}`,k||l].filter(Boolean).join("\n\n"),a.prepare.promptDocumentRules=a.prepare.runtimePromptRules,a.prepare.factExtractionPromptTexts=[a.prepare.diagnosticControlPrompt,a.prepare.runtimeRulesText,(0,f.fC)([...a.prepare.promptPlan.extractionPrompts,...a.prepare.promptPlan.referencePrompts])].filter(Boolean).join("\n\n"),a.prepare.reviewPromptTexts=[a.prepare.generationControlPrompt,a.prepare.runtimeRulesText,(0,f.fC)([...a.prepare.promptPlan.writerPrompts,...a.prepare.promptPlan.chapterPrompts,...a.prepare.promptPlan.formattingPrompts])].filter(Boolean).join("\n\n"),a.prepare.repairPromptTexts=[a.prepare.generationControlPrompt,a.prepare.runtimeRulesText,(0,f.fC)(a.prepare.promptPlan.formattingPrompts)].filter(Boolean).join("\n\n"),(0,r.fx)(a.global.progressStages,(0,r.X5)({type:"validation",roleId:"document-preparation",status:"success",message:`模板规范与项目资料理解完成,识别 ${a.prepare.materialFilePaths.length} 份项目资料`,details:[`提示词绑定:${a.prepare.promptBindings.length} 个`,`项目资料包:${a.prepare.projectMaterialProfile.materialRoots.join("、")||"当前知识库"}`,a.prepare.hasExplicitOutline?`识别 OUTLINE 章节:${a.prepare.explicitPromptChapters.length} 个`:"未识别显式 OUTLINE,使用模板章节"],progress:{current:3,total:3,label:"准备完成"}},{subtitle:"生成准备",order:a.global.progressStages.length})),a.global.emitProgress()}async function dA(a){(0,e.Te)(a.signal);let b={global:{input:a},prepare:{},understanding:{},planning:{},blueprint:{chapterConcurrency:0,reviewConcurrency:0,reviewSemaphore:new e.jf(1),reviewTaskPool:[],basicFactSearchResults:[],integratedBlueprint:void 0,blueprintActive:!1,requirementAssignments:[],billFactLock:void 0},chapterLoop:{draftPhaseStartedAt:0,chapterDraftsFinal:[],globalReviewPhaseStartedAt:0}};await dz(b),await dk(b),await dg(b),await cU(b),await cT(b);let c=[],d=!1;if(b.planning.generationStrategy.enableGlobalReview){let a=await ci({globalReviewSamplingRate:b.planning.generationStrategy.globalReviewSamplingRate,chapterDraftsFinal:b.chapterLoop.chapterDraftsFinal,template:b.prepare.template,reviewPromptTexts:b.prepare.reviewPromptTexts,repairPromptTexts:b.prepare.repairPromptTexts,requirement:b.global.input.requirement,signal:b.global.input.signal,projectContext:b.planning.projectContext,generationDiagnostics:b.planning.generationDiagnostics,preliminaryFactsModel:b.understanding.preliminaryFactsModel,scopeConflicts:b.understanding.canonicalFacts.scopeConflicts,progressStages:b.global.progressStages,emitProgress:b.global.emitProgress,withProgressHeartbeat:b.global.withProgressHeartbeat,blueprintData:b.blueprint.integratedBlueprint?.validation.passed?b.blueprint.integratedBlueprint.data:void 0,billFactLock:b.blueprint.billFactLock,bidComposition:b.understanding.bidComposition});c=a.issues,d=a.dedupRan}else await cg({chapterDraftsFinal:b.chapterLoop.chapterDraftsFinal,template:b.prepare.template,repairPromptTexts:b.prepare.repairPromptTexts,projectContext:b.planning.projectContext,requirement:b.global.input.requirement,signal:b.global.input.signal,generationDiagnostics:b.planning.generationDiagnostics,progressStages:b.global.progressStages,emitProgress:b.global.emitProgress,withProgressHeartbeat:b.global.withProgressHeartbeat,bidComposition:b.understanding.bidComposition});await ch({chapterDraftsFinal:b.chapterLoop.chapterDraftsFinal,template:b.prepare.template,repairPromptTexts:b.prepare.repairPromptTexts,requirement:b.global.input.requirement,signal:b.global.input.signal,generationDiagnostics:b.planning.generationDiagnostics,progressStages:b.global.progressStages,emitProgress:b.global.emitProgress,withProgressHeartbeat:b.global.withProgressHeartbeat,bidComposition:b.understanding.bidComposition});let{tableFixApplied:g}=await cd({effectiveChapters:b.planning.effectiveChapters,chapterDraftsFinal:b.chapterLoop.chapterDraftsFinal,template:b.prepare.template,repairPromptTexts:b.prepare.repairPromptTexts,requirement:b.global.input.requirement,signal:b.global.input.signal,generationDiagnostics:b.planning.generationDiagnostics,progressStages:b.global.progressStages,emitProgress:b.global.emitProgress,withProgressHeartbeat:b.global.withProgressHeartbeat,bidComposition:b.understanding.bidComposition});return(g||!d)&&(c=await cb({chapterDraftsFinal:b.chapterLoop.chapterDraftsFinal,globalConsistencyIssues:c,progressStages:b.global.progressStages,emitProgress:b.global.emitProgress})),!function(a){let{generationDiagnostics:b,progressStages:c,chapterDraftsFinal:d,emitProgress:e}=a,f=b.evidence,g=b.llm,h=(0,ae.Bd)();b.semantic=h;let i=h.embedCacheHits+h.embedCacheMisses,j=i>0?Math.round(1e4*h.embedCacheHits/i)/100:null,k=(g.promptCacheHitTokens||0)+(g.promptCacheMissTokens||0),l=k>0?Math.round(1e4*(g.promptCacheHitTokens||0)/k)/100:null,m=g.layerChars,n=m?m.l0+m.l1+m.l2+m.l3:0,o=a=>n>0?Math.round(1e4*a/n)/100:0,p=m&&n>0?`上下文分层:L0 system 恒定 ${m.l0} 字(${o(m.l0)}%)、L1 任务级 ${m.l1} 字(${o(m.l1)}%)、L2 章级 ${m.l2} 字(${o(m.l2)}%)、L3 小节级 ${m.l3} 字(${o(m.l3)}%)`:"上下文分层:本次生成未采集 L0-L3 分层统计";(0,r.fx)(c,(0,r.X5)({type:"validation",roleId:"budget-trim-report",status:"success",message:`预算裁剪报告:证据 ${f.raw} 条 → 采用 ${f.used} 条(噪声过滤 ${f.filteredNoise} 条、预算兜底裁剪 ${f.budgetDropped} 条),证据上下文 ${f.contextChars} 字`,details:[`证据质量:平均噪声分 ${f.avgNoiseScore},平均事实密度 ${f.avgFactDensity}`,`证据分层(T0 关键事实/T1 高相关片段/T2 目录索引):T0 注入 ${f.t0Chars||0} 字、T1 注入 ${f.t1Chars||0} 字、T2 索引 ${f.t2Lines||0} 行、目录省略 ${f.omittedChars||0} 字——A2 块级增量压缩后 T1 应显著低于 T0+T2`,`检索:${f.searchQueries} 组查询,耗时 ${Math.round(f.searchMs/1e3)} 秒`,`LLM:${g.calls} 次调用,失败 ${g.failures} 次,重试 ${g.retries} 次,schema 校验失败 ${g.schemaFailures} 次`,`LLM 上下文输入:${g.inputChars||0} 字符(system+user)${g.unlayeredChars?`(其中未分层调用 ${g.unlayeredChars} 字符,占比 ${Math.round(g.unlayeredChars/(g.inputChars||1)*1e4)/100}%)`:""},输入 ${g.inputTokens||0} token / 输出 ${g.outputTokens||0} token`,p,null===l?"上下文缓存:提供商未返回 prefix cache 指标(prompt_cache_hit/miss_tokens),无法观测命中率":`上下文缓存:命中 ${g.promptCacheHitTokens} token / 未命中 ${g.promptCacheMissTokens} token(命中率 ${l}%)——未命中占比高说明固定前缀未收敛,system/user 分离(A5)后应显著上升`,`推理 token:${g.reasoningTokens?`${g.reasoningTokens} token(思考未完全关闭,disableThinking 未生效风险)`:"0(思考已关闭)"}`,null===j?"bge 嵌入缓存:本次生成无嵌入调用":`bge 嵌入缓存:命中 ${h.embedCacheHits} 条 / 未命中 ${h.embedCacheMisses} 条(命中率 ${j}%,全局 LRU 容量 ${process.env.DOCUMENT_EMBED_CACHE_SIZE||2e3})`,"防爆兜底类软限制(保留并逐项记录裁剪量):selectEvidenceByBudget 的 maxItems/maxChars、uniqueEvidence 噪声过滤、evidenceBundlePrompt 的 maxChars、块级证据 top-k 截断、块级 facts 截断","语义取舍类软限制(已迁移本地语义模型):evaluationTexts 词面过滤→条目对象化、criterionFeatures 二字滑窗→bge-small 余弦、章节证据字符硬截→语义排序取 top-k","LLM 输出侧:schema 校验(截断位置可诊断)、空响应重试提示词收敛、块成稿 maxTokens 按目标字数 1:1.2(不走 thinking \xd76 放大)"]},{subtitle:"预算裁剪审计"})),e(d)}({generationDiagnostics:b.planning.generationDiagnostics,progressStages:b.global.progressStages,chapterDraftsFinal:b.chapterLoop.chapterDraftsFinal,emitProgress:b.global.emitProgress}),b.planning.generationDiagnostics.metrics.push({name:"phase:global-review",startedAt:b.chapterLoop.globalReviewPhaseStartedAt,endedAt:Date.now(),durationMs:Date.now()-b.chapterLoop.globalReviewPhaseStartedAt}),(0,f.X6)(b.planning.generationDiagnostics,"phase:finalize",()=>cE({chapterDrafts:b.chapterLoop.chapterDraftsFinal,chapterDraftsByOrder:b.understanding.chapterDraftsByOrder,chapterGenerationStagesByOrder:b.understanding.chapterGenerationStagesByOrder,chapterGenerationStages:b.understanding.chapterGenerationStages,effectiveChapters:b.planning.effectiveChapters,template:b.prepare.template,allEvidence:b.understanding.allEvidence,projectMaterialScope:b.understanding.projectMaterialScope,progressStages:b.global.progressStages,documentSpec:b.prepare.documentSpec,projectMaterialProfile:b.prepare.projectMaterialProfile,projectMaterialSummary:b.prepare.projectMaterialSummary,domainProfile:b.prepare.domainProfile,documentBudget:b.planning.documentBudget,promptTexts:b.prepare.promptTexts,reviewPromptTexts:b.prepare.reviewPromptTexts,repairPromptTexts:b.prepare.repairPromptTexts,input:b.global.input,generationStrategy:b.planning.generationStrategy,generationDiagnostics:b.planning.generationDiagnostics,chapterScopedContext:b.planning.chapterScopedProjectContext,promptBindings:b.prepare.promptBindings,promptDocumentRules:b.prepare.promptDocumentRules,projectUnderstanding:b.prepare.projectUnderstanding,projectContext:b.planning.projectContext,projectRoot:b.prepare.projectRoot,projectId:b.prepare.projectId,readiness:b.prepare.readiness,factExtractionPromptTexts:b.prepare.factExtractionPromptTexts,blueprintData:b.blueprint.integratedBlueprint?.validation.passed?b.blueprint.integratedBlueprint.data:void 0,bidComposition:b.understanding.bidComposition,billFactLock:b.blueprint.billFactLock,requirementSemantics:b.prepare.requirementSemantics,hasExplicitOutline:b.prepare.hasExplicitOutline,missingItems:b.understanding.missingItems,retrievalCoverageReports:b.understanding.retrievalCoverageReports,failedChapterMessages:b.understanding.failedChapterMessages,webResearchReport:b.understanding.webResearchReport,indexHealth:b.understanding.indexHealth,promptPlan:b.prepare.promptPlan,globalConsistencyIssues:c,scopeConflicts:b.understanding.canonicalFacts.scopeConflicts,writingTaskBrief:b.planning.writingTaskBrief,evaluationCriteriaItems:b.understanding.evaluationItems.map(a=>a.title).filter(Boolean),tenderRequirements:b.planning.tenderRequirements,requirementAssignments:b.blueprint.requirementAssignments,requirementsSimilarity:b.planning.requirementsSimilarity,factTokenScopeClassifier:b.planning.factTokenScopeClassifier,professionalDepthClassifier:b.planning.professionalDepthClassifier,agentWorkflow:b.understanding.agentWorkflow,emitProgress:b.global.emitProgress,withProgressHeartbeat:b.global.withProgressHeartbeat}))}c(64753),c(18292),c(87635),c(39372)},18292:(a,b,c)=>{c.d(b,{Oc:()=>g,br:()=>l,hS:()=>k});var d=c(1218),e=c(22157),f=c(87635);function g(a,b){return a.filter(a=>!!a.sourceFile)}function h(a){return(0,d.de)(a).replace(/[\s,,.。::;;||()()《》<>【】"“”'‘’\-—–―─-〜~·•]/gu,"").split("[").join("").split("]").join("").toLowerCase()}function i(a){return/工程造价|造价|报价|投标报价|报价明细|综合单价|单价|合价|金额|税率|增值税|利润|预留金|暂列金额|最高投标限价|招标控制价|合同估算价|合同估算价格|投资估算|估算价/u.test(a)}function j(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)||i(b)||b.length>160?"":b}function k(a,b,c={}){let d=b.filter(a=>{let b=`${a.key||""}${a.fieldName||""}${a.fieldId||""}`,c=(0,e.lG)(a.value);return!i(`${b}${c}`)&&!!j(c)&&!(/\.(?:docx?|pdf|xlsx?|zip|rar)$/iu.test(c)||/[A-Z]{8,}/u.test(c)||/([\u4e00-\u9fa5]{2,3})\1/u.test(c)||/[((](?:公章|签章|签名|盖章)[))]|住所:|法定代表人:|委托代理人:|年月日/u.test(c)||/[::]$/u.test(c)||/^见.{0,12}(?:前附表|须知|公告|文件)/u.test(c)||/^(?:项目所在地|项目名称|工程名称|标段名称|分部小计|小计|合计|总计|计量单位)$/u.test(c)||/^(?:项目编号|招标项目编号|标段名称|询标日期)[::]/u.test(c)||/招标人|建设单位|发包人/u.test(b)&&/投标|参加|承担|费用|协商|贯彻|方针|为了/u.test(c)||/[\u3400-\u4DBF\uE000-\uF8FF]/u.test(c)||/^[A-Z]\d[A-Z]\d/u.test(c)||/^[((][^))]{1,12}[))]$/u.test(c)&&/名称|编号|单位|日期|签章|公章|甲方|乙方/u.test(c)||/招标人|建设单位|发包人|项目名称|工程名称/u.test(b)&&/^(?:将报|拟报|应按|应报|须报|须按|拟按)/u.test(c)||/^(?:本项目|项目|工程)(?:位于|地处|坐落在?|选址在?)/u.test(c)||/^[((]?[一二三四五六七八九十]{1,3}[))]?是/u.test(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 d){let d=j(b.value).replace(/^(?:招标人|招标单位|建设单位|发包人|项目名称|工程名称|项目编号|招标项目编号|标段名称|建设地点|建设规模|招标范围|计划工期|合同工期|质量标准|质量目标)[::]\s*/u,"");if(!d)continue;let e=b.fieldName||b.key||b.fieldId||"资料事实",i=`${e}:${d}`;if(!f.has(i)&&(f.add(i),!function(a,b){let c=h(a),d=h(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=>h(a).length>=2&&c.includes(h(a))))return!0;let f=b.split(/[、,,;;。::\s]+/u).map(a=>h(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}(a,d)&&(g.push({fact:b,label:e,value:d}),c.maxItems&&g.length>=c.maxItems)))break}return g}function l(a,b,c={}){return k(a,b,{maxItems:c.maxIssues}).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:()=>q,Ep:()=>p,I6:()=>t,KJ:()=>x,ab:()=>v,ap:()=>y,eB:()=>u,eL:()=>l,iA:()=>s,qj:()=>w,sh:()=>r,xu:()=>m});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}function p(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.slice(0,16)}catch{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=a.indexOf("招标范围");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)),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,g=/计价|费用|税金|规费|暂列|暂估|合计|汇总|小计|措施项目|其他项目|税金项目/u;for(let a of c){let b=a.key.replace(/^清单条目:/u,"").trim();!(!b||b.length<2||b.length>24||g.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 p=/公厕|厕所|过路涵|涵洞|涵管|污水|排水沟|水沟|清淤|沟塘|塘|小菜园|菜园|菜地|花池|树池|挡墙|护栏|路灯|检查井|化粪池|泵站|生态池|生态塘|护坡|驳岸|栈道|步道/u;if(g.length<3)for(let a of[...f].sort((a,b)=>Number(p.test(b))-Number(p.test(a)))){if(g.length>=12)break;h(a)}else for(let a of f){if(g.length>=16)break;p.test(a)&&h(a)}return g}function q(a,b,c=3,d){let e=d??p(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 r(a,b,c=3){let d=p(a,b);return d.length>=c?d:[]}function s(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 t(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 u(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=t(l);return m===l?a:a.replace(l,m)}function v(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 w(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 x(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}
76
76
  ${d.trim()}
77
77
  `:`${c}
78
78
  #### ${b}
@@ -101,7 +101,7 @@ ${r}`),drawingNote:"总平面布置图/横道图/组织机构图为后期人工
101
101
  ]{18,60})[。!?!?]`,"gu");function V(a){let b=[],c=new Map;for(let b of a.matchAll(U)){let a=b[1].trim(),d=a.replace(/[\d,,.。%%㎡m2²]/gu,"").slice(0,16);if(d.length<10)continue;let e=c.get(d)||{count:0,sample:a};e.count+=1,c.set(d,e)}for(let{count:a,sample:d}of c.values())a<3||b.push({level:"warning",severity:"warning",category:"style",owner:"llm",repairability:"llm_repairable",message:`段首固定开场机械重复 ${a} 次:“${d.slice(0,30)}…”`,suggestion:"同一段首句式只保留首次出现处,其余处按所在章节语境改写为差异化开场,避免模板化套话观感。"});return b.slice(0,3)}function W(a){let b=[],{overviewBody:c,sentences:d}=function(a){let b,c=a.split("\n"),d=[];for(let a=0;a<c.length;a+=1){let e=/^(#{2,4})\s+(.+)$/u.exec(c[a].trim());if(e){let c=e[1].length;/(?:工程概况|项目概况|基本信息)/u.test(e[2])?b={index:a,level:c}:b&&c<=b.level&&(d.push([b.index,a]),b=void 0)}}b&&d.push([b.index,c.length]);let e=a=>d.some(([b,c])=>a>=b&&a<c),f=c.filter((a,b)=>e(b)).join("\n"),g=[];for(let a=0;a<c.length;a+=1){if(e(a))continue;let b=/本项目为|本工程为|该项目为|该工程为/u.exec(c[a]);if(!b)continue;let d=c[a].slice(b.index).split(/[。!?!?]/u)[0];d&&d.length>=12&&g.push(d)}return{overviewBody:f,sentences:g}}(a);if(0===d.length||!c)return b;let f=(c.match(/[\p{Script=Han}]/gu)||[]).join("");if(!f)return b;let g=[];for(let a of d)if(function(a,b){return(0,l.qr)(a,b)>=8||a.split("、").map(a=>(a.match(/[\p{Script=Han}]/gu)||[]).join("")).filter(a=>a.length>=3).filter(a=>b.includes(a)).length>=2}(a,f)&&g.push(a.slice(0,36)),g.length>=3)break;return 0===g.length||b.push({level:"error",severity:"blocker",category:"style",owner:"llm",repairability:"llm_repairable",message:`项目概况段跨章复述不得出现:概况章外有 ${g.length} 处以“本项目为/本工程为”等总述开头整段复述概况内容:${g.map(a=>`“${a}…”`).join("、")}`,suggestion:"总述数据只在工程概况类小节集中交代一次:其他章节直接写本章内容,仅可引用所需的具体数字(如计划工期天数),不得复述完整概况段。",provenance:{detectorId:"overview-recap",fingerprint:(0,e.c6)(a)}}),b}let X=["销项","复查","整改","闭环"];function Y(a){let b=[],c=(0,d.V7)(a);if(c<3e3)return b;let e=[];for(let b of X){let d=a.split(b).length-1;e.push(d/c*1e3)}let f=Math.max(...e),g=X[e.indexOf(f)];return f>=3&&b.push({level:"warning",severity:"warning",category:"style",owner:"llm",repairability:"llm_repairable",message:`闭环句式模板化密集:“${g}”达 ${f.toFixed(1)} 次/千字(销项/复查/整改/闭环统一结尾高度重复)`,suggestion:"保留关键控制环节的闭环表述,其余改为差异化的过程控制语言(检验批验收、实测实量、旁站记录等),提升语言精练度。"}),b}let Z=["专项设计文件尚未完成,待后续补充","评分指标存在缺口尚未明确","依据承诺函后续跟踪完善","本项目未采用行业认定的新技术、新工艺、新设备、新材料"],$=/编制范围为[^。;;]{0,40}?所界定的全部施工内容|作为施工组织的控制性约束条件|分项验收[,,]?验收记录经监理工程师签字确认后归档|(?:执行|按|依据|按照)[^。;;]{0,10}?(?:〔|【)?20\d{2}(?:〕|】)?\s*\d+\s*号\s*(?:文件|办法|规定)?/u,_=/未落实[^。;;]{0,24}?(?:整改|复查|销项|复验)|未(?:明确|列明|注明)[^。;;]{0,36}?按[^。;;]{0,44}?执行|(?:发现|对)[^。;;]{0,48}?(?:缺失|损坏|不全|脱岗|未审批|不合格)[^。;;]{0,72}?(?:整改|复查|销项|补齐|更换|停止作业|恢复施工)|(?:不得|严禁|禁止)[^。;;]{0,40}?(?:避免|防止)[^。;;]{0,20}?(?:返工|窝工|损失|事故)|(?:重难点|难点)(?:源于|在于)[^。;;]{0,80}?(?:若|如)未[^。;;]{0,40}?(?:将|会|可能)/u;async function aa(a){let b=[],c=a.split(/\n+/u).filter(a=>a.trim()&&!/^\s*(#{1,6}\s+|\||[-*+]\s|>)/u.test(a)).flatMap(a=>a.split(/[。;;]/u)).map(a=>a.trim()).filter(a=>a.length>=12);if(0===c.length)return b;let d=/尚未|未完成|未明确|未采用|未落实|未确定|未闭合|存在缺口|有待|待补充|待完善|跟踪完善|不够|不明确|缺失|缺少|缺乏|风险较大|难以保证|无法保证|正在办理|暂未|未能|需进一步|不进行分包|不再分包|不转包/u,e=await (0,f.Mv)(c,[...Z]),g=[...new Set(c.filter(a=>d.test(a)&&!$.test(a)&&!_.test(a)&&Z.some(b=>e(a,b)>=f.Eh)))];if(0===g.length)return b;for(let a of g)b.push({level:"error",severity:"blocker",category:"style",owner:"llm",repairability:"llm_repairable",message:`自伤表述候选:“${a}”暴露投标短板,需按上下文判定后改写`,suggestion:"投标文件不得主动暴露“专项设计未完成/指标存在缺口”等短板:改写为正向落实表述(如“按施工图绿色建筑专篇编制专项方案,逐项落实评分项并跟踪验收”);如属现场条件合理风险描述(地质/管线尚不明确),保留但需配套勘查与应对措施。"});return b.slice(0,3)}let ab=/(?<!分)([\u4e00-\u9fa5]{2})\1(?!项)/gu;function ac(a){let b=[...new Set(a.match(ab)||[])].slice(0,3);return 0===b.length?[]:[{level:"error",severity:"blocker",category:"style",owner:"llm",repairability:"llm_repairable",message:`正文存在叠词重复表述:${b.map(a=>`“${a}”`).join("、")}`,suggestion:"删除紧邻重复字词,保持语句完整通顺(“执行执行”改为“执行”)。"}]}let ad="抹面|打底|找平|坐浆|结合层|粘结层|罩面|批嵌|腻子";function ae(a){let b=[];for(let c of a.matchAll(RegExp(`(${ad})[^。;;
102
102
  |]{0,10}?(\\d{3,})\\s*mm`,"gu"))){let a=Number(c[2]);a>=100&&b.push(`“${c[1]}”厚度 ${a}mm`)}for(let c of a.matchAll(RegExp(`(\\d{3,})\\s*mm厚?[^。;;
103
103
  |]{0,18}(${ad})`,"gu"))){let a=Number(c[1]);a>=100&&b.push(`“${c[2]}”厚度 ${a}mm`)}let c=[...new Set(b)].slice(0,3);return 0===c.length?[]:[{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`装饰层工艺参数异常:${c.join("、")} 远超工艺常规厚度(抹面/打底/找平 20mm、坐浆 20~30mm)`,suggestion:"装饰层(抹面/打底/找平/坐浆/结合层)厚度按工艺常规取值:抹面打底找平 20mm、坐浆 20~30mm,与结构层厚度(墙体/垫层/回填)区分,不得串用。"}]}function af(a){let b=[],c=[...a.matchAll(/高峰期总人数(\d+)人|劳动力总人数(\d+)人|总人数(\d+)人/gu)].map(a=>Number(a[1]||a[2]||a[3])).filter(a=>a>0),d=[...a.matchAll(/高峰(?:期)?人数(\d+)人|峰值(?:需求|人数)?[为约]?(\d+)人/gu)].map(a=>Number(a[1]||a[2])).filter(a=>a>0),e=[...new Set(c)],f=[...new Set(d)];e.filter(a=>f.some(b=>b!==a)).length>0&&b.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`劳动力峰值口径矛盾:正文「总人数」出现 ${e.join("人、")}人 与「高峰人数」出现 ${f.join("人、")}人 并存,峰值人数必须唯一`,suggestion:"全文劳动力峰值只允许一个口径:统一总人数与高峰人数为同一数值,删除矛盾口径;分阶段梯次投入人数(准备阶段/主体阶段/竣工阶段)属合法动态配置,不在统一范围内。"});let g=new Map;for(let b of(0,i.Rm)(a)){if(!b.hasTradeCol||0===b.tradeCells.length)continue;let a=new Map;for(let c of b.tradeCells){let b=a.get(c.trade)??0;c.value>b&&a.set(c.trade,c.value)}for(let[b,c]of a){let a=g.get(b)??[];a.push(c),g.set(b,a)}}let h=[...g.entries()].filter(([,a])=>a.length>=2&&new Set(a).size>=2);return h.length>0&&b.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`同工种跨表高峰人数矛盾:${h.map(([a,b])=>`${a} ${b.join("人、")}人`).join(";")} 各表并存,同一工种高峰人数必须唯一`,suggestion:"同一工种在各表中的高峰人数必须一致:以工种配置表(第五章)为权威口径统一各表数值;分阶段投入计划表内同工种不同阶段的动态配置属合法数据,不参与统一。"}),b}function ag(a){let b=function(a){let b=[];for(let c of a.matchAll(/(?:生活用水|施工用水|临时用水|用水)[^。;;\n]{0,24}(?:高峰(?:期)?人数|高峰人数)[^。;;\n]{0,8}?([\d,]+)\s*人/gu)){let a=Number(c[1].replace(/[,,]/gu,""));Number.isFinite(a)&&a>0&&b.push(a)}return b}(a);if(0===b.length)return[];let c=[];for(let b of a.matchAll(/高峰(?:期)?人数([\d,]+)人|峰值(?:需求|人数)?[为约]?([\d,]+)人|劳动力峰值[^。;;\n]{0,8}?([\d,]+)\s*人/gu)){let d=Number((b[1]||b[2]||b[3]||"").replace(/[,,]/gu,""));if(!Number.isFinite(d)||d<=0)continue;let e=(b.index??0)+b[0].indexOf(b[1]||b[2]||b[3]||""),f=a.slice(Math.max(0,e-24),e);!/生活用水|施工用水|临时用水|用水/u.test(f)&&((0,i.rx)(a,e)||c.push(d))}let d=[...new Set(c)];if(0===d.length)return[];let e=[...new Set(b)];return 0===e.filter(a=>d.every(b=>b!==a)).length?[]:[{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`用水高峰人数与劳动力峰值不一致:临时用水按高峰人数 ${e.join("人、")}人 计算,而劳动力峰值为 ${d.join("人、")}人,两处引用必须为同一数值`,suggestion:"临时用水高峰人数与劳动力峰值为同一批施工人员的两个引用口径:统一改为劳动力峰值人数,删除自编的用水人数口径。"}]}let ah=/不再另行(?:出现|统计|编制|设置|单列|重复)[^。;;\u000A]{0,40}|以[^。;;\u000A]{0,16}为唯一[^。;;\u000A]{0,24}不再[^。;;\u000A]{0,20}|不再另行[^。;;\u000A]{0,24}/gu;function ai(a){let b=[...a.matchAll(ah)].map(a=>a[0].trim().slice(0,30));return 0===b.length?[]:[{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`正文存在元话语声明句 ${b.length} 处(${[...new Set(b)].slice(0,3).join("、")}):声明≠数据,正文只保留数据不保留口径声明`,suggestion:"删除「不再另行出现其他口径」「不再另行统计累计投入人次」「以 X 为唯一控制基准,不再…」类自我声明句;数据本身的唯一性由数值一致体现,不需要文字声明。"}]}let aj=/(?:[Pp]\s*=\s*[^。;;\n]{0,60}(?:Σ|cosφ|[Kk][12])|[qQ]\s*=\s*[^。;;\n]{0,40}|Σ\s*P|cos\s*φ|[Kk][12]\s*[×*]\s*Σ|[Kk][12]\s*Σ\s*P)/gu;function ak(a){let b=[...a.matchAll(aj)].map(a=>a[0].trim().slice(0,30));return 0===b.length?[]:[{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`正文出现公式形态残留 ${b.length} 处(${[...new Set(b)].slice(0,3).join("、")}):正文只允许计算值不允许计算公式`,suggestion:"删除公式符号(P =、Σ、cosφ、K1、q =),只保留计算结果值:如「用电负荷约 48kW」「高峰日生活用水量约 X m\xb3」;公式推导过程一律不进入正文。"}]}let al=/暂列金额|暂估价|报价明细|综合单价|清单合价|预留金|投标报价|异常低价|评标基准价/u,am=/(?:税率|增值税)[^。;;\n]{0,12}\d/u,an=/^按招标文件(?:约定|要求)[^。;;\n]{0,120}[。;;]?$/u,ao=/本工程|我方|本公司|按合同约定|按约定时限/u,ap=/\d+(?:\.\d+)?\s*(?:%|%|万元|亿元|元|天|日|个月|年)/u;function aq(a){let b=a.trim();if(!b||ap.test(b))return!1;if(an.test(b))return!0;let c=b.replace(/[。;;]$/u,"");return c.length>0&&c.length<=200&&ao.test(c)}let ar=/合同估算价|合同估算价格|投资估算|估算价格|工程估算价|最高投标限价|招标控制价/u,as=/材料价格|商务报价|投标总价|合同总价|工程总价/u,at=["暂列金额与暂估价的报价明细","综合单价与清单合价的商务数据","投标报价与费率标准的商务条款"],au=["合同估算价与投资估算的项目信息","最高投标限价与招标控制价的公开信息","商务数据不得写入施工组织设计正文的约束说明"];async function av(a){return(0,g.A)({prototypes:[...at],negativePrototypes:[...au],embedDocuments:a})}async function aw(a,b){let c=[],d=await av(b),e=[];for(let b of a.split(/\r?\n/u)){let a=b.trim();if(!(/^#{1,6}\s/u.test(a)||/^\s*\|/u.test(a))&&(al.test(b)||am.test(b)||as.test(b)))for(let a of(am.test(b)&&c.push("税率/增值税"),b.split(/(?<=[。;;])\s*/u))){if(aq(a))continue;let b=a.match(al)||[],d=ar.test(a),f=as.test(a);!(b.length>0)||d||f?(b.length>0&&(d||f)||f&&0===b.length)&&e.push(a):c.push(...b)}}if(e.length>0){let a=await d(e);e.forEach((b,d)=>{if(!a[d])return;let e=b.match(al)||[],f=b.match(as)||[];c.push(...e.length>0?e:f)})}let f=[...new Set(c)].slice(0,4);return 0===f.length?[]:[{level:"error",severity:"blocker",category:"style",owner:"llm",repairability:"llm_repairable",message:`正文出现商务条款数据:${f.join("、")}`,suggestion:"商务数据(暂列金额/暂估价/综合单价/税率等)不得写入施组正文:删除该句或改写为定性表述(如“按合同约定执行”),商务口径仅保留在项目信息表中。"}]}let ax=[{key:"excavation",label:"基坑支护及土方外运",re:/基坑支护/u},{key:"zero",label:"地下结构出正负零",re:/正负零|地下室结构/u},{key:"topping",label:"主体结构封顶",re:/主体(?:结构)?封顶/u},{key:"decoration",label:"装饰装修及幕墙",re:/装饰装修/u},{key:"mep",label:"机电安装及智能化调试",re:/机电安装/u},{key:"completion",label:"室外工程及竣工验收",re:/竣工验收/u}];function ay(a){let b=[],c=(a,c,d)=>{let e=(a=>{let b="封顶"===a?"主体结构封顶":a;return ax.find(a=>a.re.test(b))?.key})(a);void 0!==e&&Number.isFinite(c)&&c>=1&&c<=3e3&&b.push({key:e,day:c,raw:d})};for(let b of a.matchAll(/第(\d{2,3})日[^。;;\n]{0,14}?完成[^。;;\n,、]{0,12}?(基坑支护及土方外运|装饰装修及幕墙|机电安装及智能化调试|室外工程及竣工验收|地下结构出正负零|主体结构封顶|正负零|封顶)/gu))c(b[2],Number(b[1]),b[0].slice(0,40));for(let b of a.matchAll(/(基坑支护|正负零|封顶|装饰装修|机电安装|竣工验收)(?:(?!(?:第\d{2,3}[日天]|,|、)).){0,8}?完成[^。;;\n]{0,10}?第(\d{2,3})[日天]/gu))c(b[1],Number(b[2]),b[0].slice(0,40));for(let b of a.matchAll(/(主体(?:结构)?封顶)(?!后)(?:(?!(?:第\d{2,3}[日天]|,|、|完成|\||[。;;\n])).){0,20}?第(\d{2,3})日/gu))c(b[1],Number(b[2]),b[0].slice(0,40));for(let b of ax){let d=RegExp(`^\\s*\\|\\s*[^|]*${b.re.source}[^|]*\\s*\\|\\s*开工(?:令下发)?后第(\\d{2,3})日\\s*\\|`,"gum");for(let b of a.matchAll(d))c(b[0],Number(b[1]),b[0].slice(0,40))}let d=new Set;return b.filter(a=>{let b=`${a.key}:${a.raw}`;return!d.has(b)&&(d.add(b),!0)})}function az(a){let b=[],c=new Map;for(let b of ay(a)){let a=c.get(b.key)||[];a.push(b),c.set(b.key,a)}for(let a of ax){let d=c.get(a.key);if(!d||d.length<2)continue;let e=[...new Set(d.map(a=>a.day))];if(e.length<2)continue;let f=[...new Set(d.map(a=>a.raw))].slice(0,4).join("、");b.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`节点工期口径矛盾:“${a.label}”节点出现 ${e.map(a=>`${a}日`).join(" 与 ")} 两套口径:${f}`,suggestion:`关键节点完成时间必须全文唯一:以总进度计划表为准统一“${a.label}”节点日期,删除正文/其他表中矛盾的“第N日”表述。`})}return b.slice(0,4)}let aA=[{key:"xps",label:"挤塑聚苯板(XPS)厚度",unit:"mm",kind:"number",patterns:[/(?:挤塑聚苯|XPS)(?:(?!(?:宽度|拼缝|不大于|不超过|小于|≤|采用|使用|选用|铺设|粘贴)).){0,40}?(\d+(?:\.\d+)?)\s*mm/gu,/(\d+(?:\.\d+)?)\s*mm[^。;;\n|]{0,10}?(?:挤塑聚苯|XPS)/gu]},{key:"cushion",label:"垫层混凝土强度等级",unit:"C标号",kind:"code",patterns:[/(?<!混凝土)垫层[^。;;\n|]{0,20}?(C\d{2})/gu]},{key:"transformer",label:"箱式变压器容量",unit:"kVA",kind:"number",patterns:[/(\d+)\s*kVA[^。;;\n|]{0,12}?变压器/gu,/变压器[^。;;\n|]{0,12}?(\d+)\s*kVA/gu]},{key:"formwork",label:"模板周转次数",unit:"次",kind:"number",patterns:[/模板周转(?:次数|使用)?[^。;;\n|]{0,15}?(\d+)\s*次/gu]},{key:"block",label:"蒸压加气混凝土砌块强度等级",unit:"A标号",kind:"code",patterns:[/(?:蒸压加气混凝土|加气混凝土)?砌块[^。;;\n]{0,24}?(A\d+(?:\.\d+)?)/gu]},{key:"extinguisher",label:"干粉灭火器数量",unit:"具",kind:"number",patterns:[/灭火器[^。;;\n]{0,24}?(\d+)\s*具/gu]},{key:"pump",label:"潜水泵(提升泵)数量",unit:"台",kind:"number",patterns:[/(?:潜水泵|提升泵)[^。;;\n]{0,24}?(\d+)\s*台/gu]},{key:"firstaid",label:"急救箱数量",unit:"套/个",kind:"number",patterns:[/急救箱[^。;;\n|]{0,24}?(\d+)\s*(?:套|个)/gu]},{key:"scheduleDays",label:"计划总工期",unit:"日历天",kind:"number",patterns:[/^\s*\|\s*计划工期\s*\|\s*(\d{1,4})\s*个?\s*日历天\s*\|/gum,/(?:计划工期|合同工期|工期总日历天数|工期控制|工期目标|总工期)[^。;;\n|]{0,12}?(\d{1,4})\s*个?\s*日历天/gu,/(\d{1,4})\s*个?\s*日历天[^。;;\n|]{0,8}?(?:总工期|倒排|分解|为唯一|完成)/gu]},{key:"prefabRatio",label:"装配率",unit:"%",kind:"number",patterns:[/装配率[^。;;\n|]{0,14}?(\d+(?:\.\d+)?)\s*%/gu,/装配率[^。;;\n|]{0,44}?计算为(\d+(?:\.\d+)?)\s*%/gu,/(\d+(?:\.\d+)?)\s*%(?:(?![,,。;;\n|]).){0,10}?装配率/gu]},{key:"projectCode",label:"项目编号",unit:"",kind:"code",patterns:[/(?:招标项目编号|项目编号)[^。;;\n|]{0,8}?(20\d{2}[A-Z]{1,8}\d{2,10})/gu]},{key:"towerCrane",label:"塔式起重机(塔吊)数量",unit:"台",kind:"number",patterns:[/(?:塔式起重机|塔吊)[^。;;\n|、,]{0,30}?(\d+)\s*台/gu,/(\d+)\s*台[A-Za-z0-9/\-–—~~]{0,16}\s{0,2}(?:塔式起重机|塔吊)/gu]},{key:"hoist",label:"施工升降机(施工电梯)数量",unit:"台",kind:"number",patterns:[/(?:施工升降机|施工电梯)[^。;;\n|、,]{0,30}?(\d+)\s*台/gu,/(\d+)\s*台[A-Za-z0-9/\-–—~~]{0,16}\s{0,2}(?:施工升降机|施工电梯)/gu]},{key:"truckCrane",label:"汽车起重机(汽车吊)数量",unit:"台",kind:"number",patterns:[/(?:汽车起重机|汽车吊)[^。;;\n|、,]{0,30}?(\d+)\s*台/gu,/(\d+)\s*台[A-Za-z0-9/\-–—~~]{0,16}\s{0,2}(?:汽车起重机|汽车吊)/gu]},{key:"rebarCutter",label:"钢筋切断机数量",unit:"台",kind:"number",patterns:[/钢筋切断机[^。;;\n|]{0,24}?(\d+)\s*台/gu]},{key:"rebarBender",label:"钢筋弯曲机数量",unit:"台",kind:"number",patterns:[/钢筋弯曲机[^。;;\n|]{0,24}?(\d+)\s*台/gu]},{key:"slackDays",label:"机动工期(工序衔接与验收缓冲)",unit:"天",kind:"number",patterns:[/(?:机动工期|缓冲)[^。;;\n|]{0,16}?(\d{1,3})\s*天/gu,/预留[^。;;\n|]{0,8}?(\d{1,3})\s*天[^。;;\n|]{0,10}?(?:机动|缓冲)/gu]},{key:"villageCount",label:"自然村数量",unit:"个自然村",kind:"number",patterns:[/(\d+)\s*个(?:美丽宜居)?自然村(?!分组|施工组)/gu]},{key:"circularSaw",label:"圆盘锯数量",unit:"台",kind:"number",patterns:[/圆盘锯[^。;;\n|]{0,24}?(\d+)\s*台/gu]},{key:"excavator",label:"挖掘机数量",unit:"台",kind:"number",patterns:[/(?:履带式)?挖掘机[^。;;\n、,]{0,40}?(\d+)\s*台/gu,/(\d+)\s*台[^、,。;\n|]{0,12}?(?:履带式)?挖掘机/gu]},{key:"dumpTruck",label:"自卸汽车数量",unit:"台/辆",kind:"number",patterns:[/自卸汽车[^。;;\n、,]{0,40}?(\d+)\s*(?:台|辆)/gu,/(\d+)\s*(?:台|辆)[^、,。;\n|]{0,12}?自卸汽车/gu]},{key:"roller",label:"压路机数量",unit:"台",kind:"number",patterns:[/(?:振动)?压路机[^。;;\n、,]{0,40}?(\d+)\s*台/gu,/(\d+)\s*台[^、,。;\n|]{0,12}?(?:振动)?压路机/gu]},{key:"rammer",label:"蛙式打夯机数量",unit:"台",kind:"number",patterns:[/蛙式打夯机[^。;;\n、,]{0,40}?(\d+)\s*台/gu,/(\d+)\s*台[^、,。;\n|]{0,12}?蛙式打夯机/gu]},{key:"mixerTruck",label:"混凝土搅拌运输车数量",unit:"台",kind:"number",patterns:[/混凝土搅拌运输车[^。;;\n、,]{0,40}?(\d+)\s*台/gu,/(\d+)\s*台[^、,。;\n|]{0,12}?混凝土搅拌运输车/gu]},{key:"concreteMixer",label:"混凝土搅拌机数量",unit:"台",kind:"number",patterns:[/混凝土搅拌机[^。;;\n、,]{0,40}?(\d+)\s*台/gu,/(\d+)\s*台[^、,。;\n|]{0,12}?混凝土搅拌机/gu]},{key:"sprinkler",label:"洒水车数量",unit:"台/辆",kind:"number",patterns:[/洒水车[^。;;\n、,]{0,40}?(\d+)\s*(?:台|辆)/gu,/(\d+)\s*(?:台|辆)[^、,。;\n|]{0,12}?洒水车/gu]},{key:"aerialLift",label:"高空作业车数量",unit:"台",kind:"number",patterns:[/高空作业车[^。;;\n、,]{0,40}?(\d+)\s*台/gu,/(\d+)\s*台[^、,。;\n|]{0,12}?高空作业车/gu]},{key:"pondBackfill",label:"沟塘回填方量",unit:"m\xb3",kind:"number",patterns:[/(?:沟塘|水塘|池塘|河塘|鱼塘|塘内|渠道|淤泥|流砂|清淤)[^。;;\n|]{0,30}?回填方(?:总量)?[^。;;\n|]{0,16}?(\d+(?:\.\d+)?)\s*m[3³]/gu,/(?:沟塘|水塘|池塘|河塘|鱼塘|塘内|渠道|淤泥|流砂|清淤)[^;;\n|]{0,30}?回填方总量[^。;;\n|]{0,16}?(\d+(?:\.\d+)?)\s*m[3³]/gu,/回填方(?:总量)?[^。;;\n|]{0,16}?(\d+(?:\.\d+)?)\s*m[3³][^。;;\n|]{0,30}?(?:沟塘|水塘|池塘|河塘|鱼塘|塘内|渠道|淤泥|流砂|清淤)/gu]},{key:"trenchClearing",label:"沟槽槽底人工清底预留厚度",unit:"mm",kind:"number",patterns:[/槽底预留(\d+)mm人工清底/gu]},{key:"houseExcavation",label:"距房屋人工开挖保护距离",unit:"m",kind:"number",patterns:[/距房屋(\d+(?:\.\d+)?)m(?:内|范围内)[^。;;\n|]{0,10}?人工开挖/gu]}],aB={pump:/潜水泵|提升泵/u,towerCrane:/塔式起重机|塔吊/u,hoist:/施工升降机|施工电梯/u,truckCrane:/汽车起重机|汽车吊/u,rebarCutter:/钢筋切断机/u,rebarBender:/钢筋弯曲机/u,circularSaw:/圆盘锯/u,excavator:/挖掘机/u,dumpTruck:/自卸汽车|自卸车/u,roller:/压路机/u,rammer:/蛙式打夯机|打夯机/u,mixerTruck:/混凝土搅拌运输车|搅拌车/u,concreteMixer:/混凝土搅拌机/u,sprinkler:/洒水车/u,aerialLift:/高空作业车/u,extinguisher:/灭火器/u,firstaid:/急救箱/u};function aC(a,b){let c=(0,i.Dq)(b);if(void 0===c)return[];let d=new Set;for(let b of a.matchAll(/养护[^。;;\n|]{0,16}?([一二两三四五六七八九十]+|\d{1,2})\s*年/gu)){let c=a.lastIndexOf("\n",b.index)+1,e=a.indexOf("\n",b.index);if(-1===e&&(e=a.length),aF.test(a.slice(c,e)))continue;let f=(0,i.a0)(b[1]??"");void 0!==f&&f>0&&d.add(f)}if(0===d.size)return[];let e=[...d].filter(a=>a!==c);return 0===e.length?[]:[{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`绿化养护期清单红线:正文出现养护期 ${e.map(a=>`${a}年`).join("、")},与工程量清单锁定口径「养护 ${c} 年」矛盾`,suggestion:`绿化养护期必须与工程量清单一致(清单锁定「养护 ${c} 年」):将正文所有养护期表述统一为 ${c} 年并删除矛盾口径;养护期属清单实质性条款,不得以常规值替代。`}]}function aD(a,b){let c=(0,i.Mb)(b);if(void 0===c)return[];let d=[];for(let b of a.matchAll(/路灯[^。;;\n|]{0,28}?(\d+)\s*(?:套|盏|杆)/gu)){if(/批/u.test(b[0]))continue;let c=a.lastIndexOf("\n",b.index)+1,e=a.indexOf("\n",b.index);if(-1===e&&(e=a.length),aF.test(a.slice(c,e)))continue;let f=Number(b[1]);Number.isFinite(f)&&f>0&&d.push(f)}if(0===d.length)return[];let e=d.length>=2?d.reduce((a,b)=>a+b,0):d[0]??0;return e===c?[]:[{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`路灯数量口径矛盾:正文路灯配置合计约 ${e} 套,与工程量清单锁定口径 ${c} 套不一致(相差 ${Math.round(Math.abs(e-c)/c*100)}%)`,suggestion:`路灯数量必须以工程量清单为准(清单锁定 ${c} 套):按清单核定各型号路灯数量并统一正文全部表述,删除与清单矛盾的套数口径。`}]}let aE=/\d+(?:\.\d+)?\s*(?:mm|kVA|次|具|台|套|个)\s*[//]\s*\d+/u,aF=/不再出现|不得出现|严禁出现|避免出现|不采用|未采用|予以删除|已删除|取消|纠正为|更正为/u,aG=/再浇筑|再浇|后浇筑|后浇|然后浇筑|然后再浇|上层|上部|面层浇筑|其上浇筑|浇筑完成后再/u,aH=/分层厚度|分层浇筑|分层振捣|焊缝高度|焊缝厚度|焊脚尺寸|锚固深度|保护层厚度|搭接长度|锚固长度|预留|踏步高度|踏步宽度|踏步高|踏步宽|台阶高度|台阶宽度|内厚|外厚|抹面|抹灰|粉刷|垫高|架空|离地|支垫/u,aI=/分别为|分别对应|分别用于|分别按|依次为|依次/u,aJ="女儿墙|外墙|内墙|隔墙|地梁|圈梁|构造柱|过梁|垫层|承台|筏板|底板|基础|主体|梁|柱|墙|楼板|屋面|地面|楼面|顶板|楼梯|阳台|雨篷|台阶|散水|坡道|找坡|找平|保护层|防水层|保温层|隔汽层|地坪|办公区|生活区|库房|加工区|堆放区|驻地|周转场|停放区|仓库|材料库|路基|沟槽|基槽",aK=/每[台辆架套部][一-龥A-Za-z0-9]{1,8}/gu,aL=/项目部|总协调|工人生活|施工办公|办公|生活|临时|总部|标段|片区/u;function aM(a,b,c){let d=b.slice(Math.max(0,c-8),c),e=d.match(aL);if(!e||void 0===e.index)return a;let f=d.slice((e.index??0)+e[0].length);return/^[的施工区域现场]{0,3}$/u.test(f)?`${e[0]}${a}`:a}function aN(a,b,c,d){let e=a.indexOf("\n",b),f=a.slice(d,-1===e?a.length:e);if(/^\s*\|/u.test(f)&&/\|\s*$/u.test(f.trim())){let a=f.replace(/[\u4e00-\u9fa5]{2,6}阶段/gu,""),b=[...a.matchAll(RegExp(aJ,"gu"))],c=b[b.length-1];return c?aM(c[0],a,c.index??0):""}let g=Math.max(d,b-16),h=a.slice(g,b),i=Math.max(h.lastIndexOf(","),h.lastIndexOf("、"),h.lastIndexOf(","),h.lastIndexOf(";"),h.lastIndexOf(";"),h.lastIndexOf("。")),j=a.slice(i>=0?g+i+1:g,b+c.length).replace(/[\u4e00-\u9fa5]{2,6}阶段/gu,""),k=[...j.matchAll(aK)];if(k.length>0)return k[k.length-1]?.[0]??"";let l=[...j.matchAll(RegExp(aJ,"gu"))],m=l[l.length-1];return m?aM(m[0],j,m.index??0):""}function aO(a){let b=[];for(let c of aA){let d=new Map,e=new Map;for(let b of c.patterns)for(let f of a.matchAll(b)){let b=f[0].slice(0,40);if("trenchClearing"===c.key){let c=Math.max(a.lastIndexOf("。",f.index),a.lastIndexOf(";",f.index),a.lastIndexOf("\n",f.index))+1;if(/基槽|围栏|菜园/u.test(a.slice(c,(f.index||0)+b.length)))continue}if(aE.test(b)||aG.test(b))continue;if("scheduleDays"===c.key){let c=b.indexOf(String(f[1]));if(c>=0&&/(?:阶段|第\d+日|至第|共|集中)/u.test(a.slice(Math.max(0,(f.index||0)+c-16),(f.index||0)+c)))continue}if(/按不少于|不少于/u.test(b))continue;let g=a.lastIndexOf("\n",f.index)+1,h=a.indexOf("\n",f.index);if(-1===h&&(h=a.length),aF.test(a.slice(g,h)))continue;let i=aN(a,f.index||0,b,g),j=d.get(i)||new Set;j.add(f[1]),d.set(i,j);let k=e.get(i)||[];k.push(b),e.set(i,k)}let f=d.get("")||new Set,g=[...d.keys()].filter(a=>""!==a);if(f.size>0&&1===g.length){let a=d.get(g[0]||"");if(a){for(let b of f)a.add(b);let b=e.get(g[0]||"")||[];b.push(...e.get("")||[]),e.set(g[0]||"",b),d.delete(""),e.delete("")}}for(let[a,f]of d){if(f.size<2)continue;let d=e.get(a)||[];if("code"===c.kind)b.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`材料参数口径矛盾:“${c.label}”${a?`在部位「${a}」`:"在未标注部位语境下"}出现 ${[...f].map(a=>`${a}${c.unit}`).join(" 与 ")} 两套口径:${[...new Set(d)].slice(0,3).join("、")}`,suggestion:`同一材料同一部位只允许一个口径:以设计图纸/工程量清单为准统一“${c.label}”${a?`在部位「${a}」的取值`:""},删除矛盾表述;不同部位允许不同规格,不得全文归一为一种。`});else{let e=[...f].map(Number).filter(Number.isFinite);if(e.length<2)continue;b.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`材料/设备数量口径矛盾:“${c.label}”${a?`在部位「${a}」`:"在未标注部位语境下"}出现 ${e.map(a=>`${a}${c.unit}`).join(" 与 ")} 两套口径:${[...new Set(d)].slice(0,3).join("、")}`,suggestion:`同一设备/材料同一部位只允许一个口径:以应急物资清单/施工部署为准统一“${c.label}”${a?`在部位「${a}」的取值`:""},删除矛盾表述;总量与分区配置属不同口径,不得互相归一。`})}}}return b.slice(0,16)}function aP(a){return/^C\d{2,3}$/.test(a)?/C\d{2,3}/u:/^M\d/.test(a)?/M\d+(?:\.\d+)?/u:/^P\d{1,2}$/.test(a)?/(?<![A-Za-z])P\d{1,2}/u:/^A\d+(?:\.\d+)?$/.test(a)?/A\d+(?:\.\d+)?/u:/^B\d+(?:\.\d+)?$/.test(a)?/B\d+(?:\.\d+)?/u:/^HRB/.test(a)||/^HPB/.test(a)?/HRB\d{3,4}|HPB\d{3}/u:/mm$/.test(a)?/\d+(?:\.\d+)?\s*mm/u:null}function aQ(a,b){let c=[];if(!b)return c;let d=[...new Set(Object.values(b).flat().map(a=>a.location).filter(Boolean))];for(let e of Object.values(b)){if(e.length<2)continue;let b=new Set;for(let f of e){let{location:g,spec:h}=f;if(!g||!h||g.length<2)continue;let i=aP(h);if(!i)continue;let j=`${g}|${i.source}`;if(b.has(j))continue;b.add(j);let k=new Set(e.filter(a=>a.location===g).map(a=>{let b=aP(a.spec);if(b&&b.source===i.source)return a.spec;let c=RegExp(`^(?:${i.source})`,"u").exec(a.spec);return c?c[0]:null}).filter(a=>null!==a)),l=RegExp(`${g.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&")}[^。;;
104
- |]{0,40}?(${i.source})`,"gu");for(let b of a.matchAll(l)){let f=b[1]||"";if(aG.test(b[0])||aH.test(b[0])||aI.test(b[0]))continue;let h=a.slice(Math.max(0,(b.index||0)-40),b.index||0);if(aI.test(h))continue;let j=a.slice((b.index||0)+b[0].length,(b.index||0)+b[0].length+10);if(/范围内|范围/u.test(j)||/(?:工作宽度|作业宽度|操作空间|工作面)/u.test(j)||/^、\s*\d/u.test(j)||/^\s*厚(?:\s*[\d::]|覆膜|木|胶合)/u.test(j)||RegExp(`^(?:或|[、,,/])\\s*(?:${i.source})`,"u").test(j))continue;let l=a.slice(Math.max(0,b.index||0),(b.index||0)+b[0].length);if(/(?:标高|高程|平整度|轴线|垂直度|高差)[^。;;\n|]{0,10}(?:偏差|误差|不超过|不得大于|不大于)/u.test(l.slice(-28)))continue;let m=b[0].indexOf(f);if(m>g.length&&/(?:涵头|面层|基层|垫层|管基|基础|梁|板|柱|墙|地坪|路面)/u.test(b[0].slice(g.length,m)))continue;let n=b.index||0,o=d.find(b=>b.length>g.length&&b.endsWith(g)&&a.slice(n+g.length-b.length,n+g.length)===b);if(o&&new Set(e.filter(a=>a.location===o&&aP(a.spec)?.source===i.source).map(a=>a.spec)).has(f)||k.has(f))continue;let p=1===k.size?[...k][0]:void 0,q=n+m;if(c.push({issue:{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`规格错位:“${g}”使用的规格 ${f} 与工程量清单权威(${[...k].join("/")})不一致`,suggestion:`按工程量清单将“${g}”的规格统一为 ${[...k].join("/")};同一材料不同部位允许不同规格,但同一部位不得混用其他部位的规格。`},location:g,replacement:p?{start:q,end:q+f.length,replacement:p,detail:`规格错位“${g}” ${f}→${p}(以工程量清单锁定口径为准)`}:void 0}),c.length>=8)return c}}}return c.slice(0,8)}function aR(a,b){return aQ(a,b).map(a=>a.issue)}let aS=/桩基|灌注桩|钻孔桩|打桩|成桩|桩机/u;function aT(a){let b=function(a){let b=[];for(let c of[...a.matchAll(/^#{3,4}\s+[^\n]*(?:地基与基础)[^\n]*$/gmu)]){let d=(c.index||0)+c[0].length,e=a.slice(d).search(/^#{2,4}\s+/mu),f=a.slice(d,e>=0?d+e:a.length);b.push(f)}return b}(a);if(0===b.length||b.some(a=>aS.test(a)))return[];let c=[];for(let b of a.split(/\r?\n/u)){let a=b.trim();!(!a||/^#{1,6}\s/u.test(a))&&aS.test(b)&&c.push(a.slice(0,48))}let d=[...new Set(c)].slice(0,5);return d.length<2?[]:[{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`桩基表述残留:地基与基础章节施工流程为筏板/独立基础(无桩基工序),但全文另有 ${d.length} 处桩基表述:${d.join("、")}`,suggestion:"本项目基础形式不含桩基:删除全文所有桩基/桩机表述,进度计划表关键线路工序、质量验收划分表、隐蔽验收表均改为本项目实际基础工序(垫层/底板钢筋/混凝土)。"}]}let aU=/^\s*\|\s*计划工期\s*\|([^|\n]*)\|/u,aV=/工期延误|延误|违约|切除|赔偿|罚款|解除|扣减/u;function aW(a){let b=[];for(let c of a.split(/\r?\n/u)){let a=aU.exec(c);if(!a)continue;let d=(a[1]??"").trim();d&&aV.test(d)&&b.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`基本信息表「计划工期」字段错填违约条款文字:“${d.slice(0,40)}”`,suggestion:"「计划工期」字段应填日历天数值(与招标文件前附表一致);工期延误违约条款文字应放在工期风险管控章节,不得占用基本信息表字段。"})}return b.slice(0,2)}let aX=/基础|支护|围护|桩|结构|开挖|放坡|喷锚|排桩|连续墙|土钉|锚杆|标高|深度|形式|体系/u;function aY(a){let b=a.replace(/\s+/gu,""),c=new Set;for(let a of b.matchAll(/([一-龥]{2,8})\/([一-龥]{2,8})/gu)){let d=aX.test(a[1])||aX.test(a[2]),e=(0,j.m4)(a[1],a[2]);if(!d&&!e)continue;let f=Math.max(0,(a.index||0)-12),g=Math.min(b.length,(a.index||0)+a[0].length+12),h=b.slice(f,g);!/管线|管道|电缆|给水|排水/u.test(h)&&(!/采用|形式|方式|方案|选用|拟用|拟采用|为/u.test(h)&&(!e||/不得|禁止|不应|不宜|避免|严禁|无需/u.test(h))||c.add(`“${a[1]}/${a[2]}”`))}for(let a of b.matchAll(/[((]\s*或[^))]{1,48}[))]/gu)){let d=a[0].slice(1,-1);if(!/按图纸|按实|按图|待定|另行|视[^,。;]{0,8}而定|根据实际/u.test(d))continue;let e=Math.max(0,(a.index||0)-20),f=b.slice(e,(a.index||0)+a[0].length);aX.test(f)&&c.add(a[0].slice(0,30))}for(let a of b.matchAll(/([一-龥]{2,8})或([一-龥]{2,8})/gu)){let d=aX.test(a[1])||aX.test(a[2]),e=(0,j.m4)(a[1],a[2]);if(!d&&!e)continue;let f=Math.max(0,(a.index||0)-12),g=b.slice(f,(a.index||0)+a[1].length);if(/管线|管道|电缆|给水|排水/u.test(g)||!/按|采用|选用|拟用|拟采用|方案|为/u.test(g)&&(!e||/不得|禁止|不应|不宜|避免|严禁|无需/u.test(g)))continue;let h=b.slice(Math.max(0,(a.index||0)-6),a.index||0);if(/临时/u.test(h+a[0])&&/支护|围护|放坡|坡率|开挖/u.test(a[0])||/围挡|警示|防护栏|爬梯|栈桥|便道/u.test(a[0]))continue;let i=a[1].replace(/^.*?(地下连续墙|钢板桩|灌注桩|支护桩|土钉墙|基础|支护|围护|结构|开挖|放坡|喷锚|排桩|连续墙|土钉|锚杆|形式|体系)/u,"$1");c.add(`${i}或${a[2]}`)}return 0===c.size?[]:[{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`关键设计决策两可表述:${[...c].join("、")} 以并列/悬置形态表述,基础形式、支护形式等关键决策必须在正文中唯一确定`,suggestion:"以设计图纸/勘察报告/工程量清单为准锁定唯一决策并删除两可表述:明确写出本项目基础形式与支护形式的具体做法(如「基础形式为筏板基础」「基坑支护采用放坡+喷锚」),禁止「或…按图纸实施」类悬置话术。"}]}function aZ(a){let b=a.replace(/\s+/gu,"");if((b.match(/基坑|开挖|支护/gu)||[]).length<3)return[];for(let a of b.matchAll(/(?:深度|标高)[^。;,,]{0,12}-?\d+(?:\.\d+)?[^。;,,]{0,6}/gu)){let b=a[0];if(!/(?:超过|大于|小于|不[大低小]于|不低于|低于|高于|按|倍|依据|详见|参考|示意|每|以上|以下|偏差|±0|0\.000)/u.test(b)&&!/\d+(?:\.\d+)?\s*(?:h|小时|天|日|min|周|月|昼夜)/u.test(b))return[]}return[{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:"基坑深度数值未锁定:正文已有基坑支护/开挖成稿内容,但全文未出现「深度/标高+数值」的确定性表述(比较式阈值如「超过3m」不视为锁定),危大工程分级判定失去依据",suggestion:"从绑定资料(地质勘察报告/基坑支护设计图/基础平面图)锁定基坑开挖深度数值写入基坑支护小节;深度 ≥5m 的深基坑须同步标注危大工程分级与专家论证要求,禁止以「按图纸确定」回避深度数值。"}]}function a$(a,b){let c=(0,i.z4)(b);if(void 0===c||c<3)return[];let d=[];return c>=3&&!/危大工程/u.test(a)&&d.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`危大工程判定缺失:资料基坑开挖深度 ${c}m(≥3m),正文必须出现危大工程判定标注`,suggestion:`依据住建部令第37号,开挖深度≥3m 属危大工程:在基坑支护/危大工程清单小节写明本工程实际深度 ${c}m 与危大工程判定结论,不得只写判定规则不落地本项目。`}),c>=5&&!/超过一定规模/u.test(a)&&d.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`超危大工程判定缺失:资料基坑开挖深度 ${c}m(≥5m),正文必须出现「超过一定规模」判定与专家论证要求`,suggestion:`开挖深度≥5m 属超过一定规模的危大工程:写明本工程深度 ${c}m 对应分级结论,专项施工方案必须经专家论证,不得只写判定规则不落地分级。`}),d}function a_(a,b){let c=[b.canonical?.byKey.foundation_support_form?.value,...(b.drawings||[]).map(a=>`${a.fieldName||a.key||""} ${(0,e.lG)(a.value)}`),...(b.project||[]).map(a=>`${a.fieldName||a.key||""} ${(0,e.lG)(a.value)}`),...(b.preciseFacts||[]).map(a=>`${a.fieldName||a.key||""} ${(0,e.lG)(a.value)}`)].filter(Boolean).filter(a=>/基坑支护形式|基坑支护方式|支护形式|支护方式|土钉|放坡|喷锚|护坡/u.test(a)&&!/监测|监测频次|闭环|基坑开挖深度/u.test(a));if(0===c.length)return[];let d=[];for(let a of c)for(let b of["土钉墙","放坡","喷锚","挂网喷浆","排桩","灌注桩","地下连续墙","内支撑","锚杆","锚索"])a.includes(b)&&d.push(b);let f=[],g=/不采用|未采用|不设置|未设置|不使用|不宜采用|不得采用|不再出现|不得出现|严禁出现|避免出现|已删除|取消/u,h=["支护桩","冠梁","钻孔灌注桩","灌注桩","地下连续墙","排桩","咬合桩","内支撑"].filter(b=>(b=>{let c=RegExp(b,"gu");for(let b of a.matchAll(c)){let c=a.lastIndexOf("\n",b.index)+1,d=a.indexOf("\n",b.index);-1===d&&(d=a.length);let e=a.slice(c,d).slice(Math.max(0,b.index-c-12),b.index-c);if(!g.test(e))return!0}return!1})(b)&&!d.includes(b));return h.length>0&&f.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`支护形式与资料矛盾:正文出现资料中不存在的支护体系词 ${h.join("、")}`,suggestion:`资料基坑支护形式为「${d.join("、")||c[0]?.slice(0,60)}」:删除编造的支护桩/冠梁/灌注桩类表述与对应参数(垂直度偏差/冠梁顶面标高等),按资料支护形式改写。`}),0===d.filter(b=>RegExp(b,"u").test(a)).length&&/基坑|支护/u.test(a)&&f.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`支护形式未落地:资料基坑支护形式「${d.join("、")||c[0]?.slice(0,60)}」未在正文中出现`,suggestion:`在基坑支护小节写明本工程实际支护形式(${d.join("、")})及对应工艺参数(土钉长度/间距/坡度等),不得以泛化表述回避。`}),f}let a0=["塔式起重机","施工升降机","施工电梯","汽车起重机","汽车吊","混凝土泵车","混凝土泵","挖掘机","装载机","推土机","压路机","平地机","空压机","注浆机","锚杆钻机","混凝土喷射机","喷射机","吊篮","钢筋加工设备","塔吊"],a1=/挖掘机|空压机|注浆机|锚杆钻机|混凝土喷射机|喷射机|推土机/u;function a2(a,b){let c=function(a){let b=[];for(let c of a.matchAll(/第(\d{2,3})日[^。;;\n|]{0,8}?(?:进场|投入使用|安装|调试)/gu)){let d=a.slice(Math.max(0,(c.index||0)-24),c.index||0),e=a0.find(a=>d.includes(a));e&&b.push({equipment:e,day:Number(c[1]),raw:`${d.slice(-18)}${c[0].slice(0,20)}`})}let c=new Set;return b.filter(a=>{let b=`${a.equipment}:${a.raw}`;return!c.has(b)&&(c.add(b),!0)})}(a);if(0===c.length)return[];let d=[],f=function(a,b){for(let c of[a,...(b.schedule||[]).map(a=>`${a.key||""}${(0,e.lG)(a.value)}`)]){let a=/(?:计划工期|合同工期|总工期|工期总日历天数)[^\d。;;\n|]{0,12}(\d{1,4})\s*个?\s*日历天/u.exec(c);if(a){let b=Number(a[1]);if(Number.isFinite(b)&&b>=30&&b<=3e3)return b}}}(a,b);if(void 0!==f){let a=c.filter(a=>a.day>=f);a.length>0&&d.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`设备进场时间荒谬:${a.slice(0,3).map(a=>`「${a.equipment} 第${a.day}日进场」`).join("、")} 已达/超过总工期(${f}日历天),工程结束时设备尚未进场`,suggestion:`以总进度计划为准核对设备进场计划:大型施工设备必须在总工期结束前进场并完成使用,${a.map(a=>a.equipment).join("、")} 的进场日应提前至工程开始阶段,删除矛盾的尾期进场表述。`})}let g=ay(a).filter(a=>"excavation"===a.key).map(a=>a.day);if(g.length>0){let a=Math.min(...g),b=c.filter(b=>a1.test(b.equipment)&&b.day>a);b.length>0&&d.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`设备进场工序倒挂:${b.slice(0,3).map(a=>`「${a.equipment} 第${a.day}日进场」`).join("、")} 晚于基坑支护及土方外运完成节点(第${a}日),基坑阶段设备未在工序开始前进场`,suggestion:`基坑阶段专用设备必须在基坑开挖/支护开始前完成进场与报验:将 ${b.map(a=>a.equipment).join("、")} 的进场日调整为早于基坑支护完成节点(第${a}日)的日期,删除工序倒挂表述。`})}return d.slice(0,3)}let a3=/[\u4e00-\u9fa5]{2,10}(?:杯|奖)(?![励金惩罚项])/gu,a4=/优质工程|文明工地|样板|标准化|观摩|示范|精品工程|结构优质|省优|市优/u;function a5(a){let b=a;for(;;){let a=b.replace(/^(?:争创|争取|力争|争获|确保|获得|创建|力创|评为|荣获|标为|目标为|承诺|为)/u,"");if(a===b||!a)break;b=a}return b}let a6=/^\s*\|[\s:|-]+\|/u;function a7(a){let b=a.split(/\r?\n/u),c=[],d=a=>a.trim().replace(/^\|/u,"").replace(/\|$/u,"").split("|").map(a=>a.trim()),e=a=>a6.test(a),f=0;for(;f<b.length;){let a;if(!/^\s*\|/u.test(b[f])){f+=1;continue}let g=f;for(;g<b.length&&/^\s*\|/u.test(b[g]);)g+=1;let h=b.slice(f,g),i=0,j=0,k=0,l=b=>{if(!a)return;let e=h.slice(j,b);0!==e.length&&c.push({startLine:f+i,endLine:f+b-1,header:a,firstCol:e.map(a=>d(a)[0]?.replace(/[*_`]/gu,"").trim()||"").filter(Boolean),dataRows:e.map(a=>d(a).map(a=>a.replace(/[*_`]/gu,"").trim())),dataCells:e.flatMap(a=>d(a).map(a=>a.replace(/[*_`]/gu,"").trim())).filter(Boolean),bodyChars:e.join("").length,raw:h.slice(i,b)})};for(;k<h.length;){if(k+1<h.length&&e(h[k+1]||"")){l(k),a=d(h[k]).map(a=>a.replace(/[*_`]/gu,"").trim()),i=k,j=k+2,k+=2;continue}if(a&&k>j){let b=d(h[k]).map(a=>a.replace(/[*_`]/gu,"").trim()).filter(Boolean);if(a8(b,a)>=.6&&k+1<h.length&&!e(h[k+1]||"")){l(k),a=b,i=k,j=k+1,k+=1;continue}}k+=1}l(h.length),f=g}return c}function a8(a,b){if(0===a.length||0===b.length)return 0;let c=new Set(a),d=new Set(b);return[...c].filter(a=>d.has(a)).length/new Set([...c,...d]).size}function a9(a,b){if(0===a.length)return 0;let c=[...b],d=0;for(let b of a){let a=c.indexOf(b);a>=0&&(c.splice(a,1),d+=1)}return d/a.length}let ba=/^[\d,,.]+\s*(?:人|个|台|具|套|处|支|辆|班|组|项)?$/u,bb=a=>a.filter(a=>!ba.test(a));function bc(a){let b=[];for(let c of a7(a)){let a=c.dataRows;if(a.length<4)continue;let d=a=>(a[0]||"").trim(),e=(a,b)=>a8(a,b);for(let f=Math.floor(a.length/2);f<=Math.ceil(a.length/2);f+=1){let g=a.slice(0,f),h=a.slice(f);if(g.length<2||h.length<2)continue;let i=0,j=-1;for(let a of h){let b=d(a);if(b){for(let c=j+1;c<g.length;c+=1)if(d(g[c])===b&&e(a,g[c])>=.5){i+=1,j=c;break}}}let k=i/h.length;if(!(k<.8)){b.push({level:"error",severity:"blocker",category:"style",owner:"llm",repairability:"local_deterministic",message:`表格内部数据行重复:第 ${c.startLine+1}~${c.endLine+1} 行表格(表头:${c.header.slice(0,3).join("|")})数据行两遍粘贴(${f} 行 + ${h.length} 行,重复匹配率 ${Math.round(100*k)}%)`,suggestion:`删除第二遍重复数据行(保留第一遍 ${f} 行),删除后表格仅保留一份完整数据。`});break}}}return b}function bd(a){let b=[],c=a7(a);if(c.length<2)return b;for(let a=0;a<c.length;a+=1)for(let d=a+1;d<c.length;d+=1){let e=c[a],f=c[d],g=e.header.length>0&&e.header.length===f.header.length&&e.header.every((a,b)=>a===f.header[b]),h=a8(e.header,f.header),i=a8(e.firstCol,f.firstCol),j=a8(e.dataCells,f.dataCells),k=Math.max(a9(bb(e.dataCells),bb(f.dataCells)),a9(bb(f.dataCells),bb(e.dataCells)));(g&&j>=.6||h>=.7&&i>=.6||i>=.6&&k>=.6)&&b.push({level:"error",severity:"blocker",category:"style",owner:"llm",repairability:"llm_repairable",message:`表格重复:第 ${e.startLine+1}~${e.endLine+1} 行表格(表头:${e.header.slice(0,3).join("|")})与第 ${f.startLine+1}~${f.endLine+1} 行表格高度重复(表头重合 ${Math.round(100*h)}%、数据重合 ${Math.round(100*j)}%、首列重合 ${Math.round(100*i)}%)`,suggestion:"同一文档内同主题表格只保留信息最全的一张:删除重复表格(保留字段与数据行更多的那张),删除后核对章节表格计划仍被覆盖。"})}return b.sort((a,b)=>{let c=a=>Number(a.match(/数据重合\s*(\d+)%/u)?.[1]??0);return c(b.message)-c(a.message)}).slice(0,5)}function be(a){let b=a.replace(/\s+/gu,"");return b.length>=40?b:void 0}let bf=15;function bg(a){let b=function(a){let b=[];for(let c of a.split(/\n\s*\n/u)){let a=c.trim();if(!a)continue;let d=a.split(/\n/u).filter(a=>{let b=a.trim();return b&&!/^#{1,6}\s/u.test(b)&&!b.startsWith("|")}).join("\n"),e=[];for(let a of d.split(/[。!?!?]/u)){let b=a.trim().replace(/\s+/gu,"");if(b.length<bf)continue;let c=e.findIndex(a=>a.sentence===b||a.sentence.length>b.length&&a.sentence.length-b.length<=bf&&a.sentence.endsWith(b));c>=0?e[c].count+=1:e.push({sentence:b,count:1})}for(let a of e)a.count>=2&&b.push({sentence:a.sentence,count:a.count})}return b}(a);return 0===b.length?[]:b.slice(0,3).map(({sentence:a,count:b})=>({level:"error",severity:"blocker",category:"style",owner:"llm",repairability:"local_deterministic",message:`段落内句子复读 ${b} 次:“${a.slice(0,30)}…”`,suggestion:"同一段落内相同句子只保留首次出现,删除段尾复读的重复句(确定性修复器已接入自动剥离)。"}))}let bh=/^(.+?)(?:((?:\d+|[一二三四五六七八九十]+)))+$/u;function bi(a){let b=[];for(let c of a.matchAll(/^###\s+(.+)$/gmu)){let d=c[1].trim();bh.test(d)&&b.push({raw:d,index:a.lastIndexOf("\n",c.index??0)+1})}return b}function bj(a){let b=bi(a);return 0===b.length?[]:b.slice(0,3).map(({raw:a})=>({level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"local_deterministic",message:`目录小节标题含防撞名编号后缀:“${a}”`,suggestion:"正式投标文件目录不允许「(1)(2)」编号后缀小节:确定性修复器已接入(按主题域重命名为语义化标题或合并同基线拆半小节)。"}))}let bk=/第(\d{1,3})日(?:至|到|~|~|—|-)第(\d{1,3})日/gu;function bl(a){let b=[];for(let c of a.matchAll(bk))Number(c[1])<=Number(c[2])||b.push({start:c.index??0,end:(c.index??0)+c[0].length,raw:c[0]});return b}function bm(a){let b=bl(a);return 0===b.length?[]:b.slice(0,3).map(({raw:a})=>({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`时间区间倒挂:“${a}”起点大于终点,属时间拼接病句`,suggestion:"删除倒挂区间起点,仅保留终点日期表述(确定性修复器已接入自动剥离)。"}))}function bn(a){let b=[],c=a.split(/\r?\n/u),d=new Map,e=[],f=()=>{let a=be(e.join(""));if(a){let b=(d.get(a)||0)+1;d.set(a,b)}e=[]};for(let a of c){let b=a.trim();if(!b||/^#{1,6}\s/u.test(b)||/^\s*\|/u.test(b)){f();continue}if(/^[-*•]\s/u.test(b)){f(),e.push(b),f();continue}e.push(b)}for(let[a,c]of(f(),[...d.entries()].filter(([,a])=>a>=2).slice(0,3)))b.push({level:"error",severity:"blocker",category:"style",owner:"llm",repairability:"llm_repairable",message:`段落完全重复 ${c} 次:“${a.slice(0,40)}…”`,suggestion:"同一段落正文只保留首次出现处,删除其余重复段落;确需前后呼应时改写为差异化表述并压缩篇幅。"});return b}function bo(a,b,c){let d=new Set;for(let a of[...b.quality,...b.project,...b.schedule])for(let b of(0,e.lG)(a.value).matchAll(a3))d.add(a5(b[0]));if(c?.extracted)for(let a of[...c.awardObjectives||[],...c.specialQualityStandards||[],...c.awardClauses||[]])for(let b of(a.text||"").matchAll(a3))d.add(a5(b[0]));if(0===d.size)return[];let f=new Set;for(let b of a.matchAll(a3)){let a=a5(b[0]);!d.has(a)&&(a4.test(a)||f.add(a))}return 0===f.size?[]:[{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`奖项表述与招标文件白名单不符:正文出现 ${[...f].join("、")},均未出现在招标文件评分项要求或绑定资料中`,suggestion:"创优目标必须以招标文件原文为准逐字落位(如「确保黄山杯」),禁止自行编造或替换为其他奖项名称;白名单外的奖项表述一律删除或替换为招标原文奖项。"}]}function bp(a){let b=a.split(/\r?\n/u),c=new Set;for(let a of b){let b=/^(#{2,4})\s+(.+)$/u.exec(a.trim());if(!b)continue;let d=b[2].trim();(0,h.Xp)(d)&&c.add(d)}if(0===c.size)return[];let d=[...c];return[{level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"llm_repairable",message:`正文出现投标人资格内容小节:${d.slice(0,3).map(a=>`“${a}”`).join("、")}${d.length>3?" 等":""}(资格审查内容不属于施工组织设计,属资格文件/商务文件范畴)`,suggestion:"删除资格内容小节(标题与正文整体删除),不得以改写、合并、降级方式保留;正文如需提及安全生产许可证等证照,只能以施工管理口径表述(如“按规定持证上岗”),不得成节铺陈资格核验内容。"}]}let bq=/人[、,,]材[、,,]机/u,br=/(?:确保\s*)?([人材机])(?:员|力|料|械|工)?\s*的保障体系与措施/u;function bs(a){let b=a.match(br)?.[1];return b||(/劳动力|人员|作业人员|劳务/u.test(a)?"人":/材料|物资|周转/u.test(a)?"材":/机械|设备|机具|塔吊|起重机/u.test(a)?"机":void 0)}function bt(a){let b=[],c=a.split(/\r?\n/u);for(let a=0;a<c.length;a+=1){let d,e=/^##\s+(.+)$/u.exec(c[a].trim());if(!e||!bq.test(e[1]))continue;let f=c.length;for(let b=a+1;b<c.length;b+=1)if(/^##\s+/u.test(c[b].trim())){f=b;break}let g=[];for(let e=a+1;e<f;e+=1){let a=/^###\s+(.+)$/u.exec(c[e].trim()),f=/^####\s+(.+)$/u.exec(c[e].trim());if(a){d={subject:bs(a[1]),title:a[1].trim()},g.push(d);continue}if(f&&d?.subject){let a=bs(f[1]);a&&a!==d.subject&&b.push({level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"llm_repairable",message:`人材机章层级错位:小节“${f[1].trim()}”挂在“${d.title}”之下(${"人"===a?"人":"材"===a?"材":"机"}的保障体系应独立成二级小节,不得并入${"人"===d.subject?"人":"材"===d.subject?"材":"机"}的保障体系)`,suggestion:`将“${f[1].trim()}”提升为独立二级小节,或将其内容合并到对应主题的二级小节。`})}}let h=new Set(g.map(a=>a.subject).filter(Boolean)),i=["人","材","机"].every(a=>h.has(a));(g.length<3||!i)&&b.push({level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"llm_repairable",message:`人材机章结构不完整:“${e[1].trim()}”仅 ${g.length} 个二级小节(人/材/机的保障体系未全部独立成节)`,suggestion:"拆分为“确保人的保障体系与措施”“确保材的保障体系与措施”“确保机的保障体系与措施”三个二级小节。"})}return b}async function bu(a,b,c={}){let d=[],e=(a,b)=>1e-6>Math.abs(a-b),f=[];for(let c of b){let b=c.groups??[];if(b.length<2||new Set(b.map(a=>Math.round(100*a.value))).size<2)continue;let d=RegExp((0,i.Lp)(c.name),"gu"),e=RegExp(`(?<![\\dA-Za-z])(\\d(?:[\\d,]*(?:\\.\\d+)?))\\s*${(0,i.YZ)(c.unit)}(?![0-9a-zA-Z])`,"gui"),g=[];for(let f of a.matchAll(d)){let d=f.index??0,h=d+f[0].length,i=a.lastIndexOf("\n",d)+1,j=a.indexOf("\n",d);if(-1===j&&(j=a.length),/^\s*\|/u.test(a.slice(i,j)))continue;let l=Math.max(i,d-24),m=a.slice(l,d),n=Math.max(m.lastIndexOf("。"),m.lastIndexOf(";"),m.lastIndexOf(";")),o=n>=0?m.slice(n+1):m,p=b.filter(a=>a.group&&o.includes(a.group));if(1!==p.length)continue;let q=p[0],r=a.slice(h,h+24),s=Math.min(...[r.search(/[、。;,]/u),r.search(/\n/u)].filter(a=>a>=0).concat([r.length])),t=r.slice(0,s),u=null;for(let a of t.matchAll(e)){let b=a[1],d=Number(b.replace(/,/gu,""));Number.isFinite(d)&&!(d<=0)&&(null===u||Math.abs(d-c.value)<Math.abs(u.value-c.value))&&(u={offset:h+(a.index??0)+a[0].indexOf(b),value:d,raw:b})}if(!u)continue;let v=a.slice(h,u.offset);(!/[A-Za-z]/u.test(v)||/[\u4e00-\u9fa5]/u.test(v))&&g.push({group:q.group,value:u.value,excerpt:a.slice(d,u.offset+u.raw.length),sentence:(0,k.kE)(a,d,u.offset+u.raw.length-d),flatIndex:-1})}0!==g.length&&f.push({authority:{name:c.name,value:c.value,unit:c.unit},detail:b,pairings:g})}if(0===f.length)return d.slice(0,8);let g=[];for(let a of f)for(let b of a.pairings){b.flatIndex=g.length;let c=a.detail.find(a=>a.group===b.group);g.push({id:`xp${b.flatIndex}`,kind:"quantity",subject:`${a.authority.name}(${b.group})`,value:b.value,unit:a.authority.unit,authority:c?.value??a.authority.value,sentence:b.sentence,facts:[`该条目清单分工程明细:${a.detail.map(b=>`${b.group} ${b.value}${a.authority.unit}`).join("、")}`]})}let h=c.adjudicate??k.hy,j=await h(g,{diagnostics:c.diagnostics,signal:c.signal});for(let a of f){let b=a.pairings.filter(a=>j.records.get(`xp${a.flatIndex}`)?.conclusion!=="consistent");if(0===b.length)continue;let c=!1;for(let f of b){let b=a.detail.find(a=>a.group===f.group);if(!b||e(b.value,f.value))continue;let g=a.detail.find(a=>a.group!==f.group&&e(a.value,f.value));if(g){d.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`跨工程同值复制:“${f.excerpt.slice(0,40)}”在“${f.group}”语境处取值 ${f.value}${a.authority.unit},该值是“${g.group}”的清单明细值(${f.group} 的清单明细值为 ${b.value}${a.authority.unit})`,suggestion:`以工程量清单分工程明细为准修正“${f.group}”语境:应为 ${b.value}${a.authority.unit},不得沿用“${g.group}”的明细值 ${f.value}${a.authority.unit};修复后全文该条目分工程取值必须与清单明细逐一对应。`}),c=!0;break}}if(c)continue;let f=new Map;for(let a of b){let b=a.value.toFixed(2),c=f.get(b)??new Set;c.add(a.group),f.set(b,c)}for(let[c,e]of f){if(e.size<2)continue;let f=a.detail.filter(a=>e.has(a.group));if(new Set(f.map(a=>Math.round(100*a.value))).size<2)continue;let g=b.find(a=>a.value.toFixed(2)===c);d.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`跨工程同值复制:“${g.excerpt.slice(0,40)}”数值 ${c}${a.authority.unit} 同时出现在“${[...e].join("”“")}”等 ${e.size} 个工程对象语境,而清单明细值互不相同(${f.map(b=>`${b.group} ${b.value}${a.authority.unit}`).join("、")})——至少一处属跨工程同值复制`,suggestion:`逐工程对象按清单明细值修正取值(${f.map(b=>`${b.group} ${b.value}${a.authority.unit}`).join("、")}),不得多工程共用同一数值。`});break}}return d.slice(0,8)}function bv(a){let{phrase:b,first:c,second:d}=a,e=(0,l.Qk)(b,c.phase),f=(0,l.Qk)(b,d.phase);if(e.length<4||f.length<4)return null;let g=e.start<=f.start?c:d,h=g===c?d:c;return{leading:g,trailing:h}}function bw(a,b){let c=[],d=[];if(0===b.length)return{claims:c,ambiguities:d};let e=new Set,f=(f,g,h,i)=>{if(e.has(f))return;let j=Number(g.replace(/[,,]/gu,""));if(!Number.isFinite(j)||j<=0)return;let k=a.lastIndexOf("\n",f)+1,m=a.indexOf("\n",f);-1===m&&(m=a.length);let n=a.slice(k,m);if(/^\s*\|.*\|\s*$/u.test(n)||aF.test(n))return;let o=a.slice(Math.max(k,f-12),f);if(/不少于|不低于|至少|最低|不小于|≥/u.test(o)||/(?:[\u4e00-\u9fa5]{1,3}(?:工|员|长)|司机|班组|队伍?)\s*$/u.test(o))return;let p=function(a,b){let c=(a.match(/[\p{Script=Han}]/gu)||[]).length;if(0===c)return null;let d=null,e={length:0,start:0,end:0};for(let c of b){let b=(0,l.Qk)(a,c.phase);b.length>=4&&(null===d||b.length>e.length)&&(d=c,e=b)}if(!d)return null;if(e.length>=c)return{best:d};for(let c of[a.slice(0,e.start),a.slice(e.end)])if(!((c.match(/[\p{Script=Han}]/gu)||[]).length<2)){for(let a of b)if(a.phase!==d.phase&&(0,l.Qk)(c,a.phase).length>=4)return{best:d,second:a}}return{best:d}}(h,b);if(!p)return;let q=a.slice(Math.max(k,f-24),Math.min(a.length,f+g.length+1)).trim();if(p.second){e.add(f),d.push({start:f,raw:g,actual:j,phrase:h,first:{phase:p.best.phase,value:p.best.value,trace:p.best.trace},second:{phase:p.second.phase,value:p.second.value,trace:p.second.trace},excerpt:q});return}j!==p.best.value&&(e.add(f),c.push({start:f,end:f+g.length,raw:g,actual:j,expected:p.best.value,phase:p.best.phase,trace:p.best.trace,channel:i,excerpt:q}))};for(let b of a.matchAll(t)){let c=(b.index??0)+b[0].indexOf(b[1]),d=a.lastIndexOf("\n",c)+1,e=w(a,d,c);e&&f(c,b[1],e.replace(/阶段$/u,""),"base")}for(let b of a.matchAll(v)){if(!b[1]||!b[2])continue;let c=b[2],d=(b.index??0)+b[0].lastIndexOf(c);if(e.has(d))continue;let g=Math.max(a.lastIndexOf("。",d),a.lastIndexOf(";",d),a.lastIndexOf(";",d))+1,h=a.length;for(let b of["。",";",";"]){let c=a.indexOf(b,d);-1!==c&&c<h&&(h=c)}/阶段/u.test(a.slice(g,h))&&f(d,c,b[1].trim(),"enumeration")}return{claims:c,ambiguities:d}}function bx(a,b){let{claims:c,ambiguities:d}=bw(a,b),e=[];for(let a of c)e.push({position:a.start,issue:{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`阶段劳动力数据矛盾:正文“${a.excerpt.slice(0,60)}”取值 ${a.actual} 人,与蓝图分阶段劳动力推导不符(“${a.phase}”阶段应为 ${a.expected} 人)`,suggestion:`分阶段劳动力人数必须以蓝图推导为准:将“${a.phase}”阶段人数统一为 ${a.expected} 人${a.trace?`(依据:${a.trace})`:""},删除其他口径数字。`}});for(let a of d)e.push({position:a.start,issue:{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`阶段名疑似拼接:正文“${a.excerpt.slice(0,60)}”中的阶段名“${a.phrase}”同时混含“${a.first.phase}”与“${a.second.phase}”两个蓝图阶段,人数 ${a.actual} 人无法归属`,suggestion:`将阶段名拆分表述:“${a.first.phase}”按 ${a.first.value} 人、“${a.second.phase}”按 ${a.second.value} 人(蓝图推导)分句列出,不得把两个阶段名连写成单一阶段。`}});return e.sort((a,b)=>a.position-b.position).slice(0,8).map(a=>a.issue)}function by(a,b){let c=[];if(0===b.length)return c;let d=/首批|第一批|首期|第一期/gu,e=/剩余|补充|追加/gu,f=/保持|维持|确保|不少于|不低于|控制在|以内|以下/u;for(let g of b){if(!g.name||!Number.isFinite(g.count)||g.count<=0)continue;let b=(0,i.Lp)(g.name),h=RegExp(`${b}[^\\n。;;、,,]{0,4}?([\\d,]+)\\s*(?:台|辆)`,"gu"),j=new Set,k=new Set,l="";for(let b of a.matchAll(/[^。;;\n]+/gu)){let c=b[0],g=b.index??0,i=[...c.matchAll(d)].map(a=>a.index??0),m=[...c.matchAll(e)].map(a=>a.index??0);if(0!==i.length||0!==m.length)for(let b of c.matchAll(h)){if(!b[1])continue;let c=Number(b[1].replace(/[,,]/gu,""));if(!Number.isFinite(c)||c<=0)continue;let d=b.index??0,e=g+d,h=a.lastIndexOf("\n",e)+1,n=a.indexOf("\n",e);-1===n&&(n=a.length);let o=a.slice(h,n);if(/^\s*\|.*\|\s*$/u.test(o)||aF.test(o))continue;let p=b[0];if(f.test(p)||/以内|以下|上限/u.test(a.slice(e+p.length,e+p.length+4)))continue;let q=i.filter(a=>a<d&&d-a<=40).pop(),r=m.filter(a=>a<d&&d-a<=40).pop();(void 0!==q||void 0!==r)&&(void 0!==r&&(void 0===q||r>q)?k.add(c):j.add(c),l||(l=a.slice(Math.max(h,e-20),Math.min(n,e+p.length)).trim()))}}if(0===j.size||0===k.size)continue;let m=[...j],n=[...k];if(!m.some(a=>n.some(b=>a+b===g.count))&&(c.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`机械设备分批台数矛盾:“${g.name}”分批投入(首批 ${m.join("/")} 台+剩余 ${n.join("/")} 台)各批组合之和均不等于蓝图机械汇总 ${g.count} 台${l?`(原文“${l.slice(0,50)}”)`:""}`,suggestion:`分批投入的台数之和必须等于蓝图机械汇总台数:将“${g.name}”各批次调整为首批与剩余合计 ${g.count} 台,或删除分批描述仅保留“${g.name} ${g.count} 台”汇总口径。`}),c.length>=5))break}return c}function bz(a,b){let c=[];if(!b||!Number.isFinite(b)||b<=0)return c;let d=/交底|考察|封样|编制|审批|报审|报批|培训|演练|签订|组建|建立|采购|调查|备案|申报|进场确认/u;for(let e of a.matchAll(/(?:开工令下发|开工令下达|下达开工令|开工|计划开工)[^。;;\n年月]{0,8}?(?:第\s*(\d+)\s*(?:个)?(?:日历)?日|(\d+)\s*(?:个)?(?:日历)?日)/gu)){let f=e[1]||e[2];if(!f||"内"===a.slice((e.index??0)+e[0].length,(e.index??0)+e[0].length+1))continue;let g=Number(f);if(!Number.isFinite(g)||g<=0||g<b)continue;let h=(e.index??0)+e[0].lastIndexOf(f),i=a.lastIndexOf("\n",h)+1,j=a.indexOf("\n",h);-1===j&&(j=a.length);let k=a.slice(i,j);if(/^\s*\|.*\|\s*$/u.test(k)||aF.test(k))continue;let l=a.slice(Math.max(i,h-40),Math.min(j,h+f.length+40));if(!d.test(l))continue;let m=a.slice(Math.max(i,h-30),Math.min(j,h+f.length+14)).trim();if(c.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`前期动作时限矛盾:正文“${m}”将前期准备动作时限设在开工后第 ${g} 日,已达到/超过总工期 ${b} 日(竣工日)——前期动作不可能安排在项目末期`,suggestion:`前期准备动作时限必须落在施工准备阶段内:将第 ${g} 日改为与施工准备阶段相匹配的早期天数(早于总工期 ${b} 日),或删除具体天数改述为“开工令下发后在施工准备阶段内完成”。`}),c.length>=5)break}return c}function bA(a){let b=a.split(/\r?\n/u),c=[];b.forEach((a,b)=>{let d=/^(#{3,4})\s+([^\n]+)$/u.exec(a.trim());d&&c.push({index:b,level:d[1].length,title:d[2].trim()})});let d=[];for(let a=0;a<c.length;a+=1){let{index:e,level:f,title:g}=c[a],h=g.replace(/^[\d.]+[\s\u00a0]*/u,"");if(!/工程\s*$/u.test(h))continue;let i=h.replace(/\s*工程\s*$/u,"");if(!i||!/[、与及]/u.test(i))continue;let j=i.split(/[、与及]/u).map(a=>a.trim()).filter(a=>a.length>=2);if(j.length<2)continue;let k=b.length;for(let b=a+1;b<c.length;b+=1)if(c[b].level<=f){k=c[b].index;break}let l=b.slice(e+1,k).join("\n"),m=l.replace(/[、,,]/gu,""),n=j.filter(a=>{if(l.includes(a))return!1;let b=a.replace(/[、,,]/gu,"").replace(/(?:安装|施工|工程|作业)$/u,"");return b.length>=2&&!m.includes(b)});0!==n.length&&d.push({lineIndex:e,level:f,title:g,parts:j,uncovered:n})}return d}},36003:(a,b,c)=>{c.d(b,{AI:()=>T,Ym:()=>I,eL:()=>q.eL,hZ:()=>D,nl:()=>Y,qX:()=>E,uQ:()=>U,w9:()=>A,xu:()=>q.xu});var d=c(76760),e=c(78217),f=c(70933),g=c(30836),h=c(40299),i=c(95734),j=c(22157),k=c(46482),l=c(71001),m=c(43378),n=c(52639),o=c(40693);c(22496);var p=c(30949),q=c(22213),r=c(91943),s=c(18274),t=c(76193),u=c(21702),v=c(41991),w=c(1358),x=c(3063),y=c(54185),z=c(80572);function A(a,b,c){let d=[...a.errors.map(a=>({level:"error",message:a,suggestion:"请补充配置或资料后重新生成。"})),...a.warnings.map(a=>({level:"warning",message:a,suggestion:"建议人工确认或补充对应资料。"}))];return c.some(a=>/资料未提供|系统暂未从知识库确认/u.test(a.content))&&d.push({level:"warning",message:"存在系统暂未从知识库确认的章节内容",suggestion:"请检查项目角色配置、文件绑定顺序和事实抽取落位结果。"}),b.conflicts.length>0&&d.push(...b.conflicts.map(a=>({level:"warning",message:a,suggestion:"请根据当前模板绑定的角色、文件证据和用户要求复核取值口径。"}))),d}let B=/\b\d+(?:\.\d+)?\s*(?:日历天|小时|分钟|天|周|月|年|万元|元|台|套|个|项|批|次|份|人)(?=[。,,;;::、\s]|$)/gu;function C(a){let b=new Set;for(let c of a){let a=(0,j.lG)(c.content).replace(/\s+/gu," ");if((!/报价明细|投标报价|单价|合价|综合单价|预留金|税率|增值税|利润|结算/u.test(a)||/合同估算价|合同估算价格|投资估算|最高投标限价|招标控制价/u.test(a))&&!/OCR|识别错误|乱码|无法确认|疑似|不确定|语义断裂/u.test(a)){for(let c of a.matchAll(s._W))b.add(c[0].trim());for(let c of a.matchAll(B))b.add(c[0].trim());if(b.size>=40)break}}return[...b].slice(0,40)}function D(a){let b=a.spec?.chapterRules.find(b=>b.id===a.chapter.id||b.title===a.chapter.title),c=(b?.requiredFactIds||[]).map(b=>a.spec?.factFields.find(a=>a.id===b)?.name).filter(Boolean),d=[...new Set([...a.chapter.requiredFacts,...c,...a.plan?.requiredContents||[],...a.plan?.evidenceNeeds||[],...(a.resolvedFactNeeds||[]).filter(a=>a.need.required).map(a=>a.need.label)].filter(Boolean))],e=a.roleFacts.map(({fact:a})=>`- ${a.key}:${(0,f.eE)((0,j.lG)(a.value))}`),g=(a.resolvedFactNeeds||[]).flatMap(a=>a.facts),h=a.indexedFacts||[],i=g.length>0?[]:h.map(a=>`- ${a.key||a.fieldName||"资料事实"}:${(0,f.eE)((0,j.lG)(a.value))}${a.sourceFile?`(来源:${a.sourceFile.split("/").pop()})`:""}`),k=[...g,...h].filter(a=>/建设地点|建设规模|招标范围|计划工期|合同工期|周期要求|质量标准|合同估算|投资估算|最高投标限价|招标控制价/u.test(`${a.key||""}${a.fieldName||""}${a.fieldId||""}`)).filter((a,b,c)=>c.findIndex(b=>`${b.key||b.fieldName}:${(0,j.lG)(b.value)}`==`${a.key||a.fieldName}:${(0,j.lG)(a.value)}`)===b),l=[...new Set([...C(a.evidence),...g.map(a=>(0,j.lG)(a.value)).filter(a=>s.sv.test(a)),...h.map(a=>(0,j.lG)(a.value)).filter(a=>s.sv.test(a))])],m=new Set([...a.evidence.map(a=>a.filePath),...g.map(a=>a.sourceFile),...(a.indexedFacts||[]).map(a=>a.sourceFile)]).size,n=(a.resolvedFactNeeds||[]).filter(a=>"satisfied"!==a.status&&a.need.required).map(a=>a.need.label),o=function(a){if(!a)return[];let b=[];for(let[c,d]of Object.entries(a)){if(d.length<2)continue;let a=d.filter((a,b,c)=>c.findIndex(b=>b.location===a.location&&b.spec===a.spec)===b);a.length<2||b.push(`- ${c}:${a.slice(0,8).map(a=>`${a.location}:${a.spec}`).join("|")}`)}return b.slice(0,12)}(a.specAuthorityMap);return["【本章事实覆盖与参数落位要求】",d.length?`必须优先覆盖的事实/要求:
104
+ |]{0,40}?(${i.source})`,"gu");for(let b of a.matchAll(l)){let f=b[1]||"";if(aG.test(b[0])||aH.test(b[0])||aI.test(b[0]))continue;let h=a.slice(Math.max(0,(b.index||0)-40),b.index||0);if(aI.test(h))continue;let j=a.slice((b.index||0)+b[0].length,(b.index||0)+b[0].length+10);if(/范围内|范围/u.test(j)||/(?:工作宽度|作业宽度|操作空间|工作面)/u.test(j)||/^、\s*\d/u.test(j)||/^\s*厚(?:\s*[\d::]|覆膜|木|胶合)/u.test(j)||RegExp(`^(?:或|[、,,/])\\s*(?:${i.source})`,"u").test(j))continue;let l=a.slice(Math.max(0,b.index||0),(b.index||0)+b[0].length);if(/(?:标高|高程|平整度|轴线|垂直度|高差)[^。;;\n|]{0,10}(?:偏差|误差|不超过|不得大于|不大于)/u.test(l.slice(-28)))continue;let m=b[0].indexOf(f);if(m>g.length&&/(?:涵头|面层|基层|垫层|管基|基础|梁|板|柱|墙|地坪|路面)/u.test(b[0].slice(g.length,m)))continue;let n=b.index||0,o=d.find(b=>b.length>g.length&&b.endsWith(g)&&a.slice(n+g.length-b.length,n+g.length)===b);if(o&&new Set(e.filter(a=>a.location===o&&aP(a.spec)?.source===i.source).map(a=>a.spec)).has(f)||k.has(f))continue;let p=1===k.size?[...k][0]:void 0,q=n+m;if(c.push({issue:{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`规格错位:“${g}”使用的规格 ${f} 与工程量清单权威(${[...k].join("/")})不一致`,suggestion:`按工程量清单将“${g}”的规格统一为 ${[...k].join("/")};同一材料不同部位允许不同规格,但同一部位不得混用其他部位的规格。`},location:g,replacement:p?{start:q,end:q+f.length,replacement:p,detail:`规格错位“${g}” ${f}→${p}(以工程量清单锁定口径为准)`}:void 0}),c.length>=8)return c}}}return c.slice(0,8)}function aR(a,b){return aQ(a,b).map(a=>a.issue)}let aS=/桩基|灌注桩|钻孔桩|打桩|成桩|桩机/u;function aT(a){let b=function(a){let b=[];for(let c of[...a.matchAll(/^#{3,4}\s+[^\n]*(?:地基与基础)[^\n]*$/gmu)]){let d=(c.index||0)+c[0].length,e=a.slice(d).search(/^#{2,4}\s+/mu),f=a.slice(d,e>=0?d+e:a.length);b.push(f)}return b}(a);if(0===b.length||b.some(a=>aS.test(a)))return[];let c=[];for(let b of a.split(/\r?\n/u)){let a=b.trim();!(!a||/^#{1,6}\s/u.test(a))&&aS.test(b)&&c.push(a.slice(0,48))}let d=[...new Set(c)].slice(0,5);return d.length<2?[]:[{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`桩基表述残留:地基与基础章节施工流程为筏板/独立基础(无桩基工序),但全文另有 ${d.length} 处桩基表述:${d.join("、")}`,suggestion:"本项目基础形式不含桩基:删除全文所有桩基/桩机表述,进度计划表关键线路工序、质量验收划分表、隐蔽验收表均改为本项目实际基础工序(垫层/底板钢筋/混凝土)。"}]}let aU=/^\s*\|\s*计划工期\s*\|([^|\n]*)\|/u,aV=/工期延误|延误|违约|切除|赔偿|罚款|解除|扣减/u;function aW(a){let b=[];for(let c of a.split(/\r?\n/u)){let a=aU.exec(c);if(!a)continue;let d=(a[1]??"").trim();d&&aV.test(d)&&b.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`基本信息表「计划工期」字段错填违约条款文字:“${d.slice(0,40)}”`,suggestion:"「计划工期」字段应填日历天数值(与招标文件前附表一致);工期延误违约条款文字应放在工期风险管控章节,不得占用基本信息表字段。"})}return b.slice(0,2)}let aX=/基础|支护|围护|桩|结构|开挖|放坡|喷锚|排桩|连续墙|土钉|锚杆|标高|深度|形式|体系/u;function aY(a){let b=a.replace(/\s+/gu,""),c=new Set;for(let a of b.matchAll(/([一-龥]{2,8})\/([一-龥]{2,8})/gu)){let d=aX.test(a[1])||aX.test(a[2]),e=(0,j.m4)(a[1],a[2]);if(!d&&!e)continue;let f=Math.max(0,(a.index||0)-12),g=Math.min(b.length,(a.index||0)+a[0].length+12),h=b.slice(f,g);!/管线|管道|电缆|给水|排水/u.test(h)&&(!/采用|形式|方式|方案|选用|拟用|拟采用|为/u.test(h)&&(!e||/不得|禁止|不应|不宜|避免|严禁|无需/u.test(h))||c.add(`“${a[1]}/${a[2]}”`))}for(let a of b.matchAll(/[((]\s*或[^))]{1,48}[))]/gu)){let d=a[0].slice(1,-1);if(!/按图纸|按实|按图|待定|另行|视[^,。;]{0,8}而定|根据实际/u.test(d))continue;let e=Math.max(0,(a.index||0)-20),f=b.slice(e,(a.index||0)+a[0].length);aX.test(f)&&c.add(a[0].slice(0,30))}for(let a of b.matchAll(/([一-龥]{2,8})或([一-龥]{2,8})/gu)){let d=aX.test(a[1])||aX.test(a[2]),e=(0,j.m4)(a[1],a[2]);if(!d&&!e)continue;let f=Math.max(0,(a.index||0)-12),g=b.slice(f,(a.index||0)+a[1].length);if(/管线|管道|电缆|给水|排水/u.test(g)||!/按|采用|选用|拟用|拟采用|方案|为/u.test(g)&&(!e||/不得|禁止|不应|不宜|避免|严禁|无需/u.test(g)))continue;let h=b.slice(Math.max(0,(a.index||0)-6),a.index||0);if(/临时/u.test(h+a[0])&&/支护|围护|放坡|坡率|开挖/u.test(a[0])||/围挡|警示|防护栏|爬梯|栈桥|便道/u.test(a[0]))continue;let i=a[1].replace(/^.*?(地下连续墙|钢板桩|灌注桩|支护桩|土钉墙|基础|支护|围护|结构|开挖|放坡|喷锚|排桩|连续墙|土钉|锚杆|形式|体系)/u,"$1");c.add(`${i}或${a[2]}`)}return 0===c.size?[]:[{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`关键设计决策两可表述:${[...c].join("、")} 以并列/悬置形态表述,基础形式、支护形式等关键决策必须在正文中唯一确定`,suggestion:"以设计图纸/勘察报告/工程量清单为准锁定唯一决策并删除两可表述:明确写出本项目基础形式与支护形式的具体做法(如「基础形式为筏板基础」「基坑支护采用放坡+喷锚」),禁止「或…按图纸实施」类悬置话术。"}]}function aZ(a){let b=a.replace(/\s+/gu,"");if((b.match(/基坑|开挖|支护/gu)||[]).length<3)return[];for(let a of b.matchAll(/(?:深度|标高)[^。;,,]{0,12}-?\d+(?:\.\d+)?[^。;,,]{0,6}/gu)){let b=a[0];if(!/(?:超过|大于|小于|不[大低小]于|不低于|低于|高于|按|倍|依据|详见|参考|示意|每|以上|以下|偏差|±0|0\.000)/u.test(b)&&!/\d+(?:\.\d+)?\s*(?:h|小时|天|日|min|周|月|昼夜)/u.test(b))return[]}return[{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:"基坑深度数值未锁定:正文已有基坑支护/开挖成稿内容,但全文未出现「深度/标高+数值」的确定性表述(比较式阈值如「超过3m」不视为锁定),危大工程分级判定失去依据",suggestion:"从绑定资料(地质勘察报告/基坑支护设计图/基础平面图)锁定基坑开挖深度数值写入基坑支护小节;深度 ≥5m 的深基坑须同步标注危大工程分级与专家论证要求,禁止以「按图纸确定」回避深度数值。"}]}function a$(a,b){let c=(0,i.z4)(b);if(void 0===c||c<3)return[];let d=[];return c>=3&&!/危大工程/u.test(a)&&d.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`危大工程判定缺失:资料基坑开挖深度 ${c}m(≥3m),正文必须出现危大工程判定标注`,suggestion:`依据住建部令第37号,开挖深度≥3m 属危大工程:在基坑支护/危大工程清单小节写明本工程实际深度 ${c}m 与危大工程判定结论,不得只写判定规则不落地本项目。`}),c>=5&&!/超过一定规模/u.test(a)&&d.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`超危大工程判定缺失:资料基坑开挖深度 ${c}m(≥5m),正文必须出现「超过一定规模」判定与专家论证要求`,suggestion:`开挖深度≥5m 属超过一定规模的危大工程:写明本工程深度 ${c}m 对应分级结论,专项施工方案必须经专家论证,不得只写判定规则不落地分级。`}),d}function a_(a,b){let c=[b.canonical?.byKey.foundation_support_form?.value,...(b.drawings||[]).map(a=>`${a.fieldName||a.key||""} ${(0,e.lG)(a.value)}`),...(b.project||[]).map(a=>`${a.fieldName||a.key||""} ${(0,e.lG)(a.value)}`),...(b.preciseFacts||[]).map(a=>`${a.fieldName||a.key||""} ${(0,e.lG)(a.value)}`)].filter(Boolean).filter(a=>/基坑支护形式|基坑支护方式|支护形式|支护方式|土钉|放坡|喷锚|护坡/u.test(a)&&!/监测|监测频次|闭环|基坑开挖深度/u.test(a));if(0===c.length)return[];let d=[];for(let a of c)for(let b of["土钉墙","放坡","喷锚","挂网喷浆","排桩","灌注桩","地下连续墙","内支撑","锚杆","锚索"])a.includes(b)&&d.push(b);let f=[],g=/不采用|未采用|不设置|未设置|不使用|不宜采用|不得采用|不再出现|不得出现|严禁出现|避免出现|已删除|取消/u,h=["支护桩","冠梁","钻孔灌注桩","灌注桩","地下连续墙","排桩","咬合桩","内支撑"].filter(b=>(b=>{let c=RegExp(b,"gu");for(let b of a.matchAll(c)){let c=a.lastIndexOf("\n",b.index)+1,d=a.indexOf("\n",b.index);-1===d&&(d=a.length);let e=a.slice(c,d).slice(Math.max(0,b.index-c-12),b.index-c);if(!g.test(e))return!0}return!1})(b)&&!d.includes(b));return h.length>0&&f.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`支护形式与资料矛盾:正文出现资料中不存在的支护体系词 ${h.join("、")}`,suggestion:`资料基坑支护形式为「${d.join("、")||c[0]?.slice(0,60)}」:删除编造的支护桩/冠梁/灌注桩类表述与对应参数(垂直度偏差/冠梁顶面标高等),按资料支护形式改写。`}),0===d.filter(b=>RegExp(b,"u").test(a)).length&&/基坑|支护/u.test(a)&&f.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`支护形式未落地:资料基坑支护形式「${d.join("、")||c[0]?.slice(0,60)}」未在正文中出现`,suggestion:`在基坑支护小节写明本工程实际支护形式(${d.join("、")})及对应工艺参数(土钉长度/间距/坡度等),不得以泛化表述回避。`}),f}let a0=["塔式起重机","施工升降机","施工电梯","汽车起重机","汽车吊","混凝土泵车","混凝土泵","挖掘机","装载机","推土机","压路机","平地机","空压机","注浆机","锚杆钻机","混凝土喷射机","喷射机","吊篮","钢筋加工设备","塔吊"],a1=/挖掘机|空压机|注浆机|锚杆钻机|混凝土喷射机|喷射机|推土机/u;function a2(a,b){let c=function(a){let b=[];for(let c of a.matchAll(/第(\d{2,3})日[^。;;\n|]{0,8}?(?:进场|投入使用|安装|调试)/gu)){let d=a.slice(Math.max(0,(c.index||0)-24),c.index||0),e=a0.find(a=>d.includes(a));e&&b.push({equipment:e,day:Number(c[1]),raw:`${d.slice(-18)}${c[0].slice(0,20)}`})}let c=new Set;return b.filter(a=>{let b=`${a.equipment}:${a.raw}`;return!c.has(b)&&(c.add(b),!0)})}(a);if(0===c.length)return[];let d=[],f=function(a,b){for(let c of[a,...(b.schedule||[]).map(a=>`${a.key||""}${(0,e.lG)(a.value)}`)]){let a=/(?:计划工期|合同工期|总工期|工期总日历天数)[^\d。;;\n|]{0,12}(\d{1,4})\s*个?\s*日历天/u.exec(c);if(a){let b=Number(a[1]);if(Number.isFinite(b)&&b>=30&&b<=3e3)return b}}}(a,b);if(void 0!==f){let a=c.filter(a=>a.day>=f);a.length>0&&d.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`设备进场时间荒谬:${a.slice(0,3).map(a=>`「${a.equipment} 第${a.day}日进场」`).join("、")} 已达/超过总工期(${f}日历天),工程结束时设备尚未进场`,suggestion:`以总进度计划为准核对设备进场计划:大型施工设备必须在总工期结束前进场并完成使用,${a.map(a=>a.equipment).join("、")} 的进场日应提前至工程开始阶段,删除矛盾的尾期进场表述。`})}let g=ay(a).filter(a=>"excavation"===a.key).map(a=>a.day);if(g.length>0){let a=Math.min(...g),b=c.filter(b=>a1.test(b.equipment)&&b.day>a);b.length>0&&d.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`设备进场工序倒挂:${b.slice(0,3).map(a=>`「${a.equipment} 第${a.day}日进场」`).join("、")} 晚于基坑支护及土方外运完成节点(第${a}日),基坑阶段设备未在工序开始前进场`,suggestion:`基坑阶段专用设备必须在基坑开挖/支护开始前完成进场与报验:将 ${b.map(a=>a.equipment).join("、")} 的进场日调整为早于基坑支护完成节点(第${a}日)的日期,删除工序倒挂表述。`})}return d.slice(0,3)}let a3=/[\u4e00-\u9fa5]{2,10}(?:杯|奖)(?![励金惩罚项])/gu,a4=/优质工程|文明工地|样板|标准化|观摩|示范|精品工程|结构优质|省优|市优/u;function a5(a){let b=a;for(;;){let a=b.replace(/^(?:争创|争取|力争|争获|确保|获得|创建|力创|评为|荣获|标为|目标为|承诺|为)/u,"");if(a===b||!a)break;b=a}return b}let a6=/^\s*\|[\s:|-]+\|/u;function a7(a){let b=a.split(/\r?\n/u),c=[],d=a=>a.trim().replace(/^\|/u,"").replace(/\|$/u,"").split("|").map(a=>a.trim()),e=a=>a6.test(a),f=0;for(;f<b.length;){let a;if(!/^\s*\|/u.test(b[f])){f+=1;continue}let g=f;for(;g<b.length&&/^\s*\|/u.test(b[g]);)g+=1;let h=b.slice(f,g),i=0,j=0,k=0,l=b=>{if(!a)return;let e=h.slice(j,b);0!==e.length&&c.push({startLine:f+i,endLine:f+b-1,header:a,firstCol:e.map(a=>d(a)[0]?.replace(/[*_`]/gu,"").trim()||"").filter(Boolean),dataRows:e.map(a=>d(a).map(a=>a.replace(/[*_`]/gu,"").trim())),dataCells:e.flatMap(a=>d(a).map(a=>a.replace(/[*_`]/gu,"").trim())).filter(Boolean),bodyChars:e.join("").length,raw:h.slice(i,b)})};for(;k<h.length;){if(k+1<h.length&&e(h[k+1]||"")){l(k),a=d(h[k]).map(a=>a.replace(/[*_`]/gu,"").trim()),i=k,j=k+2,k+=2;continue}if(a&&k>j){let b=d(h[k]).map(a=>a.replace(/[*_`]/gu,"").trim()).filter(Boolean);if(a8(b,a)>=.6&&k+1<h.length&&!e(h[k+1]||"")){l(k),a=b,i=k,j=k+1,k+=1;continue}}k+=1}l(h.length),f=g}return c}function a8(a,b){if(0===a.length||0===b.length)return 0;let c=new Set(a),d=new Set(b);return[...c].filter(a=>d.has(a)).length/new Set([...c,...d]).size}function a9(a,b){if(0===a.length)return 0;let c=[...b],d=0;for(let b of a){let a=c.indexOf(b);a>=0&&(c.splice(a,1),d+=1)}return d/a.length}let ba=/^[\d,,.]+\s*(?:人|个|台|具|套|处|支|辆|班|组|项)?$/u,bb=a=>a.filter(a=>!ba.test(a));function bc(a){let b=[];for(let c of a7(a)){let a=c.dataRows;if(a.length<4)continue;let d=a=>(a[0]||"").trim(),e=(a,b)=>a8(a,b);for(let f=Math.floor(a.length/2);f<=Math.ceil(a.length/2);f+=1){let g=a.slice(0,f),h=a.slice(f);if(g.length<2||h.length<2)continue;let i=0,j=-1;for(let a of h){let b=d(a);if(b){for(let c=j+1;c<g.length;c+=1)if(d(g[c])===b&&e(a,g[c])>=.5){i+=1,j=c;break}}}let k=i/h.length;if(!(k<.8)){b.push({level:"error",severity:"blocker",category:"style",owner:"llm",repairability:"local_deterministic",message:`表格内部数据行重复:第 ${c.startLine+1}~${c.endLine+1} 行表格(表头:${c.header.slice(0,3).join("|")})数据行两遍粘贴(${f} 行 + ${h.length} 行,重复匹配率 ${Math.round(100*k)}%)`,suggestion:`删除第二遍重复数据行(保留第一遍 ${f} 行),删除后表格仅保留一份完整数据。`});break}}}return b}function bd(a){let b=[],c=a7(a);if(c.length<2)return b;for(let a=0;a<c.length;a+=1)for(let d=a+1;d<c.length;d+=1){let e=c[a],f=c[d],g=e.header.length>0&&e.header.length===f.header.length&&e.header.every((a,b)=>a===f.header[b]),h=a8(e.header,f.header),i=a8(e.firstCol,f.firstCol),j=a8(e.dataCells,f.dataCells),k=Math.max(a9(bb(e.dataCells),bb(f.dataCells)),a9(bb(f.dataCells),bb(e.dataCells)));(g&&j>=.6||h>=.7&&i>=.6||i>=.6&&k>=.6)&&b.push({level:"error",severity:"blocker",category:"style",owner:"llm",repairability:"llm_repairable",message:`表格重复:第 ${e.startLine+1}~${e.endLine+1} 行表格(表头:${e.header.slice(0,3).join("|")})与第 ${f.startLine+1}~${f.endLine+1} 行表格高度重复(表头重合 ${Math.round(100*h)}%、数据重合 ${Math.round(100*j)}%、首列重合 ${Math.round(100*i)}%)`,suggestion:"同一文档内同主题表格只保留信息最全的一张:删除重复表格(保留字段与数据行更多的那张),删除后核对章节表格计划仍被覆盖。"})}return b.sort((a,b)=>{let c=a=>Number(a.match(/数据重合\s*(\d+)%/u)?.[1]??0);return c(b.message)-c(a.message)}).slice(0,5)}function be(a){let b=a.replace(/\s+/gu,"");return b.length>=40?b:void 0}let bf=15;function bg(a){let b=function(a){let b=[];for(let c of a.split(/\n\s*\n/u)){let a=c.trim();if(!a)continue;let d=a.split(/\n/u).filter(a=>{let b=a.trim();return b&&!/^#{1,6}\s/u.test(b)&&!b.startsWith("|")}).join("\n"),e=[];for(let a of d.split(/[。!?!?]/u)){let b=a.trim().replace(/\s+/gu,"");if(b.length<bf)continue;let c=e.findIndex(a=>a.sentence===b||a.sentence.length>b.length&&a.sentence.length-b.length<=bf&&a.sentence.endsWith(b));c>=0?e[c].count+=1:e.push({sentence:b,count:1})}for(let a of e)a.count>=2&&b.push({sentence:a.sentence,count:a.count})}return b}(a);return 0===b.length?[]:b.slice(0,3).map(({sentence:a,count:b})=>({level:"error",severity:"blocker",category:"style",owner:"llm",repairability:"local_deterministic",message:`段落内句子复读 ${b} 次:“${a.slice(0,30)}…”`,suggestion:"同一段落内相同句子只保留首次出现,删除段尾复读的重复句(确定性修复器已接入自动剥离)。"}))}let bh=/^(.+?)(?:((?:\d+|[一二三四五六七八九十]+)))+$/u;function bi(a){let b=[];for(let c of a.matchAll(/^###\s+(.+)$/gmu)){let d=c[1].trim();bh.test(d)&&b.push({raw:d,index:a.lastIndexOf("\n",c.index??0)+1})}return b}function bj(a){let b=bi(a);return 0===b.length?[]:b.slice(0,3).map(({raw:a})=>({level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"local_deterministic",message:`目录小节标题含防撞名编号后缀:“${a}”`,suggestion:"正式投标文件目录不允许「(1)(2)」编号后缀小节:确定性修复器已接入(按主题域重命名为语义化标题或合并同基线拆半小节)。"}))}let bk=/第(\d{1,3})日(?:至|到|~|~|—|-)第(\d{1,3})日/gu;function bl(a){let b=[];for(let c of a.matchAll(bk))Number(c[1])<=Number(c[2])||b.push({start:c.index??0,end:(c.index??0)+c[0].length,raw:c[0]});return b}function bm(a){let b=bl(a);return 0===b.length?[]:b.slice(0,3).map(({raw:a})=>({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`时间区间倒挂:“${a}”起点大于终点,属时间拼接病句`,suggestion:"删除倒挂区间起点,仅保留终点日期表述(确定性修复器已接入自动剥离)。"}))}function bn(a){let b=[],c=a.split(/\r?\n/u),d=new Map,e=[],f=()=>{let a=be(e.join(""));if(a){let b=(d.get(a)||0)+1;d.set(a,b)}e=[]};for(let a of c){let b=a.trim();if(!b||/^#{1,6}\s/u.test(b)||/^\s*\|/u.test(b)){f();continue}if(/^[-*•]\s/u.test(b)){f(),e.push(b),f();continue}e.push(b)}for(let[a,c]of(f(),[...d.entries()].filter(([,a])=>a>=2).slice(0,3)))b.push({level:"error",severity:"blocker",category:"style",owner:"llm",repairability:"llm_repairable",message:`段落完全重复 ${c} 次:“${a.slice(0,40)}…”`,suggestion:"同一段落正文只保留首次出现处,删除其余重复段落;确需前后呼应时改写为差异化表述并压缩篇幅。"});return b}function bo(a,b,c){let d=new Set;for(let a of[...b.quality,...b.project,...b.schedule])for(let b of(0,e.lG)(a.value).matchAll(a3))d.add(a5(b[0]));if(c?.extracted)for(let a of c.entries)for(let b of a.text.matchAll(a3))d.add(a5(b[0]));if(0===d.size)return[];let f=new Set;for(let b of a.matchAll(a3)){let a=a5(b[0]);!d.has(a)&&(a4.test(a)||f.add(a))}return 0===f.size?[]:[{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`奖项表述与招标文件白名单不符:正文出现 ${[...f].join("、")},均未出现在招标文件评分项要求或绑定资料中`,suggestion:"创优目标必须以招标文件原文为准逐字落位(如「确保黄山杯」),禁止自行编造或替换为其他奖项名称;白名单外的奖项表述一律删除或替换为招标原文奖项。"}]}function bp(a){let b=a.split(/\r?\n/u),c=new Set;for(let a of b){let b=/^(#{2,4})\s+(.+)$/u.exec(a.trim());if(!b)continue;let d=b[2].trim();(0,h.Xp)(d)&&c.add(d)}if(0===c.size)return[];let d=[...c];return[{level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"llm_repairable",message:`正文出现投标人资格内容小节:${d.slice(0,3).map(a=>`“${a}”`).join("、")}${d.length>3?" 等":""}(资格审查内容不属于施工组织设计,属资格文件/商务文件范畴)`,suggestion:"删除资格内容小节(标题与正文整体删除),不得以改写、合并、降级方式保留;正文如需提及安全生产许可证等证照,只能以施工管理口径表述(如“按规定持证上岗”),不得成节铺陈资格核验内容。"}]}let bq=/人[、,,]材[、,,]机/u,br=/(?:确保\s*)?([人材机])(?:员|力|料|械|工)?\s*的保障体系与措施/u;function bs(a){let b=a.match(br)?.[1];return b||(/劳动力|人员|作业人员|劳务/u.test(a)?"人":/材料|物资|周转/u.test(a)?"材":/机械|设备|机具|塔吊|起重机/u.test(a)?"机":void 0)}function bt(a){let b=[],c=a.split(/\r?\n/u);for(let a=0;a<c.length;a+=1){let d,e=/^##\s+(.+)$/u.exec(c[a].trim());if(!e||!bq.test(e[1]))continue;let f=c.length;for(let b=a+1;b<c.length;b+=1)if(/^##\s+/u.test(c[b].trim())){f=b;break}let g=[];for(let e=a+1;e<f;e+=1){let a=/^###\s+(.+)$/u.exec(c[e].trim()),f=/^####\s+(.+)$/u.exec(c[e].trim());if(a){d={subject:bs(a[1]),title:a[1].trim()},g.push(d);continue}if(f&&d?.subject){let a=bs(f[1]);a&&a!==d.subject&&b.push({level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"llm_repairable",message:`人材机章层级错位:小节“${f[1].trim()}”挂在“${d.title}”之下(${"人"===a?"人":"材"===a?"材":"机"}的保障体系应独立成二级小节,不得并入${"人"===d.subject?"人":"材"===d.subject?"材":"机"}的保障体系)`,suggestion:`将“${f[1].trim()}”提升为独立二级小节,或将其内容合并到对应主题的二级小节。`})}}let h=new Set(g.map(a=>a.subject).filter(Boolean)),i=["人","材","机"].every(a=>h.has(a));(g.length<3||!i)&&b.push({level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"llm_repairable",message:`人材机章结构不完整:“${e[1].trim()}”仅 ${g.length} 个二级小节(人/材/机的保障体系未全部独立成节)`,suggestion:"拆分为“确保人的保障体系与措施”“确保材的保障体系与措施”“确保机的保障体系与措施”三个二级小节。"})}return b}async function bu(a,b,c={}){let d=[],e=(a,b)=>1e-6>Math.abs(a-b),f=[];for(let c of b){let b=c.groups??[];if(b.length<2||new Set(b.map(a=>Math.round(100*a.value))).size<2)continue;let d=RegExp((0,i.Lp)(c.name),"gu"),e=RegExp(`(?<![\\dA-Za-z])(\\d(?:[\\d,]*(?:\\.\\d+)?))\\s*${(0,i.YZ)(c.unit)}(?![0-9a-zA-Z])`,"gui"),g=[];for(let f of a.matchAll(d)){let d=f.index??0,h=d+f[0].length,i=a.lastIndexOf("\n",d)+1,j=a.indexOf("\n",d);if(-1===j&&(j=a.length),/^\s*\|/u.test(a.slice(i,j)))continue;let l=Math.max(i,d-24),m=a.slice(l,d),n=Math.max(m.lastIndexOf("。"),m.lastIndexOf(";"),m.lastIndexOf(";")),o=n>=0?m.slice(n+1):m,p=b.filter(a=>a.group&&o.includes(a.group));if(1!==p.length)continue;let q=p[0],r=a.slice(h,h+24),s=Math.min(...[r.search(/[、。;,]/u),r.search(/\n/u)].filter(a=>a>=0).concat([r.length])),t=r.slice(0,s),u=null;for(let a of t.matchAll(e)){let b=a[1],d=Number(b.replace(/,/gu,""));Number.isFinite(d)&&!(d<=0)&&(null===u||Math.abs(d-c.value)<Math.abs(u.value-c.value))&&(u={offset:h+(a.index??0)+a[0].indexOf(b),value:d,raw:b})}if(!u)continue;let v=a.slice(h,u.offset);(!/[A-Za-z]/u.test(v)||/[\u4e00-\u9fa5]/u.test(v))&&g.push({group:q.group,value:u.value,excerpt:a.slice(d,u.offset+u.raw.length),sentence:(0,k.kE)(a,d,u.offset+u.raw.length-d),flatIndex:-1})}0!==g.length&&f.push({authority:{name:c.name,value:c.value,unit:c.unit},detail:b,pairings:g})}if(0===f.length)return d.slice(0,8);let g=[];for(let a of f)for(let b of a.pairings){b.flatIndex=g.length;let c=a.detail.find(a=>a.group===b.group);g.push({id:`xp${b.flatIndex}`,kind:"quantity",subject:`${a.authority.name}(${b.group})`,value:b.value,unit:a.authority.unit,authority:c?.value??a.authority.value,sentence:b.sentence,facts:[`该条目清单分工程明细:${a.detail.map(b=>`${b.group} ${b.value}${a.authority.unit}`).join("、")}`]})}let h=c.adjudicate??k.hy,j=await h(g,{diagnostics:c.diagnostics,signal:c.signal});for(let a of f){let b=a.pairings.filter(a=>j.records.get(`xp${a.flatIndex}`)?.conclusion!=="consistent");if(0===b.length)continue;let c=!1;for(let f of b){let b=a.detail.find(a=>a.group===f.group);if(!b||e(b.value,f.value))continue;let g=a.detail.find(a=>a.group!==f.group&&e(a.value,f.value));if(g){d.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`跨工程同值复制:“${f.excerpt.slice(0,40)}”在“${f.group}”语境处取值 ${f.value}${a.authority.unit},该值是“${g.group}”的清单明细值(${f.group} 的清单明细值为 ${b.value}${a.authority.unit})`,suggestion:`以工程量清单分工程明细为准修正“${f.group}”语境:应为 ${b.value}${a.authority.unit},不得沿用“${g.group}”的明细值 ${f.value}${a.authority.unit};修复后全文该条目分工程取值必须与清单明细逐一对应。`}),c=!0;break}}if(c)continue;let f=new Map;for(let a of b){let b=a.value.toFixed(2),c=f.get(b)??new Set;c.add(a.group),f.set(b,c)}for(let[c,e]of f){if(e.size<2)continue;let f=a.detail.filter(a=>e.has(a.group));if(new Set(f.map(a=>Math.round(100*a.value))).size<2)continue;let g=b.find(a=>a.value.toFixed(2)===c);d.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`跨工程同值复制:“${g.excerpt.slice(0,40)}”数值 ${c}${a.authority.unit} 同时出现在“${[...e].join("”“")}”等 ${e.size} 个工程对象语境,而清单明细值互不相同(${f.map(b=>`${b.group} ${b.value}${a.authority.unit}`).join("、")})——至少一处属跨工程同值复制`,suggestion:`逐工程对象按清单明细值修正取值(${f.map(b=>`${b.group} ${b.value}${a.authority.unit}`).join("、")}),不得多工程共用同一数值。`});break}}return d.slice(0,8)}function bv(a){let{phrase:b,first:c,second:d}=a,e=(0,l.Qk)(b,c.phase),f=(0,l.Qk)(b,d.phase);if(e.length<4||f.length<4)return null;let g=e.start<=f.start?c:d,h=g===c?d:c;return{leading:g,trailing:h}}function bw(a,b){let c=[],d=[];if(0===b.length)return{claims:c,ambiguities:d};let e=new Set,f=(f,g,h,i)=>{if(e.has(f))return;let j=Number(g.replace(/[,,]/gu,""));if(!Number.isFinite(j)||j<=0)return;let k=a.lastIndexOf("\n",f)+1,m=a.indexOf("\n",f);-1===m&&(m=a.length);let n=a.slice(k,m);if(/^\s*\|.*\|\s*$/u.test(n)||aF.test(n))return;let o=a.slice(Math.max(k,f-12),f);if(/不少于|不低于|至少|最低|不小于|≥/u.test(o)||/(?:[\u4e00-\u9fa5]{1,3}(?:工|员|长)|司机|班组|队伍?)\s*$/u.test(o))return;let p=function(a,b){let c=(a.match(/[\p{Script=Han}]/gu)||[]).length;if(0===c)return null;let d=null,e={length:0,start:0,end:0};for(let c of b){let b=(0,l.Qk)(a,c.phase);b.length>=4&&(null===d||b.length>e.length)&&(d=c,e=b)}if(!d)return null;if(e.length>=c)return{best:d};for(let c of[a.slice(0,e.start),a.slice(e.end)])if(!((c.match(/[\p{Script=Han}]/gu)||[]).length<2)){for(let a of b)if(a.phase!==d.phase&&(0,l.Qk)(c,a.phase).length>=4)return{best:d,second:a}}return{best:d}}(h,b);if(!p)return;let q=a.slice(Math.max(k,f-24),Math.min(a.length,f+g.length+1)).trim();if(p.second){e.add(f),d.push({start:f,raw:g,actual:j,phrase:h,first:{phase:p.best.phase,value:p.best.value,trace:p.best.trace},second:{phase:p.second.phase,value:p.second.value,trace:p.second.trace},excerpt:q});return}j!==p.best.value&&(e.add(f),c.push({start:f,end:f+g.length,raw:g,actual:j,expected:p.best.value,phase:p.best.phase,trace:p.best.trace,channel:i,excerpt:q}))};for(let b of a.matchAll(t)){let c=(b.index??0)+b[0].indexOf(b[1]),d=a.lastIndexOf("\n",c)+1,e=w(a,d,c);e&&f(c,b[1],e.replace(/阶段$/u,""),"base")}for(let b of a.matchAll(v)){if(!b[1]||!b[2])continue;let c=b[2],d=(b.index??0)+b[0].lastIndexOf(c);if(e.has(d))continue;let g=Math.max(a.lastIndexOf("。",d),a.lastIndexOf(";",d),a.lastIndexOf(";",d))+1,h=a.length;for(let b of["。",";",";"]){let c=a.indexOf(b,d);-1!==c&&c<h&&(h=c)}/阶段/u.test(a.slice(g,h))&&f(d,c,b[1].trim(),"enumeration")}return{claims:c,ambiguities:d}}function bx(a,b){let{claims:c,ambiguities:d}=bw(a,b),e=[];for(let a of c)e.push({position:a.start,issue:{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`阶段劳动力数据矛盾:正文“${a.excerpt.slice(0,60)}”取值 ${a.actual} 人,与蓝图分阶段劳动力推导不符(“${a.phase}”阶段应为 ${a.expected} 人)`,suggestion:`分阶段劳动力人数必须以蓝图推导为准:将“${a.phase}”阶段人数统一为 ${a.expected} 人${a.trace?`(依据:${a.trace})`:""},删除其他口径数字。`}});for(let a of d)e.push({position:a.start,issue:{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`阶段名疑似拼接:正文“${a.excerpt.slice(0,60)}”中的阶段名“${a.phrase}”同时混含“${a.first.phase}”与“${a.second.phase}”两个蓝图阶段,人数 ${a.actual} 人无法归属`,suggestion:`将阶段名拆分表述:“${a.first.phase}”按 ${a.first.value} 人、“${a.second.phase}”按 ${a.second.value} 人(蓝图推导)分句列出,不得把两个阶段名连写成单一阶段。`}});return e.sort((a,b)=>a.position-b.position).slice(0,8).map(a=>a.issue)}function by(a,b){let c=[];if(0===b.length)return c;let d=/首批|第一批|首期|第一期/gu,e=/剩余|补充|追加/gu,f=/保持|维持|确保|不少于|不低于|控制在|以内|以下/u;for(let g of b){if(!g.name||!Number.isFinite(g.count)||g.count<=0)continue;let b=(0,i.Lp)(g.name),h=RegExp(`${b}[^\\n。;;、,,]{0,4}?([\\d,]+)\\s*(?:台|辆)`,"gu"),j=new Set,k=new Set,l="";for(let b of a.matchAll(/[^。;;\n]+/gu)){let c=b[0],g=b.index??0,i=[...c.matchAll(d)].map(a=>a.index??0),m=[...c.matchAll(e)].map(a=>a.index??0);if(0!==i.length||0!==m.length)for(let b of c.matchAll(h)){if(!b[1])continue;let c=Number(b[1].replace(/[,,]/gu,""));if(!Number.isFinite(c)||c<=0)continue;let d=b.index??0,e=g+d,h=a.lastIndexOf("\n",e)+1,n=a.indexOf("\n",e);-1===n&&(n=a.length);let o=a.slice(h,n);if(/^\s*\|.*\|\s*$/u.test(o)||aF.test(o))continue;let p=b[0];if(f.test(p)||/以内|以下|上限/u.test(a.slice(e+p.length,e+p.length+4)))continue;let q=i.filter(a=>a<d&&d-a<=40).pop(),r=m.filter(a=>a<d&&d-a<=40).pop();(void 0!==q||void 0!==r)&&(void 0!==r&&(void 0===q||r>q)?k.add(c):j.add(c),l||(l=a.slice(Math.max(h,e-20),Math.min(n,e+p.length)).trim()))}}if(0===j.size||0===k.size)continue;let m=[...j],n=[...k];if(!m.some(a=>n.some(b=>a+b===g.count))&&(c.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`机械设备分批台数矛盾:“${g.name}”分批投入(首批 ${m.join("/")} 台+剩余 ${n.join("/")} 台)各批组合之和均不等于蓝图机械汇总 ${g.count} 台${l?`(原文“${l.slice(0,50)}”)`:""}`,suggestion:`分批投入的台数之和必须等于蓝图机械汇总台数:将“${g.name}”各批次调整为首批与剩余合计 ${g.count} 台,或删除分批描述仅保留“${g.name} ${g.count} 台”汇总口径。`}),c.length>=5))break}return c}function bz(a,b){let c=[];if(!b||!Number.isFinite(b)||b<=0)return c;let d=/交底|考察|封样|编制|审批|报审|报批|培训|演练|签订|组建|建立|采购|调查|备案|申报|进场确认/u;for(let e of a.matchAll(/(?:开工令下发|开工令下达|下达开工令|开工|计划开工)[^。;;\n年月]{0,8}?(?:第\s*(\d+)\s*(?:个)?(?:日历)?日|(\d+)\s*(?:个)?(?:日历)?日)/gu)){let f=e[1]||e[2];if(!f||"内"===a.slice((e.index??0)+e[0].length,(e.index??0)+e[0].length+1))continue;let g=Number(f);if(!Number.isFinite(g)||g<=0||g<b)continue;let h=(e.index??0)+e[0].lastIndexOf(f),i=a.lastIndexOf("\n",h)+1,j=a.indexOf("\n",h);-1===j&&(j=a.length);let k=a.slice(i,j);if(/^\s*\|.*\|\s*$/u.test(k)||aF.test(k))continue;let l=a.slice(Math.max(i,h-40),Math.min(j,h+f.length+40));if(!d.test(l))continue;let m=a.slice(Math.max(i,h-30),Math.min(j,h+f.length+14)).trim();if(c.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`前期动作时限矛盾:正文“${m}”将前期准备动作时限设在开工后第 ${g} 日,已达到/超过总工期 ${b} 日(竣工日)——前期动作不可能安排在项目末期`,suggestion:`前期准备动作时限必须落在施工准备阶段内:将第 ${g} 日改为与施工准备阶段相匹配的早期天数(早于总工期 ${b} 日),或删除具体天数改述为“开工令下发后在施工准备阶段内完成”。`}),c.length>=5)break}return c}function bA(a){let b=a.split(/\r?\n/u),c=[];b.forEach((a,b)=>{let d=/^(#{3,4})\s+([^\n]+)$/u.exec(a.trim());d&&c.push({index:b,level:d[1].length,title:d[2].trim()})});let d=[];for(let a=0;a<c.length;a+=1){let{index:e,level:f,title:g}=c[a],h=g.replace(/^[\d.]+[\s\u00a0]*/u,"");if(!/工程\s*$/u.test(h))continue;let i=h.replace(/\s*工程\s*$/u,"");if(!i||!/[、与及]/u.test(i))continue;let j=i.split(/[、与及]/u).map(a=>a.trim()).filter(a=>a.length>=2);if(j.length<2)continue;let k=b.length;for(let b=a+1;b<c.length;b+=1)if(c[b].level<=f){k=c[b].index;break}let l=b.slice(e+1,k).join("\n"),m=l.replace(/[、,,]/gu,""),n=j.filter(a=>{if(l.includes(a))return!1;let b=a.replace(/[、,,]/gu,"").replace(/(?:安装|施工|工程|作业)$/u,"");return b.length>=2&&!m.includes(b)});0!==n.length&&d.push({lineIndex:e,level:f,title:g,parts:j,uncovered:n})}return d}},36003:(a,b,c)=>{c.d(b,{AI:()=>T,Ym:()=>I,eL:()=>q.eL,hZ:()=>D,nl:()=>Y,qX:()=>E,uQ:()=>U,w9:()=>A,xu:()=>q.xu});var d=c(76760),e=c(78217),f=c(70933),g=c(30836),h=c(40299),i=c(95734),j=c(22157),k=c(46482),l=c(71001),m=c(43378),n=c(52639),o=c(40693);c(22496);var p=c(30949),q=c(22213),r=c(91943),s=c(18274),t=c(76193),u=c(21702),v=c(41991),w=c(1358),x=c(3063),y=c(54185),z=c(80572);function A(a,b,c){let d=[...a.errors.map(a=>({level:"error",message:a,suggestion:"请补充配置或资料后重新生成。"})),...a.warnings.map(a=>({level:"warning",message:a,suggestion:"建议人工确认或补充对应资料。"}))];return c.some(a=>/资料未提供|系统暂未从知识库确认/u.test(a.content))&&d.push({level:"warning",message:"存在系统暂未从知识库确认的章节内容",suggestion:"请检查项目角色配置、文件绑定顺序和事实抽取落位结果。"}),b.conflicts.length>0&&d.push(...b.conflicts.map(a=>({level:"warning",message:a,suggestion:"请根据当前模板绑定的角色、文件证据和用户要求复核取值口径。"}))),d}let B=/\b\d+(?:\.\d+)?\s*(?:日历天|小时|分钟|天|周|月|年|万元|元|台|套|个|项|批|次|份|人)(?=[。,,;;::、\s]|$)/gu;function C(a){let b=new Set;for(let c of a){let a=(0,j.lG)(c.content).replace(/\s+/gu," ");if((!/报价明细|投标报价|单价|合价|综合单价|预留金|税率|增值税|利润|结算/u.test(a)||/合同估算价|合同估算价格|投资估算|最高投标限价|招标控制价/u.test(a))&&!/OCR|识别错误|乱码|无法确认|疑似|不确定|语义断裂/u.test(a)){for(let c of a.matchAll(s._W))b.add(c[0].trim());for(let c of a.matchAll(B))b.add(c[0].trim());if(b.size>=40)break}}return[...b].slice(0,40)}function D(a){let b=a.spec?.chapterRules.find(b=>b.id===a.chapter.id||b.title===a.chapter.title),c=(b?.requiredFactIds||[]).map(b=>a.spec?.factFields.find(a=>a.id===b)?.name).filter(Boolean),d=[...new Set([...a.chapter.requiredFacts,...c,...a.plan?.requiredContents||[],...a.plan?.evidenceNeeds||[],...(a.resolvedFactNeeds||[]).filter(a=>a.need.required).map(a=>a.need.label)].filter(Boolean))],e=a.roleFacts.map(({fact:a})=>`- ${a.key}:${(0,f.eE)((0,j.lG)(a.value))}`),g=(a.resolvedFactNeeds||[]).flatMap(a=>a.facts),h=a.indexedFacts||[],i=g.length>0?[]:h.map(a=>`- ${a.key||a.fieldName||"资料事实"}:${(0,f.eE)((0,j.lG)(a.value))}${a.sourceFile?`(来源:${a.sourceFile.split("/").pop()})`:""}`),k=[...g,...h].filter(a=>/建设地点|建设规模|招标范围|计划工期|合同工期|周期要求|质量标准|合同估算|投资估算|最高投标限价|招标控制价/u.test(`${a.key||""}${a.fieldName||""}${a.fieldId||""}`)).filter((a,b,c)=>c.findIndex(b=>`${b.key||b.fieldName}:${(0,j.lG)(b.value)}`==`${a.key||a.fieldName}:${(0,j.lG)(a.value)}`)===b),l=[...new Set([...C(a.evidence),...g.map(a=>(0,j.lG)(a.value)).filter(a=>s.sv.test(a)),...h.map(a=>(0,j.lG)(a.value)).filter(a=>s.sv.test(a))])],m=new Set([...a.evidence.map(a=>a.filePath),...g.map(a=>a.sourceFile),...(a.indexedFacts||[]).map(a=>a.sourceFile)]).size,n=(a.resolvedFactNeeds||[]).filter(a=>"satisfied"!==a.status&&a.need.required).map(a=>a.need.label),o=function(a){if(!a)return[];let b=[];for(let[c,d]of Object.entries(a)){if(d.length<2)continue;let a=d.filter((a,b,c)=>c.findIndex(b=>b.location===a.location&&b.spec===a.spec)===b);a.length<2||b.push(`- ${c}:${a.slice(0,8).map(a=>`${a.location}:${a.spec}`).join("|")}`)}return b.slice(0,12)}(a.specAuthorityMap);return["【本章事实覆盖与参数落位要求】",d.length?`必须优先覆盖的事实/要求:
105
105
  ${d.map(a=>`- ${a}`).join("\n")}`:"",e.length?`角色节点已抽取事实:
106
106
  ${e.join("\n")}`:"",k.length?`项目基础事实卡片(资料已明确,必须优先使用,不得输出任何占位话术;其中工程地点、建设规模、计划工期等总述数据只在项目概况/工程概况类章节集中交代,其他章节仅可引用所需的具体数字,不得复述完整概况段):
107
107
  ${k.map(a=>`- ${a.key||a.fieldName}:${(0,f.eE)((0,j.lG)(a.value))}${a.sourceFile?`(来源:${a.sourceFile.split("/").pop()})`:""}`).join("\n")}
@@ -196,7 +196,7 @@ ${a.content}`).join("\n\n"));let g=Date.now(),h=JSON.stringify({stages:a.map(a=>
196
196
  ${a.content}`).join("\n\n"):i.markdown,k=S(ac({...i,ownerPid:process.pid,ownerStartedAt:z,executionStages:a,checkpointChapters:b,partialChapters:f?.chapters?u(b):i.partialChapters,markdown:j,wordCount:j?(0,o.V7)(j):i.wordCount}),e),l=[...a].reverse().find(a=>"running"===a.status)||a[a.length-1];ad(e,{taskId:c,title:`生成 ${k.templateName||k.title}`,status:"processing",percent:Math.max(1,Math.min(99,l?.progress?Math.round(l.progress.current/Math.max(1,l.progress.total)*90):30)),message:l?.message||"文档生成中",stages:a});let m=h===C;if(B=g,C=h,console.log(`[gen] progress saved: ${a.length} stages, checkpoint=${b?.length||0}, doc=${d}`),m){let a=process.memoryUsage();console.log(`[gen] memory rss=${Math.round(a.rss/1048576)}MB heap=${Math.round(a.heapUsed/1048576)}MB doc=${d}`)}}}catch(a){console.error("[gen] progress save error:",a)}}})).then(async a=>{v.current&&(v.current.lastProgressAt=Date.now());let b=R(d,e);if(!b||"generating"!==b.status)return b??g;let f=/结构化事实读取不足|正文可能未显式覆盖|仅包含文件类型和占位符|不在本次招标范围内|知识库文件索引失败|暂无可检索内容切片|未抽取到结构化事实|兜底片段|资料抽取诊断|无法直接读取文本内容|占位符|缺乏详细的.*具体尺寸|需结合原文件进一步深化|章节生成存在兜底/u,i=a.markdown||"",l=/^##\s+(?!目录$)(?!附录)(?!第[一二三四五六七八九十百千万\d]+章\s+)/gmu.test(i),m=/(?:第?\d+页|P\.?\s*\d+)/iu.test(i),o=/施工方/u.test(i),p=a.validationIssues.filter(a=>"error"===a.level||"warning"===a.level).map(a=>a.suggestion?`${a.message}:${a.suggestion}`:a.message).filter(a=>!/^\s*[[{]/u.test(a)&&!/"status"\s*:/u.test(a)&&!f.test(a)).filter(a=>!/正文存在非正式章二级标题/u.test(a)||l).filter(a=>!/资料页码|文件页码|页码引用/u.test(a)||m).filter(a=>!/禁止内容|施工方/u.test(a)||o).filter(b=>!a.exportGate.passed||!/目录与正文不一致|表格分隔线位置不规范/u.test(b)),q=(0,j.yw)(a.markdown,a.chapters).filter(a=>"empty"===a.reason);if(q.length>0&&p.unshift(`小节内容补写未完成:仍有 ${q.length} 个空洞小节,请继续生成或补充资料后重试`),!a.exportGate.passed){let b=a.exportGate.blockingIssues||[],c=a.reviewMetadata?.suspensionChecklist??(0,k.aF)(b,a.chapters);p.unshift((0,k.Fy)(c))}let r=a.exportGate.passed?"completed":"failed",s=ac({...b,templateName:a.templateName,templateVersion:a.templateVersion??b.templateVersion,title:a.title,markdown:a.markdown,status:r,draft:a,executionStages:a.executionStages,partialChapters:a.partialChapters,checkpointChapters:a.chapters,reviewMetadata:a.reviewMetadata,promptProvenance:a.promptProvenance??b.promptProvenance,agentWorkflow:a.agentWorkflow,assets:a.assets||[],completedAt:Date.now(),warningIssues:p}),t=Y(s,e),u=S({...s,assets:t?[t,...(s.assets||[]).filter(a=>a.id!==t.id)]:s.assets},e);if("failed"!==r&&a.markdown){let b=(0,h.bsz)(a.markdown);(b.h3.length>0||b.h4.length>0)&&(0,h.Hpz)({documentId:d,templateId:u.templateId||n.templateId,h3:b.h3,h4:b.h4,createdAt:new Date().toISOString()})}return X(a.assets||[],d,e),ad(e,{taskId:c,title:`生成 ${u.title}`,status:"completed"===u.status?"success":"error",percent:100,message:"completed"===u.status?"文档生成完成,已通过导出门禁":`文档生成未通过导出门禁(宁缺毋假:带病文档不作为交付件),存在 ${p.length||1} 个阻断问题`,stages:a.executionStages,error:"completed"===u.status?void 0:p.join(";")}),u}).catch(a=>{let f=R(d,e);if(!f||"generating"!==f.status)return f??g;let h=a instanceof Error?a.message:String(a),i=a instanceof Error&&"用户中止"===a.message||q.signal.aborted?"aborted":f.checkpointChapters?.length||y?"warning":"failed",j=y||f.markdown||f.checkpointChapters?.map(a=>`# ${a.title}
197
197
 
198
198
  ${a.content}`).join("\n\n")||"",k=r(b||f.executionStages,h),l=S(ac({...f,title:"failed"===i?s(f):f.title&&"生成中"!==f.title?f.title:`${f.templateName||"文档"}生成未完成`,status:i,error:h,markdown:j,executionStages:k,completedAt:Date.now(),warningIssues:"warning"===i?[...f.warningIssues||[],h]:f.warningIssues}),e);return ad(e,{taskId:c,title:`生成 ${l.title}`,status:"warning"===i?"warning":"error",percent:100,message:h,stages:k,error:h}),l}).finally(()=>{w.delete(c),ag()}),G={id:c,documentId:d,templateId:n.templateId,projectRoot:e,status:"generating",controller:q,promise:F,startedAt:p,lastProgressAt:p};return v.current=G,w.set(c,G),{taskId:c,documentId:d,record:g}}function ai(a,b=(0,n.aY)()){let c=g.resolve(b),e=(0,m.computeProjectId)(c),f=Date.now(),i=a.resumeDocumentId?R(a.resumeDocumentId,c):null;if(i){let b=O(i.id),e=b?function(a,b){let c=R(a.documentId,b);return c&&"generating"===c.status?{taskId:a.id,documentId:a.documentId,record:c,queuePosition:void 0}:null}(b,c):null;if(e)return e;if(w.size>=ae())throw Error(`当前已有 ${w.size} 个文档生成任务在运行(上限 ${ae()}),请等待完成或中止后再运行`);let g=x.findIndex(a=>a.documentId===i.id);g>=0&&x.splice(g,1);let h=`task-${f}-${d.randomBytes(4).toString("hex")}`,j={...i,taskId:h,status:"generating",error:void 0,completedAt:void 0,interruptedAt:void 0,interruptionReason:void 0,abortedAt:void 0,abortedBy:void 0,abortedStage:void 0,ownerPid:process.pid,ownerStartedAt:z,executionStages:[{type:"validation",roleId:"resume-generation",status:"running",message:"已重新进入生成流程;仅复用通过当前工作流版本、项目、模板、需求和导出门禁校验的章节,其余章节重新生成"}],partialChapters:void 0,checkpointChapters:void 0,draft:void 0,warningIssues:void 0,updatedAt:f};return{...ah({taskId:h,documentId:i.id,resolvedProjectRoot:c,templateId:a.templateId,requirement:a.requirement,maxEvidencePerChapter:a.maxEvidencePerChapter,resumeDocumentId:a.resumeDocumentId,existing:i,initial:j,startMessage:"文档生成任务已进入后台队列"}),queuePosition:void 0}}let j=`doc-${f}-${d.randomBytes(4).toString("hex")}`,k=`task-${f}-${d.randomBytes(4).toString("hex")}`,l=(0,h.QJx)(a.templateId),o={id:j,taskId:k,ownerPid:process.pid,ownerStartedAt:z,templateId:a.templateId,templateName:l?.name,templateVersion:l?.version,title:"排队中",requirement:a.requirement||"",maxEvidencePerChapter:a.maxEvidencePerChapter,projectRoot:c,projectId:e,knowledgeBasePath:(0,n.NW)(c),markdown:"",status:"queued",assets:[],createdAt:f,updatedAt:f};x.push({taskId:k,documentId:j,templateId:a.templateId,projectRoot:c,requirement:a.requirement,maxEvidencePerChapter:a.maxEvidencePerChapter,enqueuedAt:f});let p=af(j)??1,q={...o,executionStages:[{type:"validation",roleId:"queue-wait",status:"running",message:`已加入生成队列(位次 ${p}):同模板前一任务完成或并发名额空闲后自动开始`}]};S(q,c),ad(c,{taskId:k,title:`生成 ${l?.name||"文档"}`,status:"processing",percent:1,message:`已加入生成队列(位次 ${p}),等待自动接续`,stages:q.executionStages}),ag();let r=O(j);return{taskId:k,documentId:j,record:R(j,c)||q,queuePosition:r?void 0:af(j)}}},51190:(a,b,c)=>{c.d(b,{nC:()=>j,A:()=>C,GZ:()=>D,qD:()=>E,mN:()=>s,KX:()=>y,UT:()=>r,pm:()=>A,Bf:()=>B});var d=c(73024),e=c(76760),f=c(1218),g=c(22157),h=c(48161),i=c(28366);let j=[{key:"project_name",label:"项目名称",aliases:["项目名称","工程名称","招标项目名称"],valueType:"text"},{key:"project_code",label:"项目编号",aliases:["项目编号","招标项目编号","工程编号"],valueType:"identifier"},{key:"owner",label:"招标人",aliases:["招标人","项目业主","建设单位","发包人","采购人"],valueType:"organization"},{key:"project_location",label:"建设地点",aliases:["建设地点","实施地点","服务地点","交付地点"],valueType:"location"},{key:"project_scale",label:"建设规模",aliases:["建设规模","工程规模","项目规模"],valueType:"scale"},{key:"schedule_requirement",label:"计划工期",aliases:["计划工期","合同工期","总工期","工期","实施周期","服务期限"],valueType:"duration"},{key:"quality_standard",label:"质量标准",aliases:["质量标准","质量目标","验收标准","服务标准"],valueType:"standard"},{key:"project_investment_estimate",label:"合同估算价",aliases:["合同估算价","合同估算价格","投资估算","估算价格","最高投标限价","招标控制价","预算金额"],valueType:"money"},{key:"labor_peak",label:"劳动力高峰人数",aliases:["劳动力高峰","高峰期劳动力","高峰人数","劳动力峰值","高峰期人数","劳动力配置"],valueType:"count"},{key:"assembly_rate",label:"装配率",aliases:["装配率","装配式建筑占比","装配式比例","装配式建筑面积占比"],valueType:"percentage"},{key:"foundation_support_form",label:"基坑支护形式",aliases:["基坑支护形式","基坑支护方式","支护形式","支护方式"],valueType:"text"},{key:"excavation_depth",label:"基坑开挖深度",aliases:["基坑开挖深度","基坑深度","开挖深度","基坑底标高","坑底标高","坡底线","坑底"],valueType:"text"},{key:"award_clause",label:"创优奖惩条款",aliases:["创优奖惩","优质优价","创优目标","奖惩条款","创优奖项"],valueType:"award"}],k=[{pattern:/土钉/u,form:"土钉墙"},{pattern:/锚杆|锚索/u,form:"锚杆支护"},{pattern:/喷锚/u,form:"喷锚支护"},{pattern:/放坡/u,form:"放坡开挖"},{pattern:/地下连续墙/u,form:"地下连续墙"},{pattern:/支护桩/u,form:"支护桩"}];function l(a){return/^(见|详见|参见|按|以).{0,30}(招标公告|招标文件|投标人须知|前附表|合同|附件|图纸|清单|约定|规定|执行)/u.test(a)||/见招标公告|见投标人须知前附表|详见|按.*执行/u.test(a)}function m(a,b){switch(b.valueType){case"duration":if(!/\d+(?:\.\d+)?\s*(?:日历天|天|个月|月|年)/u.test(a))return{rejected:!0,score:-80,reason:"缺少明确工期数值和时间单位"};if(/延误|逾期|违约|赔偿|罚款|处罚|扣除|扣留|切除/u.test(a))return{rejected:!0,score:-90,reason:"命中工期违约条款而非计划工期"};return{rejected:!1,score:45,reason:"包含明确工期数值和时间单位"};case"money":if(!/\d+(?:\.\d+)?\s*(?:万元|元|亿元)/u.test(a))return{rejected:!0,score:-80,reason:"缺少明确金额数值和单位"};if(/综合单价|税率|增值税|利润|报价明细/u.test(a))return{rejected:!0,score:-90,reason:"命中非目标商务明细"};return{rejected:!1,score:45,reason:"包含明确金额数值和单位"};case"standard":if(!/合格|优良|一次性验收|达到|满足|符合/u.test(a))return{rejected:!0,score:-70,reason:"不符合标准类字段表达"};if(/工期|投标|技术标准|有效期/u.test(a))return{rejected:!0,score:-90,reason:"标准字段包含其他字段或投标条款"};return{rejected:!1,score:40,reason:"符合标准类字段表达"};case"location":if(l(a))return{rejected:!1,score:-40,reason:"引用型地点弱值"};if(!/(省|市|区|县|镇|街道|路|园区|大道|巷|内|号)/u.test(a))return{rejected:!1,score:-10,reason:"地点具体性不足"};return{rejected:!1,score:35,reason:"包含具体地址特征"};case"organization":if(/监督管理部门|投标人|中标候选人|评标委员会/u.test(a))return{rejected:!0,score:-90,reason:"组织字段角色串位"};if(/(公司|集团|单位|委员会|机关|中心|局|院|所|政府|运营管理)/u.test(a))return{rejected:!1,score:35,reason:"包含组织名称特征"};return{rejected:!1,score:5,reason:"组织名称特征较弱"};case"identifier":if(!/^[A-Za-z0-9\-_.()()]+$/u.test(a))return{rejected:!0,score:-70,reason:"编号格式不合法"};if(/(?:㎡|m²|m2|m3|m³|平方米|米|万元|元|日历天|个月)/u.test(a))return{rejected:!0,score:-60,reason:"编号中混入量纲单位,疑似字段串位"};return{rejected:!1,score:35,reason:"符合编号格式"};case"scale":if(/\d+(?:\.\d+)?\s*(?:㎡|平方米|m²|米|m|层|栋|座|万元|元)/iu.test(a))return{rejected:!1,score:30,reason:"包含规模数值或单位"};return{rejected:!1,score:5,reason:"规模字段为文本描述"};case"count":if(!/\d+(?:\.\d+)?\s*人/u.test(a))return{rejected:!0,score:-80,reason:"缺少明确人数数值"};if(/面积|工期|金额|报价|万元/u.test(a))return{rejected:!0,score:-70,reason:"人数字段混入其他量纲"};return{rejected:!1,score:40,reason:"包含明确人数数值"};case"percentage":if(!/\d+(?:\.\d+)?\s*(?:%|%)/u.test(a))return{rejected:!0,score:-80,reason:"缺少百分比数值"};if(/工期|金额|报价/u.test(a))return{rejected:!0,score:-70,reason:"百分比字段混入其他量纲"};return{rejected:!1,score:40,reason:"包含百分比数值"};case"award":if(!/(?:杯|奖|万元|优质优价)/u.test(a))return{rejected:!0,score:-70,reason:"缺少奖项或奖惩金额特征"};if(/评标|保证金|报价明细|综合单价/u.test(a))return{rejected:!0,score:-90,reason:"奖项字段串入评标条款"};return{rejected:!1,score:40,reason:"包含奖项/奖惩金额特征"};default:if("project_name"===b.key){if(/存在部位|风险等级|管控措施|监测频次|闭环要求|序号|内容|范围|不适用/u.test(a))return{rejected:!0,score:-90,reason:"项目名称字段串位或表头噪声"};if(!/项目|工程|学院|宿舍|楼|校区|施工总承包/u.test(a))return{rejected:!0,score:-70,reason:"项目名称缺少工程名称特征"};return{rejected:!1,score:35,reason:"符合项目名称特征"}}if("foundation_support_form"===b.key){if(!(k.some(b=>b.pattern.test(a)||a.includes(b.form))||/支护|放坡|锚|桩|喷|开挖|护坡/u.test(a)))return{rejected:!0,score:-70,reason:"基坑支护形式缺少支护工艺特征"};if(/监测|监测频次|闭环/u.test(a))return{rejected:!0,score:-80,reason:"支护形式字段串入监测管控内容"};return{rejected:!1,score:30,reason:"包含支护工艺特征"}}if("excavation_depth"===b.key){if(!/\d+(?:\.\d+)?/u.test(a))return{rejected:!0,score:-70,reason:"基坑开挖深度缺少数值"};if(/监测|监测频次|闭环|验收|支护桩/u.test(a))return{rejected:!0,score:-80,reason:"开挖深度字段串入监测管控内容"};return{rejected:!1,score:30,reason:"包含开挖深度数值"}}return{rejected:!1,score:a.length>=2?10:-20,reason:"文本字段"}}}function n(a,b){let c=(0,f.de)(a.value),d=[],e=30,g=!1;(!c||c.length>260)&&(g=!0,e-=100,d.push("空值或过长")),/###|投标文件的编制|备选投标方案|投标将被否决|投标人提供|投标有效期|电子交易系统|公共资源交易监督管理部门|中标候选|评标委员会|实质性内容作出响应|招标人有权核查/u.test(c)&&(g=!0,e-=100,d.push("大段条款或 Markdown 噪声")),/(?<=[日天])\s*[0-9]+(?:\.[0-9]+)?(?=[\s]*(?:招标|建设|质量|合同|项目|工程|资金|投标|开标|评标|付款|工期|开工|计划|计价|现场|资质|标段|[0-9]{1,3}[.、.]|[,,。;;]|$))/u.test(c)&&(g=!0,e-=100,d.push("值尾部编号粘连,疑似 PDF 编号串行残留")),j.some(a=>a.key!==b.key&&a.aliases.some(a=>c.includes(a)))&&(e-=45,d.push("包含其他字段名,疑似字段串位")),l(c)&&(e-=35,d.push("引用型弱值"));let h=m(c,b);return e+=h.score,d.push(h.reason),h.rejected&&(g=!0),"evidence"===a.sourceType&&(e+=20,d.push("来源为证据原文")),a.sourceName&&/补疑|答疑|澄清|补充|更正|修改/u.test(a.sourceName)&&(e+=35,d.push("补疑/澄清类修正文件,权威最高")),a.sourceName&&/招标文件|招标公告|前附表|合同|需求书|正文/u.test(a.sourceName)&&(e+=15,d.push("来源文件可信")),"generated_markdown"===a.sourceType&&(e-=10),{...a,value:c,confidence:e,rejected:g,reasons:d}}let o=/坡底线|坑底标高|基坑底标高|开挖深度|基坑深度/u,p=RegExp(k.map(a=>a.pattern.source).join("|"),"u"),q=/(?:超过|大于|小于|不[大低小]于|不低于|及以上|及以下|以上|以下)/u;function r(a){let b=[],c=new Map,d=new Map;for(let b of a){let a=String(b.content||""),e=b.filePath||b.sectionTitle||"drawing_annotation";if(!("drawing"===b.processingType||/dwg|图纸|CAD/iu.test(`${b.filePath||""} ${b.sectionTitle||""}`))&&!/CAD 语义标注/u.test(a)||!o.test(a)&&!p.test(a))continue;let f=a.split(/\r?\n/u);for(let a=0;a<f.length;a+=1){let b=f[a].trim();if(b){if(o.test(b)&&!/坑底H/u.test(b)&&!q.test(b)){let d=a=>Number.isFinite(a)&&a>=1&&a<50,g=[...b.matchAll(/-?(\d+(?:\.\d{1,3})?)/gu)].filter(a=>{let c=a.index??0,d=b[c-1],e=b[c+a[0].length];return":"!==d&&":"!==e&&"#"!==e}).map(a=>Math.abs(Number(a[1]))).filter(d),h=g.length>0?Math.max(...g):NaN,i=!1;if(!Number.isFinite(h)&&a>0&&/^-?[\d.,]+\s*$/u.test(f[a-1].trim())){let b=Math.abs(Number(f[a-1].trim().replace(/,/gu,"")));d(b)&&(h=b,i=!0)}if(Number.isFinite(h)){let d=(i?`${f[a-1].trim()} ${b}`:b).replace(/[|]/gu," ").replace(/\s+/gu," ").trim().slice(0,48),g=`${e}:${h.toFixed(2)}`;c.has(g)||c.set(g,{value:h,context:d})}}if(p.test(b))for(let a of k.filter(a=>a.pattern.test(b)).map(a=>a.form))d.has(a)||d.set(a,{form:a,context:b.replace(/\s+/gu," ").slice(0,60)})}}}if(c.size>0){let a=Math.max(...[...c.values()].map(a=>a.value)),d=[...c.values()].map(a=>a.context).slice(0,3).join(";");b.push({key:"基坑开挖深度",fieldId:"excavation_depth",fieldName:"基坑开挖深度",value:`${a}m(图纸标注:${d})`,sourceFile:"图纸标注",roleId:"drawing",processingType:"drawing",confidence:90})}if(d.size>0){let a=[...d.values()],c=a.map(a=>a.context).slice(0,3).join(";");b.push({key:"基坑支护形式",fieldId:"foundation_support_form",fieldName:"基坑支护形式",value:`${a.map(a=>a.form).join("、")}(图纸标注:${c})`,sourceFile:"图纸标注",roleId:"drawing",processingType:"drawing",confidence:90})}return b}function s(a){return function(a,b=j){let c=new Map;for(let d of b){let b=a.filter(a=>a.fieldKey===d.key).sort((a,b)=>b.confidence-a.confidence),e=b.find(a=>!a.rejected&&a.confidence>0);e&&c.set(d.key,{fieldKey:d.key,label:d.label,value:e.value,source:e.sourceName||e.sourceType,confidence:e.confidence,candidates:b,selectedReason:e.reasons.join(";")})}return c}([...function(a){let b=[];for(let c of a){let a=function(a){let b=`${a.fieldId||""}${a.key||""}${a.fieldName||""}`;return j.find(c=>c.key===a.fieldId||c.aliases.some(a=>b.includes(a)))}(c);if(!a)continue;let d=(0,g.lG)(c.value);b.push(n({fieldKey:a.key,label:a.label,value:d,sourceType:"structured_fact",sourceName:c.sourceFile||c.sourceRef?.sectionTitle||"structured_fact"},a))}let c=j.find(a=>"excavation_depth"===a.key);if(c)for(let d of a){if("excavation_depth"===d.fieldId)continue;let a=(0,g.lG)(d.value),e=`${d.fieldId||""}${d.key||""}${d.fieldName||""} ${a}`;if(!/坡底线|坑底|电梯井|坑底标高/u.test(e))continue;let f=[...a.matchAll(/-?(\d+(?:\.\d{1,3})?)(?=[^0-9.]|$)/gu)].map(a=>Math.abs(Number(a[1]))).filter(a=>Number.isFinite(a)&&a>.5&&a<50);if(0===f.length)continue;let h=Math.max(...f);b.push(n({fieldKey:"excavation_depth",label:c.label,value:`${h}m(图纸标注:${a.slice(0,60)})`,sourceType:"structured_fact",sourceName:d.sourceFile||d.sourceRef?.sectionTitle||"drawing_annotation"},c))}return b}(a.facts),...function(a,b="generated_markdown"){let c=[];for(let d of a.split(/\r?\n/u)){if(!/^\|.*\|\s*$/u.test(d)||/^\|\s*:?-{3,}:?/u.test(d))continue;let a=d.trim().replace(/^\|/u,"").replace(/\|$/u,"").split("|").map(a=>a.replace(/\*\*/gu,"").trim());if(a.length<2)continue;let e="序号"===a[0]&&a.length>=3?a[1]:a[0],f="序号"===a[0]&&a.length>=3?a[2]:a[1],g="序号"===a[0]&&a.length>=4?a[3]:a[2],h=j.find(a=>a.aliases.some(a=>e.includes(a))||a.label===e);!h||!f||/内容|参数|资料未明确|系统暂未确认|暂未从知识库确认/u.test(f)||c.push(n({fieldKey:h.key,label:h.label,value:f,sourceType:"generated_markdown",sourceName:g||b},h))}return c}(a.markdown||"")])}function t(a){return({user:100,addendum:96,contract:90,tender:85,boq:75,drawing:70,standard:60,evidence:55,structured_fact:50,projectGraph:40,generated_markdown:30,derived:20,unknown:10})[a]}function u(a){let b=e.join(process.env.HOME||process.cwd(),".customize-agent","cache","document-workflow",(0,g.c6)(a||"default"));return d.mkdirSync(b,{recursive:!0}),b}let v=new Map;function w(a){let b=v.get(a);return b||(b=RegExp(a,"u"),v.set(a,b)),b}function x(a,b){let c=`${a||""} ${b||""}`;return/补疑|答疑|澄清|补充|更正|修改/u.test(c)?95:/合同/u.test(c)?90:/招标文件|招标公告|前附表|投标人须知|需求书/u.test(c)?85:/清单|工程量|BOQ|编制说明/u.test(c)?75:/图纸|设计/u.test(c)?70:50}function y(a,b=(0,i.bC)()){let c=[];for(let d of["area","cost","duration","floors","parkingSpaces"]){let e=new Set,f=[];for(let c of a){let a=(0,g.lG)(c.value),h=x(c.sourceFile,c.roleId);for(let g of function(a,b,c,d){let e=[],f="area"===b?/(?<![地上地下门卫室值班室配电室配电房泵房水泵房锅炉房公厕车库车棚岗亭传达室警卫室样板房售楼处门房])总?建筑面积|建设规模/u:"cost"===b?/合同估算价|合同估算价格|投资估算|最高投标限价|招标控制价|工程总投资|总投资|工程造价/u:"floors"===b?/总?层数|建筑层数|地上层数|地下层数|楼层数/u:"parkingSpaces"===b?/总?车位|停车位|机动车位|车位数/u:/计划工期|合同工期|总工期|施工周期/u,g="floors"===b||"parkingSpaces"===b?"\\d+(?:[.,]\\d+)?":"\\d{2,}(?:[.,]\\d+)?",h=RegExp(`(?:${f.source})(?:[^0-9\\n]{0,14}?)(${g})\\s*${"area"===b?"(万?㎡|万?m\xb2|万?m2|万?平方米)":"cost"===b?"(万元|亿元|万?元)":"floors"===b?"(层)":"parkingSpaces"===b?"(个|个车位|个停车位)":"(日历天|天|个月|月)"}`,"giu"),i=RegExp(g,"u");for(let g of a.matchAll(h)){let h,j=g[0].match(f),k=j?.[0]||"",l=g[1].replace(/[,,]/gu,"").trim(),m=(g[2]||"").trim();if(!k||!l||!i.test(l))continue;let n=(g.index??0)+(j?.index??0),o=(g.index??0)+g[0].indexOf(g[1]),p=o-(n+k.length),q=a.slice(n+k.length,o);if("area"===b&&/占地|用地/u.test(q))continue;let r=function(a,b,c,d,e,f){let g=a.slice(Math.max(0,b-10),b),h=a.slice(b+c,d),i=`${g}${h}`,{addendumSource:j,amendmentContext:k,thresholdComparison:l,aspirationalPrefix:m}=f.factGovernance;return w(j).test(e||"")&&w(k).test(i)?"amendment":w(l).test(i)?"threshold":w(m).test(g)?"aspirational":"ontological"}(a,n,k.length,o,c,d);if("threshold"!==r&&"aspirational"!==r){if("duration"===b||"floors"===b||"parkingSpaces"===b)h=`${l}|${m}`;else{let a=+!!/万/u.test(m),b=Number(l)*(a?1e4:1);if(!Number.isFinite(b))continue;h=String(/亿元/u.test(m)?1e8*b:/万元/u.test(m)?1e4*b:b)}e.push({scope:k,value:l,unit:m,compareKey:h,contextClass:r,anchorScore:(p<=3?3:p<=9?2:1)+("ontological"===r||"amendment"===r?2:1),gapLength:p})}}return e}(a,d,c.sourceFile,b)){let a=`${c.sourceFile||""}|${g.scope}|${g.compareKey}`;e.has(a)||(e.add(a),f.push({...g,sourceFile:c.sourceFile,priority:h}))}}if(!(f.length<2))for(let[a,e]of f.reduce((a,b)=>{let c=b.scope.replace(/^总/u,""),d=a.get(c)||[];return d.push(b),a.set(c,d),a},new Map)){let f;if(new Set(e.map(a=>a.compareKey)).size<2||new Set(e.map(a=>a.sourceFile).filter(Boolean)).size<2)continue;let g=Math.max(...e.map(a=>a.priority)),h=e.filter(a=>a.priority===g),i=Math.max(...h.map(a=>a.anchorScore)),j=h.filter(a=>a.anchorScore===i),k=1===new Set(j.map(a=>a.compareKey)).size?j[0]:void 0;if(k){let a=k.gapLength>b.factGovernance.weakAnchorGapThreshold;f="amendment"===k.contextClass?a?"medium":"high":a?"low":"medium"}c.push({kind:d,scope:`${a}(${"area"===d?"面积":"cost"===d?"金额":"floors"===d?"层数":"parkingSpaces"===d?"车位数":"工期"}口径)`,values:[...new Map(e.map(a=>[`${a.value}${a.unit}|${a.sourceFile||""}`,{value:a.value,unit:a.unit,sourceFile:a.sourceFile,priority:a.priority}])).values()],resolution:k?`${k.value}${k.unit}`:void 0,...f?{confidence:f}:{}})}}return c}function z(a){let b=new Map;for(let c of a){if(!c.resolution||"low"===c.confidence||b.has(c.kind))continue;let a=c.values.find(a=>`${a.value}${a.unit}`===c.resolution),d=a?a.value.replace(/[,,]/gu,""):"",e=c.values.filter(a=>`${a.value}${a.unit}`!==c.resolution).map(a=>({value:a.value.replace(/[,,]/gu,""),unit:a.unit}));d&&0!==e.length&&b.set(c.kind,{winnerNum:d,losers:e})}return b}function A(a,b){return b?.length?a.map(a=>{let c=function(a,b){let c=a;for(let{winnerNum:a,losers:d}of z(b).values())for(let b of d)b.unit&&c.includes(`${b.value}${b.unit}`)?c=c.split(`${b.value}${b.unit}`).join(`${a}${b.unit}`):c.includes(b.value)&&(c=c.split(b.value).join(a));return c}(a.content,b);return c===a.content?a:{...a,content:c}}):a}function B(a){let b=[];for(let c of a){if(!c.resolution)continue;let a=c.values.filter(a=>`${a.value}${a.unit}`!==c.resolution);if(0===a.length)continue;let d=a.map(a=>`${a.value}${a.unit}`).join("、");"high"===c.confidence?b.push(`${c.scope}必须统一为 ${c.resolution}(补疑/答疑/澄清类修正文件权威最高;${d} 已被修正,正文禁止出现)`):"medium"===c.confidence?b.push(`${c.scope}应统一为 ${c.resolution}(按资料来源优先级裁决;${d} 为败选值,正文避免使用)`):b.push(`${c.scope}参考口径为 ${c.resolution}(锚定较弱,请人工复核;${d} 不参与自动改写)`)}return b}function C(a,b){let c=z(b);if(0===c.size)return a;let d={area:/建设规模|工程规模|建筑面积|用地面积|占地面积|project_scale|scale/u,cost:/合同估算|投资估算|最高投标限价|招标控制价|总投资|工程造价|project_cost|cost|price|amount/u,duration:/计划工期|合同工期|总工期|施工周期|duration|schedule/u,floors:/总层数|建筑层数|地上层数|地下层数|楼层数|project_floors|floors/u,parkingSpaces:/总车位|停车位|机动车位|车位数|project_parking|parking/u};return a.map(a=>{let b=[...c.keys()].find(b=>d[b].test(a.key)||d[b].test(a.value));if(!b)return a;let{winnerNum:e,losers:f}=c.get(b),g=a.value,h=!1;for(let a of f)a.unit&&g.includes(`${a.value}${a.unit}`)?(g=g.split(`${a.value}${a.unit}`).join(`${e}${a.unit}`),h=!0):g.includes(a.value)&&(g=g.split(a.value).join(e),h=!0);return h?{...a,value:g}:a})}function D(a,b){if(a.length<=1)return a;let c=y(a,(0,i.bC)(b)),d=C(a,c),e=/项目名称|工程名称|招标人|建设单位|建设地点|质量标准|合同价格形式|绿色建筑等级|投标有效期|质保期|劳动力高峰|装配率|支护形式|创优奖惩|结构形式|总层数|建筑层数|建筑面积|建设规模|计划工期|合同工期|总工期/u,h=a=>e.test(`${a.key||""}${a.fieldName||""}${a.fieldId||""}`),j=a=>a.fieldId||a.key||a.fieldName||"",k=new Map;for(let a of d){if(!h(a))continue;let b=j(a),c=k.get(b);if(!c){k.set(b,a);continue}let d=a=>({priority:x(a.sourceFile,a.roleId),normalized:(0,f.de)((0,g.lG)(a.value))}),e=d(c),i=d(a);(i.priority>e.priority||i.priority===e.priority&&i.normalized!==e.normalized&&i.normalized.length<e.normalized.length)&&k.set(b,a)}if(0===k.size)return d;let l=new Set;for(let a of d)h(a)&&k.get(j(a))!==a&&l.add(a);return 0===l.size?d:d.filter(a=>!l.has(a))}function E(a){var b;let c=(0,g.c6)({version:"canonical-facts-v7",rulesHash:(0,i.TG)(a.projectRoot),requirement:a.requirement||"",templateId:a.templateId||"",requiredKeys:a.requiredKeys||[],facts:a.facts.map(a=>({key:a.key,fieldId:a.fieldId,fieldName:a.fieldName,value:a.value,sourceFile:a.sourceFile,roleId:a.roleId,confidence:a.confidence})).sort((a,b)=>`${a.sourceFile}${a.key}${a.value}`.localeCompare(`${b.sourceFile}${b.key}${b.value}`)),graphHash:a.projectGraph?(0,g.c6)(a.projectGraph):"",markdownHash:a.markdown?(0,g.c6)(a.markdown.slice(0,2e4)):""}),k=function(a,b){let c=u(a);if(c)try{let a=JSON.parse(d.readFileSync(e.join(c,`canonical-facts-${b}.json`),"utf8"));return a&&a.byKey&&Array.isArray(a.scopeConflicts)?a:void 0}catch{return}}(a.projectRoot,c);if(k)return k;let l=a.facts||[],n=y(l,(0,i.bC)(a.projectRoot));for(let a of n.map(a=>({caseType:"scope_conflict_arbitration",recordedAt:Date.now(),kind:a.kind,scope:a.scope,values:a.values.map(a=>({value:a.value,unit:a.unit,sourceFile:a.sourceFile,priority:a.priority})),winner:a.resolution,confidence:a.confidence,manualReviewRequired:!a.resolution})))try{d.appendFileSync(e.join(function(){let a=e.join(h.homedir(),".customize-agent","cache","document-workflow","case-log");return d.mkdirSync(a,{recursive:!0}),a}(),"arbitration-cases.jsonl"),`${JSON.stringify(a)}
199
- `,"utf-8")}catch{}let o=C(l,n),p=s({facts:o,markdown:a.markdown}),q={};for(let[a,b]of p.entries())q[a]=function(a){let b=a.source.includes("generated_markdown")?"generated_markdown":a.source.includes("evidence")?"evidence":"structured_fact";return{key:a.fieldKey,label:a.label,value:a.value,normalizedValue:(0,f.de)(a.value),sourceType:b,sourceFile:a.source,confidence:a.confidence,priority:t(b),locked:t(b)>=80,selectedReason:a.selectedReason}}(b);if(q.project_scale){let a=q.project_scale;if(/占地|用地/u.test(a.value)&&/建筑面积/u.test(a.value)){let b=a.value.search(/(?:单体)?总?建筑面积/u);if(b>0){let c=(0,f.wj)(a.value.slice(b)).trim();q.project_scale={...a,value:c,normalizedValue:(0,f.de)(c),selectedReason:`${a.selectedReason};混合口径已净化,scale 只取建筑面积段`}}}}let r=[];for(let a of[{key:"project_name",label:"项目名称",pattern:/项目名称|工程名称|招标项目名称|project_name/u,bucket:"projectIdentity",valueType:"text"},{key:"project_code",label:"项目编号",pattern:/项目编号|招标项目编号|project_code/u,bucket:"projectIdentity",valueType:"identifier"},{key:"owner",label:"招标人",pattern:/招标人|建设单位|发包人|owner/u,bucket:"projectIdentity",valueType:"organization"},{key:"project_location",label:"建设地点",pattern:/建设地点|实施地点|project_location/u,bucket:"projectIdentity",valueType:"location"},{key:"project_scale",label:"建设规模",pattern:/建设规模|工程规模|project_scale/u,bucket:"projectScope",valueType:"scale"},{key:"construction_scope",label:"施工范围",pattern:/施工范围|招标范围|工程范围/u,bucket:"projectScope",valueType:"text"},{key:"duration",label:"计划工期",pattern:/计划工期|合同工期|总工期|schedule_requirement|duration/u,bucket:"schedule",valueType:"duration"},{key:"quality_target",label:"质量目标",pattern:/质量标准|质量目标|quality_standard/u,bucket:"quality",valueType:"standard"}]){let b=function(a,b,c,d,e){let h=j.find(a=>a.key===b);return a.filter(a=>d.test(`${a.fieldId||""}${a.key||""}${a.fieldName||""}`)).map(a=>(function(a,b,c){let d=(0,g.lG)(a.value),e=function(a){let b=`${a.sourceFile||""} ${a.sourceRef?.sectionTitle||""} ${a.roleId||""}`;return/补疑|答疑|澄清|补充|更正|修改/u.test(b)?"addendum":/合同/u.test(b)?"contract":/招标|公告|前附表|需求书/u.test(b)?"tender":/清单|工程量|BOQ|报价/u.test(b)?"boq":/图纸|设计|CAD|DWG/u.test(b)?"drawing":/规范|标准/u.test(b)?"standard":"structured_fact"}(a);return{key:b,label:c,value:d,normalizedValue:(0,f.de)(d),sourceType:e,sourceFile:a.sourceFile,sourceRef:a.sourceRef?.sectionTitle,confidence:(()=>{let b=Number(a.confidence)||.5;return Math.round(100*("rule"===a.processingType&&b>1?.5:Math.min(b,.99)))})(),priority:t(e),locked:t(e)>=80,selectedReason:"按资料来源优先级和字段置信度决策"}})(a,b,c)).filter(a=>a.value&&!/资料未明确|系统暂未确认/u.test(a.value)).filter(a=>{let d=e??h?.valueType;return!d||"text"===d||!m(a.value,{key:b,label:c,aliases:[],valueType:d}).rejected}).sort((a,b)=>b.priority-a.priority||b.confidence-a.confidence||a.value.length-b.value.length)}(o,a.key,a.label,a.pattern,a.valueType);!q[a.key]&&b.length>0&&(q[a.key]=b[0]);let c=function(a,b,c){let d=[...new Map(c.map(a=>[a.normalizedValue,a])).values()];if(d.length<=1)return;let e=Math.max(...d.map(a=>a.priority)),f=d.filter(a=>a.priority===e);return{key:a,label:b,values:d.map(a=>({value:a.value,sourceFile:a.sourceFile,priority:a.priority,confidence:a.confidence})),decision:1===f.length?"highest_priority_selected":"manual_review_required"}}(a.key,a.label,b);c&&r.push(c)}let v=(b=a.projectGraph)?[...(b.resources||[]).map(a=>({key:`resource_${a.type}_${a.name}`,label:"equipment"===a.type?"机械设备":"labor"===a.type?"劳动力":"材料资源",value:[a.name,a.spec,a.quantity,a.unit].filter(Boolean).join(" "),normalizedValue:(0,f.de)([a.name,a.spec,a.quantity,a.unit].filter(Boolean).join(" ")),sourceType:"projectGraph",sourceFile:a.sourceFiles?.[0],confidence:55,priority:t("projectGraph"),locked:!1,selectedReason:"来自项目图谱资源节点"})).filter(a=>a.value),...(b.risks||[]).map(a=>({key:`risk_${a.risk}`,label:"风险源",value:[a.risk,a.level,a.mitigation].filter(Boolean).join(" "),normalizedValue:(0,f.de)([a.risk,a.level,a.mitigation].filter(Boolean).join(" ")),sourceType:"projectGraph",sourceFile:a.sourceFiles?.[0],confidence:55,priority:t("projectGraph"),locked:!1,selectedReason:"来自项目图谱风险节点"})).filter(a=>a.value)]:[],w=v.filter(a=>/resource_/u.test(a.key)),x=v.filter(a=>/risk_/u.test(a.key));for(let a of v)q[a.key]||(q[a.key]=a);let z=(a.requiredKeys||[]).filter(a=>!q[a]).map(a=>({key:a,label:j.find(b=>b.key===a)?.label||a,reason:"未从用户输入、招标资料、清单、图纸或项目图谱中确认该事实"})),A={projectIdentity:{projectName:q.project_name,projectCode:q.project_code,owner:q.owner,location:q.project_location},projectScope:{scale:q.project_scale,constructionScope:q.construction_scope},schedule:{duration:q.duration||q.schedule_requirement},quality:{target:q.quality_target||q.quality_standard},safety:{risks:x},resources:{resources:w},environment:{},constraints:{},byKey:q,conflicts:r,gaps:z,scopeConflicts:n},B=u(a.projectRoot);return B&&d.writeFileSync(e.join(B,`canonical-facts-${c}.json`),JSON.stringify(A,null,2)),A}},52639:(a,b,c)=>{c.d(b,{E1:()=>k,SD:()=>g,_C:()=>h,bh:()=>j,iJ:()=>l,nD:()=>i});var d=c(71001);let e="[☑√✔✓■●◼☒⊠]";function f(a,b){let c=b.exec(a);return c?(c[0]||"").trim():void 0}function g(a){let b=[...a.tenderTexts,a.requirement||""].filter(Boolean).join("\n").replace(/\\n/gu,"\n").replace(/\r/gu,""),c=[],g=function(a){let b=[];for(let c of a.matchAll(/施工组织设计\s*采用\s*[::]?/gu)){let d=c.index||0;b.push(a.slice(d,d+320))}return b}(b),h=g.length>0?g.join("\n"):b,i=RegExp(`${e}\\s*暗\\s*标`,"u").test(h),j=RegExp(`${e}\\s*明\\s*标`,"u").test(h),k=/暗标(?:评审项目)?的?编制要求/u.test(b),l="unknown";i?(l="blind",c.push(`标书类型勾选证据:${f(h,RegExp(`${e}\\s*暗\\s*标`,"u"))||"☑暗标"}`)):j?(l="open",c.push(`标书类型勾选证据:${f(h,RegExp(`${e}\\s*明\\s*标`,"u"))||"☑明标"}`)):k&&(l="blind",c.push("结构证据:识别到「暗标评审项目的编制要求」章节(招标文件为该标段设定暗标编制条款)"));let m=f(b,/正文内不允许[\s\S]{0,24}?出现非文字需要的其他任何符号和标志/u),n=f(b,/除(?:采用)?文字表述外可附下列图表|图表及格式要求附后/u),o=f(b,/不得有图片和扉页|不得有图片/u),p="blind"===l?"forbidden":"allowed",q="blind"===l?"forbidden":"allowed";"blind"===l&&(m&&c.push(`正文口径证据:${m}`),n&&c.push(`正文口径证据:${n}(正文=文字表述,图表=文末附表)`),o&&c.push(`图片口径证据:${o}`));let r=(0,d.eB)(b).titles.map(a=>{let b=a.replace(/^附表\s*/u,"").split(/\s+/u)[0]||"",c=a.replace(/^附表\s*[一二三四五六七八九十\d]{1,3}\s*/u,"").trim();return{no:b,title:a,.../施工设备表|机械设备表|施工机械.*设备/u.test(c)?{kind:"table",dataSource:"blueprint.equipment"}:/试验.*仪器|检测仪器|试验仪器|仪器设备表/u.test(c)?{kind:"table",dataSource:"blueprint.testInstruments"}:/劳动力/u.test(c)?{kind:"table",dataSource:"blueprint.labor"}:/临时用地/u.test(c)?{kind:"table",dataSource:"blueprint.tempLand"}:/网络图|进度图|横道图|开.*竣工/u.test(c)||/总平面/u.test(c)?{kind:"figure",dataSource:"manual"}:{kind:"table",dataSource:"manual"}}});r.length>0&&c.push(`文末附表清单 ${r.length} 项:${r.map(a=>a.title).join("、")}`);let s=/正文(?:部分)?(?:一律|均)?采用\s*(小?[一二三四五六七八九十]号)?\s*([\u4e00-\u9fffA-Za-z_]{2,10})/u.exec(b),t=/大标题用\s*([小]?[一二三四五六七八九十]号)\s*([\u4e00-\u9fffA-Za-z_]{2,10})/u.exec(b),u=/装订线\s*([\d.]+\s*[-~-—]\s*[\d.]+\s*cm|[\d.]+\s*cm)/u.exec(b),v=/行间距为固定值\s*(\d+)\s*磅/u.exec(b),w=/(?:总页数上限|页数上限)\s*[::]?\s*(\d+)|不得超过\s*(\d+)\s*页/u.exec(b),x={monoColor:!!/一律单黑色|全部单黑色|均单黑色/u.test(b)||void 0,cover:/不设内封(?:面)?/u.test(b)?"forbidden":void 0,headersFooters:/不需编制页眉、页脚|不编制页眉|不需要页眉|不需编制页眉/u.test(b)?"forbidden":void 0,bodyFont:s?.[2]?`${s[2]}${/GB2312/iu.test(b)?"(GB2312)":""}`:void 0,bodySize:s?.[1]||void 0,headingSize:t?.[1]||void 0,headingFont:t?.[2]||void 0,gutter:u?.[1]?.replace(/\s+/gu,"")||void 0,lineHeight:v?.[1]?`固定值${v[1]}磅`:void 0,pageLimit:w&&Number(w[1]||w[2])||void 0},y=/明示或暗示具体投标人|以往的施工业绩/u.test(b);y&&c.push("投标人身份禁语证据:任何部位、任何条文出现明示或暗示具体投标人的说明及标记(包括以往的施工业绩等)");let z=[];if("forbidden"===p&&(a.requiredTables||[]).length>0)for(let b of a.requiredTables||[]){let a=b.trim();if(!a)continue;let c=r.find(b=>(function(a,b){let c=a.replace(/^附表\s*[一二三四五六七八九十\d]{1,3}\s*/u,"").replace(/\s+/gu,"").replace(/表$/u,""),d=b.replace(/\s+/gu,"").replace(/表$/u,"");return!!c&&!!d&&(c.includes(d)||d.includes(c))})(b.title,a));z.push({rule:`提示词必需表格《${a}》`,source:"用户提示词",resolution:c?`招标暗标正文禁表:该表已收敛入文末《${c.title}》,正文不再输出表格`:"招标暗标正文禁表:该表取消表格形式,数据以对应章节文字表述呈现"})}return{bidType:l,bodyTablePolicy:p,bodyFigurePolicy:q,appendixPlan:r,formatRules:x,identityMarksForbidden:y,conflicts:z,evidence:c}}function h(a){return a?.bodyTablePolicy==="forbidden"}function i(a){return a&&"forbidden"===a.bodyTablePolicy?["【正文编制口径(招标文件暗标要求,硬性验收项)】","1. 正文一律纯文字表述:不得输出任何 Markdown 表格或管道符表格结构;不得插入图片、Markdown 图片语法或图件占位;不得出现与投标内容无关的文字、字符或标记。","2. 数据性内容以段落文字表述:人数、台数、工艺参数、计划节点等数值一律原样引用蓝图权威锚点,不得编造或自设。","3. 结构化数据表由系统在文末附表区按招标附表清单统一生成,正文不重复列出、不预告「详见附表」之外的指引性表格。",a.identityMarksForbidden?"4. 不得出现任何明示或暗示具体投标人的说明及标记(投标人名称、以往施工业绩、获奖情况等一律不得写入正文)。":""].filter(Boolean).join("\n"):""}function j(a,b){return`暗标正文禁表(招标编制要求,违反即施工组织设计部分不得分):本章正文出现 ${b} 处 Markdown 表格结构。请把每处表格的承载数据改写为段落式连贯叙述(数值、口径保持不变,数据原样保留),删除表格表头与分隔线结构;不得新增或删除其它正文内容。`}function k(a){return a?a.replace(/^\s*(?:\d+[.、]\s*)?必须输出以下正式\s*Markdown\s*表格[::][^\n]*\n?/gmu,""):a}function l(a){let b="blind"===a.bidType?"暗标":"open"===a.bidType?"明标":"未识别(按常规口径)",c=[`标书类型:${b}`,"blind"===a.bidType?"正文纯文字(禁表格/禁图片)":"open"===a.bidType?"正文可使用表格":"正文表格策略未启用特定限制",a.appendixPlan.length>0?`文末附表 ${a.appendixPlan.length} 项(表类 ${a.appendixPlan.filter(a=>"table"===a.kind).length} / 图类 ${a.appendixPlan.filter(a=>"figure"===a.kind).length})`:"未识别文末附表清单",a.formatRules.pageLimit?`总页数上限 ${a.formatRules.pageLimit} 页`:""].filter(Boolean),d=[...a.evidence.map(a=>`证据:${a}`),...a.appendixPlan.map(a=>`附表${a.no}:${a.title}(${"figure"===a.kind?"图类\xb7编制人补图":`数据源 ${a.dataSource}`})`),a.formatRules.gutter?`格式:装订线 ${a.formatRules.gutter}${a.formatRules.lineHeight?`、行距${a.formatRules.lineHeight}`:""}`:"",a.formatRules.bodyFont?`格式:正文 ${[a.formatRules.bodySize,a.formatRules.bodyFont].filter(Boolean).join(" ")}${a.formatRules.headingSize?`、大标题 ${a.formatRules.headingSize}`:""}`:"","forbidden"===a.formatRules.cover?"格式:不设内封面(终稿移除封面块)":"",a.formatRules.monoColor?"格式:图表一律单黑色":"",a.identityMarksForbidden?"身份禁语:正文不得出现投标人名称/以往业绩等标记":"",...a.conflicts.map(a=>`冲突裁决:${a.rule}——${a.resolution}`)].filter(Boolean);return{status:"unknown"===a.bidType?"skipped":"success",message:"unknown"===a.bidType?"标书编制规格:未识别到「本项目施工组织设计采用:□明标/☑暗标」标记,按常规口径生成(如为暗标请在招标文件中确认后重跑)":`标书编制规格:${c.join(";")}`,details:d}}},52922:(a,b,c)=>{c.d(b,{Bt:()=>r,G5:()=>x,JD:()=>H,Pm:()=>t,T4:()=>D,W0:()=>q,X9:()=>n,Ye:()=>k,bH:()=>K,cs:()=>o,gE:()=>y,ge:()=>w,nY:()=>M,w7:()=>p});var d=c(37047),e=c(41991);let f=["基本满足","大致符合","力争","原则上","大概","左右","尽可能","尽量满足"],g=/基本|大致|力争|原则上|大概|左右|尽可能|尽量/u,h=["基本满足招标文件要求","大致符合相关规范标准","力争达到优良质量标准","原则上按照规范执行","尽可能保证工程质量","尽量满足工期要求"],i=["结构构件左右对称布置","平面布置左右对称合理","力争上游的企业精神"];async function j(a){return(0,e.A)({prototypes:[...h],negativePrototypes:[...i],lexicalHints:g,embedDocuments:a})}function k(a){return f.filter(b=>a.includes(b)).map(b=>({phrase:b,count:a.split(b).length-1}))}let l=["精心组织、科学管理,确保工程质量","严格执行相关规范和设计要求","根据实际情况适当调整施工安排","建立健全管理体系,加强过程管理","全力保障项目顺利推进","加强管理、严格控制,确保工程质量达到优良标准","精心策划、周密部署,全力以赴完成任务目标","高度重视、狠抓落实,层层压实责任","统筹兼顾、合理安排,确保各项工作有序推进","严格管理、严格要求,确保一次成优","认真贯彻落实各项管理制度,不断提升管理水平","加强安全管理,杜绝各类安全事故发生","合理安排施工工序,确保工程按期完工","坚持质量第一、安全至上,认真做好各项工作"],m=/^\s*(?:第[一二三四五六七八九十百\d]+[章节篇]|\d+(?:\.\d+){0,3})\s+[^。;;,,]*$/u;function n(a){let b=a.trim();return!!(!b||/^\s*(#{1,6}\s+|\||[-*+]\s|>)/u.test(b))||m.test(b)}function o(a){return a.split("\n").filter(a=>!n(a)).flatMap(a=>a.split(/[。;;]/u)).map(a=>a.trim()).filter(a=>a.length>=12)}async function p(a,b){if(0===a.length)return[];let c=await (0,d.Mv)(a,[...l],b),e=await j(b),f=await e(a);return a.map((a,b)=>{let d=Math.max(...l.map(b=>c(a,b))),e=d>=.8,g=f[b];return{sentence:a,semantic:e,vague:g,filler:e||g,similarity:d}})}function q(a){let b=a.replace(/\s+/gu,"");return!(0===b.length||b.length>60||/[0-90-9]/u.test(b)||/项目经理|技术负责人|施工员|质检员|专职安全员|安全员|材料员|资料员|监理|班组|责任人|岗位/u.test(b)||/每日|每周|每月|每季|每年|每\d+|定期|不定期|不少于|不低于|至少/u.test(b)||/合同|约定|承诺|保证金|履约|招标|投标|中标|资质|奖项|证书|备案|报审|报验|审批|签证|变更/u.test(b))}async function r(a,b){let c=o(a),d=await p(c,b),e=c.filter(a=>g.test(a)).length,f=d.filter(a=>a.vague).length,h=d.map(a=>a.filler),i=h.filter(Boolean).length,j=[...new Set(c.filter((a,b)=>h[b]))].slice(0,40),k=c.length?i/c.length:0;return{totalSentences:c.length,fillerSentences:i,ratio:k,level:k>=.4?"heavy":k>=.2?"medium":"light",vagueCandidateSentences:e,vagueSemanticSentences:f,fillerSentenceDetails:j}}let s={plan:"制定专项施工方案与管理制度,明确技术措施",process:"施工工序流程与工艺步骤顺序",role:"由项目经理、技术负责人等岗位人员分工负责",frequency:"每日、每周等检查频次与时间节点安排",acceptance:"经检查验收合格后整改销项闭环"};async function t(a,b){let c=a.split(/\n{2,}/u).filter(a=>a.trim().length>=30),e=Object.values(s),f=await (0,d.Mv)(c,e,b),g=/项目经理|技术负责人|施工员|质检员|安全员|材料员|资料员|测量员|劳资员|班组长|监理工程师|试验员/u,h=/每日|每天|每周|每月|每季度|每批|不少于\s*\d+\s*次|至少\s*\d+\s*次|每周\s*\d+\s*次|每日\s*\d+\s*次|每\s*\d+\s*日/u,i=/整改|复查|销项|复验|闭环|返工/u,j=/专项施工方案|专项方案|施工方案|施工组织设计|技术措施|管理制度|技术交底|作业指导书|操作规程/u,k=/施工工序|工艺流程|施工流程|作业流程|施工顺序|施工步骤|工艺步骤|流水段|流水作业|依次施工|工序/u,l=(a,b)=>{let c=(b!==s.plan||!!j.test(a))&&(!!(b===s.plan&&j.test(a))||(b!==s.process||!!k.test(a))&&(!!(b===s.process&&k.test(a))||(b!==s.role||!!g.test(a))&&(!!(b===s.role&&g.test(a))||(b!==s.frequency||!!h.test(a))&&(!!(b===s.frequency&&h.test(a))||(b!==s.acceptance||!!i.test(a))&&(!!(b===s.acceptance&&i.test(a))||void 0)))));return void 0!==c?c:f(a,b)>=d.Eh},m=0,n=0,o=0;for(let a of c)e.filter(b=>l(a,b)).length>=4?m+=1:l(a,s.role)&&l(a,s.frequency)||(n+=1),l(a,s.role)&&l(a,s.frequency)&&l(a,s.acceptance)&&(o+=1);return{blocks:c.length,completeBlocks:m,incompleteBlocks:n,closedLoopBlocks:o}}let u="分析该工程难点的成因与风险来源",v=/\d+(?:\.\d+)?\s*(?:mm|cm|m|米|℃|%|kN|MPa|次|天|日历天|小时|h|Hz|m³|㎡|m²|t|吨|座|套|个)/u;function w(a){return a.trim().startsWith("|")?a.split(/\n/u).filter(a=>{let b=a.trim();return b.startsWith("|")&&!/^\|\s*-+\s*\|/u.test(b)&&!/重难点/u.test(b.split("|")[1]||"")}).filter(a=>a.trim().length>=20):a.split(/\n{2,}/u).filter(a=>a.trim().length>=20)}async function x(a,b){let c=await (0,d.Mv)(a,[u],b),e=0,f=0,g=0,h=[];for(let b of a){let a=c(b,u)>=d.Eh,i=v.test(b);a&&(e+=1),i&&(f+=1),a&&i&&(g+=1),h.push({text:b,attributed:a,quantified:i})}return{entries:a,attributed:e,quantified:f,bothCount:g,ratio:a.length?g/a.length:0,details:h}}async function y(a,b){let c=w(function(a){let b=a.match(/#{2,3}\s*[^\n]*(?:重难点|重点难点|工程难点|难点分析)[^\n]*\n/u);if(b&&void 0!==b.index){let c=b.index+b[0].length,d=a.slice(c),e=d.search(/^#{2,3}\s+/mu);return e>=0?d.slice(0,e):d}let c=a.match(/^\|?\s*[^\n]*重难点[^\n]*\|\s*$/mu);if(!c||void 0===c.index)return"";let d=a.slice(c.index).split(/\n/u),e=[];for(let a of d){let b=a.trim();if(!b||!b.startsWith("|")){if(e.length>0)break;continue}e.push(a)}return e.join("\n")}(a)),d=await x(c,b);return{countermeasures:c.length,attributed:d.attributed,quantified:d.quantified,bothCount:d.bothCount,ratio:d.ratio,heavyTemplated:c.length>0&&d.ratio<.5,entries:d.details.slice(0,24)}}let z=/建筑业10项新技术|10项新技术|安徽省住房城乡建设领域新技术推广目录|新技术推广目录|建设领域推广/u,A=/替代|取代|淘汰.{0,10}(?:工艺|技术|做法)|(?:较|比).{0,10}(?:传统|常规|普通)/u,B=/(?:提升|提高|节省|节约|降低|缩短|减少).{0,10}(?:效率|工期|成本|损耗|能耗|人工|周期)|升级价值|效益显著/u,C=["BIM","铝模","附着式升降脚手架","跳仓法","直螺纹","装配式","灌浆套筒","自动化监测","智慧工地","再生利用","非开挖","CCTV","碳纤维","薄贴法","干法施工","液压提升","预制","光伏一体化","BIPV","模块化"];function D(a){let b=C.filter(b=>a.includes(b)),c=z.test(a),d=A.test(a),e=B.test(a),f=[c,d,e].filter(Boolean).length;return{found:[...b],catalogCited:c,replaceClaimed:d,upgradeClaimed:e,effective:b.length>0&&f>=2}}let E=[/基坑|沟槽/u,/模板支撑|高支模/u,/脚手架|悬挑|附着式/u,/起重吊装|吊装/u,/幕墙/u,/人工挖孔桩/u,/装配式|钢结构安装/u,/拆除工程/u,/顶管|盾构|暗挖/u,/有限空间|水下作业/u,/吊篮/u,/塔吊|施工电梯|升降机/u,/沉井/u],F=/超危大|超规模|专家论证|一般危大/u,G=/(?:深度|高度|跨度|开挖).{0,8}\d+(?:\.\d+)?\s*(?:m|米)|(?:重量|吊装).{0,8}\d+(?:\.\d+)?\s*(?:kN|千牛)/u;function H(a){let b=E.filter(b=>b.test(a)).map(a=>a.source.replace(/\\u\w*|\\|\(|\||\)/gu,"")),c=F.test(a),d=G.test(a);return{categories:b,graded:c,paramMatched:d,twoStepComplete:b.length>0&&c&&d}}let I=[{name:"总则",pattern:/总则/u},{name:"组织机构及职责",pattern:/应急(?:组织|领导)|组织机构|应急指挥部|应急小组/u},{name:"风险分析与危险源辨识",pattern:/风险分析|危险源辨识|风险辨识/u},{name:"应急物资设备通讯保障",pattern:/应急物资|物资.{0,8}(?:保障|储备)|通讯保障|通信保障/u},{name:"专项应急预案",pattern:/专项应急预案|专项预案/u},{name:"应急响应流程",pattern:/应急响应|响应流程|响应程序/u},{name:"后期处置",pattern:/后期处置|善后|事故调查/u},{name:"培训演练",pattern:/(?:应急)?演练|培训.{0,6}演练/u}],J=["高处坠落","物体打击","坍塌","触电","火灾","起重","防汛","防台风","中暑","中毒窒息","管线破坏"];function K(a){let b=I.filter(b=>b.pattern.test(a)).map(a=>a.name),c=I.filter(b=>!b.pattern.test(a)).map(a=>a.name),d=J.filter(b=>a.includes(b));return{coveredParts:[...b],missingParts:[...c],coverage:b.length/I.length,planHits:[...d]}}let L=[/其他项目/u,/其他标段/u,/其他城市/u,/本公司(?:其他|承建)/u,/某(?:市|县|区|项目)(?:的)?/u,/他项目/u,/兄弟项目/u];function M(a){let b=a.replace(/及其他项目/gu,"及〔清单列举项〕");return L.filter(a=>a.test(b)).map(a=>a.source.replace(/\\u/gu,""))}},55807:(a,b,c)=>{c.d(b,{C_:()=>g.C_,DR:()=>h.DR,EG:()=>h.EG,EK:()=>h.EK,Fc:()=>g.Fc,G2:()=>h.G2,Ht:()=>g.Ht,Il:()=>h.Il,Iu:()=>d.Iu,M6:()=>h.M6,Mz:()=>d.Mz,NJ:()=>h.NJ,Oc:()=>e.Oc,QP:()=>d.xs,R_:()=>h.R_,UG:()=>d.UG,_8:()=>h._8,_k:()=>g._k,br:()=>e.br,bz:()=>h.bz,gq:()=>h.gq,h:()=>f.h,hS:()=>e.hS,hW:()=>d.hW,jO:()=>f.jO,jX:()=>d.jX,md:()=>h.md,t7:()=>d.t7,w_:()=>g.w_,xs:()=>f.xs});var d=c(64753),e=c(18292),f=c(87635),g=c(13145),h=c(39372)},55965:(a,b,c)=>{c.d(b,{hy:()=>m,kE:()=>j});var d=c(22157),e=c(95734);let f=new Map,g={"labor-peak":"项目劳动力峰值(人)","total-days":"项目总工期(日历天)","village-count":"项目自然村数量(个)",quantity:"工程量清单条目汇总工程量"},h=`你是施工组织设计文档的数值引用裁决器。任务:判断正文句中的数值是否「以该项目级数据的口径」陈述(项目级 = 全项目汇总/锁定口径)。
199
+ `,"utf-8")}catch{}let o=C(l,n),p=s({facts:o,markdown:a.markdown}),q={};for(let[a,b]of p.entries())q[a]=function(a){let b=a.source.includes("generated_markdown")?"generated_markdown":a.source.includes("evidence")?"evidence":"structured_fact";return{key:a.fieldKey,label:a.label,value:a.value,normalizedValue:(0,f.de)(a.value),sourceType:b,sourceFile:a.source,confidence:a.confidence,priority:t(b),locked:t(b)>=80,selectedReason:a.selectedReason}}(b);if(q.project_scale){let a=q.project_scale;if(/占地|用地/u.test(a.value)&&/建筑面积/u.test(a.value)){let b=a.value.search(/(?:单体)?总?建筑面积/u);if(b>0){let c=(0,f.wj)(a.value.slice(b)).trim();q.project_scale={...a,value:c,normalizedValue:(0,f.de)(c),selectedReason:`${a.selectedReason};混合口径已净化,scale 只取建筑面积段`}}}}let r=[];for(let a of[{key:"project_name",label:"项目名称",pattern:/项目名称|工程名称|招标项目名称|project_name/u,bucket:"projectIdentity",valueType:"text"},{key:"project_code",label:"项目编号",pattern:/项目编号|招标项目编号|project_code/u,bucket:"projectIdentity",valueType:"identifier"},{key:"owner",label:"招标人",pattern:/招标人|建设单位|发包人|owner/u,bucket:"projectIdentity",valueType:"organization"},{key:"project_location",label:"建设地点",pattern:/建设地点|实施地点|project_location/u,bucket:"projectIdentity",valueType:"location"},{key:"project_scale",label:"建设规模",pattern:/建设规模|工程规模|project_scale/u,bucket:"projectScope",valueType:"scale"},{key:"construction_scope",label:"施工范围",pattern:/施工范围|招标范围|工程范围/u,bucket:"projectScope",valueType:"text"},{key:"duration",label:"计划工期",pattern:/计划工期|合同工期|总工期|schedule_requirement|duration/u,bucket:"schedule",valueType:"duration"},{key:"quality_target",label:"质量目标",pattern:/质量标准|质量目标|quality_standard/u,bucket:"quality",valueType:"standard"}]){let b=function(a,b,c,d,e){let h=j.find(a=>a.key===b);return a.filter(a=>d.test(`${a.fieldId||""}${a.key||""}${a.fieldName||""}`)).map(a=>(function(a,b,c){let d=(0,g.lG)(a.value),e=function(a){let b=`${a.sourceFile||""} ${a.sourceRef?.sectionTitle||""} ${a.roleId||""}`;return/补疑|答疑|澄清|补充|更正|修改/u.test(b)?"addendum":/合同/u.test(b)?"contract":/招标|公告|前附表|需求书/u.test(b)?"tender":/清单|工程量|BOQ|报价/u.test(b)?"boq":/图纸|设计|CAD|DWG/u.test(b)?"drawing":/规范|标准/u.test(b)?"standard":"structured_fact"}(a);return{key:b,label:c,value:d,normalizedValue:(0,f.de)(d),sourceType:e,sourceFile:a.sourceFile,sourceRef:a.sourceRef?.sectionTitle,confidence:(()=>{let b=Number(a.confidence)||.5;return Math.round(100*("rule"===a.processingType&&b>1?.5:Math.min(b,.99)))})(),priority:t(e),locked:t(e)>=80,selectedReason:"按资料来源优先级和字段置信度决策"}})(a,b,c)).filter(a=>a.value&&!/资料未明确|系统暂未确认/u.test(a.value)).filter(a=>{let d=e??h?.valueType;return!d||"text"===d||!m(a.value,{key:b,label:c,aliases:[],valueType:d}).rejected}).sort((a,b)=>b.priority-a.priority||b.confidence-a.confidence||a.value.length-b.value.length)}(o,a.key,a.label,a.pattern,a.valueType);!q[a.key]&&b.length>0&&(q[a.key]=b[0]);let c=function(a,b,c){let d=[...new Map(c.map(a=>[a.normalizedValue,a])).values()];if(d.length<=1)return;let e=Math.max(...d.map(a=>a.priority)),f=d.filter(a=>a.priority===e);return{key:a,label:b,values:d.map(a=>({value:a.value,sourceFile:a.sourceFile,priority:a.priority,confidence:a.confidence})),decision:1===f.length?"highest_priority_selected":"manual_review_required"}}(a.key,a.label,b);c&&r.push(c)}let v=(b=a.projectGraph)?[...(b.resources||[]).map(a=>({key:`resource_${a.type}_${a.name}`,label:"equipment"===a.type?"机械设备":"labor"===a.type?"劳动力":"材料资源",value:[a.name,a.spec,a.quantity,a.unit].filter(Boolean).join(" "),normalizedValue:(0,f.de)([a.name,a.spec,a.quantity,a.unit].filter(Boolean).join(" ")),sourceType:"projectGraph",sourceFile:a.sourceFiles?.[0],confidence:55,priority:t("projectGraph"),locked:!1,selectedReason:"来自项目图谱资源节点"})).filter(a=>a.value),...(b.risks||[]).map(a=>({key:`risk_${a.risk}`,label:"风险源",value:[a.risk,a.level,a.mitigation].filter(Boolean).join(" "),normalizedValue:(0,f.de)([a.risk,a.level,a.mitigation].filter(Boolean).join(" ")),sourceType:"projectGraph",sourceFile:a.sourceFiles?.[0],confidence:55,priority:t("projectGraph"),locked:!1,selectedReason:"来自项目图谱风险节点"})).filter(a=>a.value)]:[],w=v.filter(a=>/resource_/u.test(a.key)),x=v.filter(a=>/risk_/u.test(a.key));for(let a of v)q[a.key]||(q[a.key]=a);let z=(a.requiredKeys||[]).filter(a=>!q[a]).map(a=>({key:a,label:j.find(b=>b.key===a)?.label||a,reason:"未从用户输入、招标资料、清单、图纸或项目图谱中确认该事实"})),A={projectIdentity:{projectName:q.project_name,projectCode:q.project_code,owner:q.owner,location:q.project_location},projectScope:{scale:q.project_scale,constructionScope:q.construction_scope},schedule:{duration:q.duration||q.schedule_requirement},quality:{target:q.quality_target||q.quality_standard},safety:{risks:x},resources:{resources:w},environment:{},constraints:{},byKey:q,conflicts:r,gaps:z,scopeConflicts:n},B=u(a.projectRoot);return B&&d.writeFileSync(e.join(B,`canonical-facts-${c}.json`),JSON.stringify(A,null,2)),A}},52639:(a,b,c)=>{c.d(b,{E1:()=>k,SD:()=>g,_C:()=>h,bh:()=>j,iJ:()=>l,nD:()=>i});var d=c(71001);let e="[☑√✔✓■●◼☒⊠]";function f(a,b){let c=b.exec(a);return c?(c[0]||"").trim():void 0}function g(a){let b=[...a.tenderTexts,a.requirement||""].filter(Boolean).join("\n").replace(/\\n/gu,"\n").replace(/\r/gu,""),c=[],g=function(a){let b=[];for(let c of a.matchAll(/施工组织设计\s*采用\s*[::]?/gu)){let d=c.index||0;b.push(a.slice(d,d+320))}return b}(b),h=g.length>0?g.join("\n"):b,i=RegExp(`${e}\\s*暗\\s*标`,"u").test(h),j=RegExp(`${e}\\s*明\\s*标`,"u").test(h),k=/暗标(?:评审项目)?的?编制要求/u.test(b),l="unknown";i?(l="blind",c.push(`标书类型勾选证据:${f(h,RegExp(`${e}\\s*暗\\s*标`,"u"))||"☑暗标"}`)):j?(l="open",c.push(`标书类型勾选证据:${f(h,RegExp(`${e}\\s*明\\s*标`,"u"))||"☑明标"}`)):k&&(l="blind",c.push("结构证据:识别到「暗标评审项目的编制要求」章节(招标文件为该标段设定暗标编制条款)"));let m=f(b,/正文内不允许[\s\S]{0,24}?出现非文字需要的其他任何符号和标志/u),n=f(b,/除(?:采用)?文字表述外可附下列图表|图表及格式要求附后/u),o=f(b,/不得有图片和扉页|不得有图片/u),p="blind"===l?"forbidden":"allowed",q="blind"===l?"forbidden":"allowed";"blind"===l&&(m&&c.push(`正文口径证据:${m}`),n&&c.push(`正文口径证据:${n}(正文=文字表述,图表=文末附表)`),o&&c.push(`图片口径证据:${o}`));let r=(0,d.eB)(b).titles.map(a=>{let b=a.replace(/^附表\s*/u,"").split(/\s+/u)[0]||"",c=a.replace(/^附表\s*[一二三四五六七八九十\d]{1,3}\s*/u,"").trim();return{no:b,title:a,.../施工设备表|机械设备表|施工机械.*设备/u.test(c)?{kind:"table",dataSource:"blueprint.equipment"}:/试验.*仪器|检测仪器|试验仪器|仪器设备表/u.test(c)?{kind:"table",dataSource:"blueprint.testInstruments"}:/劳动力/u.test(c)?{kind:"table",dataSource:"blueprint.labor"}:/临时用地/u.test(c)?{kind:"table",dataSource:"blueprint.tempLand"}:/网络图|进度图|横道图|开.*竣工/u.test(c)||/总平面/u.test(c)?{kind:"figure",dataSource:"manual"}:{kind:"table",dataSource:"manual"}}});r.length>0&&c.push(`文末附表清单 ${r.length} 项:${r.map(a=>a.title).join("、")}`);let s=/正文(?:部分)?(?:一律|均)?采用\s*(小?[一二三四五六七八九十]号)?\s*([\u4e00-\u9fffA-Za-z_]{2,10})/u.exec(b),t=/大标题用\s*([小]?[一二三四五六七八九十]号)\s*([\u4e00-\u9fffA-Za-z_]{2,10})/u.exec(b),u=/装订线\s*([\d.]+\s*[-~-—]\s*[\d.]+\s*cm|[\d.]+\s*cm)/u.exec(b),v=/行间距为固定值\s*(\d+)\s*磅/u.exec(b),w=/(?:总页数上限|页数上限)\s*[::]?\s*(\d+)|不得超过\s*(\d+)\s*页/u.exec(b),x={monoColor:!!/一律单黑色|全部单黑色|均单黑色/u.test(b)||void 0,cover:/不设内封(?:面)?/u.test(b)?"forbidden":void 0,headersFooters:/不需编制页眉、页脚|不编制页眉|不需要页眉|不需编制页眉/u.test(b)?"forbidden":void 0,bodyFont:s?.[2]?`${s[2]}${/GB2312/iu.test(b)?"(GB2312)":""}`:void 0,bodySize:s?.[1]||void 0,headingSize:t?.[1]||void 0,headingFont:t?.[2]||void 0,gutter:u?.[1]?.replace(/\s+/gu,"")||void 0,lineHeight:v?.[1]?`固定值${v[1]}磅`:void 0,pageLimit:w&&Number(w[1]||w[2])||void 0},y=/明示或暗示具体投标人|以往的施工业绩/u.test(b);y&&c.push("投标人身份禁语证据:任何部位、任何条文出现明示或暗示具体投标人的说明及标记(包括以往的施工业绩等)");let z=[];if("forbidden"===p&&(a.requiredTables||[]).length>0)for(let b of a.requiredTables||[]){let a=b.trim();if(!a)continue;let c=r.find(b=>(function(a,b){let c=a.replace(/^附表\s*[一二三四五六七八九十\d]{1,3}\s*/u,"").replace(/\s+/gu,"").replace(/表$/u,""),d=b.replace(/\s+/gu,"").replace(/表$/u,"");return!!c&&!!d&&(c.includes(d)||d.includes(c))})(b.title,a));z.push({rule:`提示词必需表格《${a}》`,source:"用户提示词",resolution:c?`招标暗标正文禁表:该表已收敛入文末《${c.title}》,正文不再输出表格`:"招标暗标正文禁表:该表取消表格形式,数据以对应章节文字表述呈现"})}return{bidType:l,bodyTablePolicy:p,bodyFigurePolicy:q,appendixPlan:r,formatRules:x,identityMarksForbidden:y,conflicts:z,evidence:c}}function h(a){return a?.bodyTablePolicy==="forbidden"}function i(a){return a&&"forbidden"===a.bodyTablePolicy?["【正文编制口径(招标文件暗标要求,硬性验收项)】","1. 正文一律纯文字表述:不得输出任何 Markdown 表格或管道符表格结构;不得插入图片、Markdown 图片语法或图件占位;不得出现与投标内容无关的文字、字符或标记。","2. 数据性内容以段落文字表述:人数、台数、工艺参数、计划节点等数值一律原样引用蓝图权威锚点,不得编造或自设。","3. 结构化数据表由系统在文末附表区按招标附表清单统一生成,正文不重复列出、不预告「详见附表」之外的指引性表格。",a.identityMarksForbidden?"4. 不得出现任何明示或暗示具体投标人的说明及标记(投标人名称、以往施工业绩、获奖情况等一律不得写入正文)。":""].filter(Boolean).join("\n"):""}function j(a){return`暗标正文禁表(招标编制要求,违反即施工组织设计部分不得分):本章正文出现 ${a} 处 Markdown 表格结构。请把每处表格的承载数据改写为段落式连贯叙述(数值、口径保持不变,数据原样保留),删除表格表头与分隔线结构;不得新增或删除其它正文内容。`}function k(a){return a?a.replace(/^\s*(?:\d+[.、]\s*)?必须输出以下正式\s*Markdown\s*表格[::][^\n]*\n?/gmu,""):a}function l(a){let b="blind"===a.bidType?"暗标":"open"===a.bidType?"明标":"未识别(按常规口径)",c=[`标书类型:${b}`,"blind"===a.bidType?"正文纯文字(禁表格/禁图片)":"open"===a.bidType?"正文可使用表格":"正文表格策略未启用特定限制",a.appendixPlan.length>0?`文末附表 ${a.appendixPlan.length} 项(表类 ${a.appendixPlan.filter(a=>"table"===a.kind).length} / 图类 ${a.appendixPlan.filter(a=>"figure"===a.kind).length})`:"未识别文末附表清单",a.formatRules.pageLimit?`总页数上限 ${a.formatRules.pageLimit} 页`:""].filter(Boolean),d=[...a.evidence.map(a=>`证据:${a}`),...a.appendixPlan.map(a=>`附表${a.no}:${a.title}(${"figure"===a.kind?"图类\xb7编制人补图":`数据源 ${a.dataSource}`})`),a.formatRules.gutter?`格式:装订线 ${a.formatRules.gutter}${a.formatRules.lineHeight?`、行距${a.formatRules.lineHeight}`:""}`:"",a.formatRules.bodyFont?`格式:正文 ${[a.formatRules.bodySize,a.formatRules.bodyFont].filter(Boolean).join(" ")}${a.formatRules.headingSize?`、大标题 ${a.formatRules.headingSize}`:""}`:"","forbidden"===a.formatRules.cover?"格式:不设内封面(终稿移除封面块)":"",a.formatRules.monoColor?"格式:图表一律单黑色":"",a.identityMarksForbidden?"身份禁语:正文不得出现投标人名称/以往业绩等标记":"",...a.conflicts.map(a=>`冲突裁决:${a.rule}——${a.resolution}`)].filter(Boolean);return{status:"unknown"===a.bidType?"skipped":"success",message:"unknown"===a.bidType?"标书编制规格:未识别到「本项目施工组织设计采用:□明标/☑暗标」标记,按常规口径生成(如为暗标请在招标文件中确认后重跑)":`标书编制规格:${c.join(";")}`,details:d}}},52922:(a,b,c)=>{c.d(b,{Bt:()=>r,G5:()=>x,JD:()=>H,Pm:()=>t,T4:()=>D,W0:()=>q,X9:()=>n,Ye:()=>k,bH:()=>K,cs:()=>o,gE:()=>y,ge:()=>w,nY:()=>M,w7:()=>p});var d=c(37047),e=c(41991);let f=["基本满足","大致符合","力争","原则上","大概","左右","尽可能","尽量满足"],g=/基本|大致|力争|原则上|大概|左右|尽可能|尽量/u,h=["基本满足招标文件要求","大致符合相关规范标准","力争达到优良质量标准","原则上按照规范执行","尽可能保证工程质量","尽量满足工期要求"],i=["结构构件左右对称布置","平面布置左右对称合理","力争上游的企业精神"];async function j(a){return(0,e.A)({prototypes:[...h],negativePrototypes:[...i],lexicalHints:g,embedDocuments:a})}function k(a){return f.filter(b=>a.includes(b)).map(b=>({phrase:b,count:a.split(b).length-1}))}let l=["精心组织、科学管理,确保工程质量","严格执行相关规范和设计要求","根据实际情况适当调整施工安排","建立健全管理体系,加强过程管理","全力保障项目顺利推进","加强管理、严格控制,确保工程质量达到优良标准","精心策划、周密部署,全力以赴完成任务目标","高度重视、狠抓落实,层层压实责任","统筹兼顾、合理安排,确保各项工作有序推进","严格管理、严格要求,确保一次成优","认真贯彻落实各项管理制度,不断提升管理水平","加强安全管理,杜绝各类安全事故发生","合理安排施工工序,确保工程按期完工","坚持质量第一、安全至上,认真做好各项工作"],m=/^\s*(?:第[一二三四五六七八九十百\d]+[章节篇]|\d+(?:\.\d+){0,3})\s+[^。;;,,]*$/u;function n(a){let b=a.trim();return!!(!b||/^\s*(#{1,6}\s+|\||[-*+]\s|>)/u.test(b))||m.test(b)}function o(a){return a.split("\n").filter(a=>!n(a)).flatMap(a=>a.split(/[。;;]/u)).map(a=>a.trim()).filter(a=>a.length>=12)}async function p(a,b){if(0===a.length)return[];let c=await (0,d.Mv)(a,[...l],b),e=await j(b),f=await e(a);return a.map((a,b)=>{let d=Math.max(...l.map(b=>c(a,b))),e=d>=.8,g=f[b];return{sentence:a,semantic:e,vague:g,filler:e||g,similarity:d}})}function q(a){let b=a.replace(/\s+/gu,"");return!(0===b.length||b.length>60||/[0-90-9]/u.test(b)||/项目经理|技术负责人|施工员|质检员|专职安全员|安全员|材料员|资料员|监理|班组|责任人|岗位/u.test(b)||/每日|每周|每月|每季|每年|每\d+|定期|不定期|不少于|不低于|至少/u.test(b)||/合同|约定|承诺|保证金|履约|招标|投标|中标|资质|奖项|证书|备案|报审|报验|审批|签证|变更/u.test(b))}async function r(a,b){let c=o(a),d=await p(c,b),e=c.filter(a=>g.test(a)).length,f=d.filter(a=>a.vague).length,h=d.map(a=>a.filler),i=h.filter(Boolean).length,j=[...new Set(c.filter((a,b)=>h[b]))].slice(0,40),k=c.length?i/c.length:0;return{totalSentences:c.length,fillerSentences:i,ratio:k,level:k>=.4?"heavy":k>=.2?"medium":"light",vagueCandidateSentences:e,vagueSemanticSentences:f,fillerSentenceDetails:j}}let s={plan:"制定专项施工方案与管理制度,明确技术措施",process:"施工工序流程与工艺步骤顺序",role:"由项目经理、技术负责人等岗位人员分工负责",frequency:"每日、每周等检查频次与时间节点安排",acceptance:"经检查验收合格后整改销项闭环"};async function t(a,b){let c=a.split(/\n{2,}/u).filter(a=>a.trim().length>=30),e=Object.values(s),f=await (0,d.Mv)(c,e,b),g=/项目经理|技术负责人|施工员|质检员|安全员|材料员|资料员|测量员|劳资员|班组长|监理工程师|试验员/u,h=/每日|每天|每周|每月|每季度|每批|不少于\s*\d+\s*次|至少\s*\d+\s*次|每周\s*\d+\s*次|每日\s*\d+\s*次|每\s*\d+\s*日/u,i=/整改|复查|销项|复验|闭环|返工/u,j=/专项施工方案|专项方案|施工方案|施工组织设计|技术措施|管理制度|技术交底|作业指导书|操作规程/u,k=/施工工序|工艺流程|施工流程|作业流程|施工顺序|施工步骤|工艺步骤|流水段|流水作业|依次施工|工序/u,l=(a,b)=>{let c=(b!==s.plan||!!j.test(a))&&(!!(b===s.plan&&j.test(a))||(b!==s.process||!!k.test(a))&&(!!(b===s.process&&k.test(a))||(b!==s.role||!!g.test(a))&&(!!(b===s.role&&g.test(a))||(b!==s.frequency||!!h.test(a))&&(!!(b===s.frequency&&h.test(a))||(b!==s.acceptance||!!i.test(a))&&(!!(b===s.acceptance&&i.test(a))||void 0)))));return void 0!==c?c:f(a,b)>=d.Eh},m=0,n=0,o=0;for(let a of c)e.filter(b=>l(a,b)).length>=4?m+=1:l(a,s.role)&&l(a,s.frequency)||(n+=1),l(a,s.role)&&l(a,s.frequency)&&l(a,s.acceptance)&&(o+=1);return{blocks:c.length,completeBlocks:m,incompleteBlocks:n,closedLoopBlocks:o}}let u="分析该工程难点的成因与风险来源",v=/\d+(?:\.\d+)?\s*(?:mm|cm|m|米|℃|%|kN|MPa|次|天|日历天|小时|h|Hz|m³|㎡|m²|t|吨|座|套|个)/u;function w(a){return a.trim().startsWith("|")?a.split(/\n/u).filter(a=>{let b=a.trim();return b.startsWith("|")&&!/^\|\s*-+\s*\|/u.test(b)&&!/重难点/u.test(b.split("|")[1]||"")}).filter(a=>a.trim().length>=20):a.split(/\n{2,}/u).filter(a=>a.trim().length>=20)}async function x(a,b){let c=await (0,d.Mv)(a,[u],b),e=0,f=0,g=0,h=[];for(let b of a){let a=c(b,u)>=d.Eh,i=v.test(b);a&&(e+=1),i&&(f+=1),a&&i&&(g+=1),h.push({text:b,attributed:a,quantified:i})}return{entries:a,attributed:e,quantified:f,bothCount:g,ratio:a.length?g/a.length:0,details:h}}async function y(a,b){let c=w(function(a){let b=a.match(/#{2,3}\s*[^\n]*(?:重难点|重点难点|工程难点|难点分析)[^\n]*\n/u);if(b&&void 0!==b.index){let c=b.index+b[0].length,d=a.slice(c),e=d.search(/^#{2,3}\s+/mu);return e>=0?d.slice(0,e):d}let c=a.match(/^\|?\s*[^\n]*重难点[^\n]*\|\s*$/mu);if(!c||void 0===c.index)return"";let d=a.slice(c.index).split(/\n/u),e=[];for(let a of d){let b=a.trim();if(!b||!b.startsWith("|")){if(e.length>0)break;continue}e.push(a)}return e.join("\n")}(a)),d=await x(c,b);return{countermeasures:c.length,attributed:d.attributed,quantified:d.quantified,bothCount:d.bothCount,ratio:d.ratio,heavyTemplated:c.length>0&&d.ratio<.5,entries:d.details.slice(0,24)}}let z=/建筑业10项新技术|10项新技术|安徽省住房城乡建设领域新技术推广目录|新技术推广目录|建设领域推广/u,A=/替代|取代|淘汰.{0,10}(?:工艺|技术|做法)|(?:较|比).{0,10}(?:传统|常规|普通)/u,B=/(?:提升|提高|节省|节约|降低|缩短|减少).{0,10}(?:效率|工期|成本|损耗|能耗|人工|周期)|升级价值|效益显著/u,C=["BIM","铝模","附着式升降脚手架","跳仓法","直螺纹","装配式","灌浆套筒","自动化监测","智慧工地","再生利用","非开挖","CCTV","碳纤维","薄贴法","干法施工","液压提升","预制","光伏一体化","BIPV","模块化"];function D(a){let b=C.filter(b=>a.includes(b)),c=z.test(a),d=A.test(a),e=B.test(a),f=[c,d,e].filter(Boolean).length;return{found:[...b],catalogCited:c,replaceClaimed:d,upgradeClaimed:e,effective:b.length>0&&f>=2}}let E=[/基坑|沟槽/u,/模板支撑|高支模/u,/脚手架|悬挑|附着式/u,/起重吊装|吊装/u,/幕墙/u,/人工挖孔桩/u,/装配式|钢结构安装/u,/拆除工程/u,/顶管|盾构|暗挖/u,/有限空间|水下作业/u,/吊篮/u,/塔吊|施工电梯|升降机/u,/沉井/u],F=/超危大|超规模|专家论证|一般危大/u,G=/(?:深度|高度|跨度|开挖).{0,8}\d+(?:\.\d+)?\s*(?:m|米)|(?:重量|吊装).{0,8}\d+(?:\.\d+)?\s*(?:kN|千牛)/u;function H(a){let b=E.filter(b=>b.test(a)).map(a=>a.source.replace(/\\u\w*|\\|\(|\||\)/gu,"")),c=F.test(a),d=G.test(a);return{categories:b,graded:c,paramMatched:d,twoStepComplete:b.length>0&&c&&d}}let I=[{name:"总则",pattern:/总则/u},{name:"组织机构及职责",pattern:/应急(?:组织|领导)|组织机构|应急指挥部|应急小组/u},{name:"风险分析与危险源辨识",pattern:/风险分析|危险源辨识|风险辨识/u},{name:"应急物资设备通讯保障",pattern:/应急物资|物资.{0,8}(?:保障|储备)|通讯保障|通信保障/u},{name:"专项应急预案",pattern:/专项应急预案|专项预案/u},{name:"应急响应流程",pattern:/应急响应|响应流程|响应程序/u},{name:"后期处置",pattern:/后期处置|善后|事故调查/u},{name:"培训演练",pattern:/(?:应急)?演练|培训.{0,6}演练/u}],J=["高处坠落","物体打击","坍塌","触电","火灾","起重","防汛","防台风","中暑","中毒窒息","管线破坏"];function K(a){let b=I.filter(b=>b.pattern.test(a)).map(a=>a.name),c=I.filter(b=>!b.pattern.test(a)).map(a=>a.name),d=J.filter(b=>a.includes(b));return{coveredParts:[...b],missingParts:[...c],coverage:b.length/I.length,planHits:[...d]}}let L=[/其他项目/u,/其他标段/u,/其他城市/u,/本公司(?:其他|承建)/u,/某(?:市|县|区|项目)(?:的)?/u,/他项目/u,/兄弟项目/u];function M(a){let b=a.replace(/及其他项目/gu,"及〔清单列举项〕");return L.filter(a=>a.test(b)).map(a=>a.source.replace(/\\u/gu,""))}},55807:(a,b,c)=>{c.d(b,{C_:()=>g.C_,DR:()=>h.DR,EG:()=>h.EG,EK:()=>h.EK,Fc:()=>g.Fc,G2:()=>h.G2,Ht:()=>g.Ht,Il:()=>h.Il,Iu:()=>d.Iu,M6:()=>h.M6,Mz:()=>d.Mz,NJ:()=>h.NJ,Oc:()=>e.Oc,QP:()=>d.xs,R_:()=>h.R_,UG:()=>d.UG,_8:()=>h._8,_k:()=>g._k,br:()=>e.br,bz:()=>h.bz,gq:()=>h.gq,h:()=>f.h,hS:()=>e.hS,hW:()=>d.hW,jO:()=>f.jO,jX:()=>d.jX,md:()=>h.md,t7:()=>d.t7,w_:()=>g.w_,xs:()=>f.xs});var d=c(64753),e=c(18292),f=c(87635),g=c(13145),h=c(39372)},55965:(a,b,c)=>{c.d(b,{hy:()=>m,kE:()=>j});var d=c(22157),e=c(95734);let f=new Map,g={"labor-peak":"项目劳动力峰值(人)","total-days":"项目总工期(日历天)","village-count":"项目自然村数量(个)",quantity:"工程量清单条目汇总工程量"},h=`你是施工组织设计文档的数值引用裁决器。任务:判断正文句中的数值是否「以该项目级数据的口径」陈述(项目级 = 全项目汇总/锁定口径)。
200
200
  判定结论三选一:
201
201
  - consistent:该句并非以该数据的项目级口径陈述该数值。典型非冲突形态:规格参数(间距/直径/厚度/强度等级)、检测频次或测点密度、分区/分段/分等级声明、分部分项或单体(单座/单栋/每座)工程量、分村/分工程/分标段明细值、计划或阶段工期、工期管理阈值(延误/预留/机动/占用天数)、施工组织分配(每X覆盖N个)、型号编号、其他概念的同形数字;或该句确以项目级口径陈述且数值与权威值一致。
202
202
  - conflict:该句确以该项目级数据的口径陈述该数值,且数值与权威值不一致。
@@ -204,24 +204,17 @@ ${a.content}`).join("\n\n")||"",k=r(b||f.executionStages,h),l=S(ac({...f,title:"
204
204
  注意:①权威值是该数据的项目级唯一锁定值(工程量清单汇总/蓝图推导);②句中工程对象(村名/分项/单体/部位)限定了数值作用范围时,该数值不是项目级口径,判 consistent。
205
205
  只返回 JSON,不要返回 markdown。`,i={type:"object",required:["judgments"],properties:{judgments:{type:"array",minItems:1,items:{type:"object",properties:{id:{type:"string",minLength:1,required:!0},conclusion:{type:"string",minLength:1,required:!0},rationale:{type:"string",minLength:1,maxLength:300,required:!0}}}}}};function j(a,b,c=0){let d=Math.max(a.lastIndexOf("。",Math.max(0,b-1)),a.lastIndexOf("\n",Math.max(0,b-1)))+1,e=Math.max(a.lastIndexOf("。",Math.max(0,d-1)),a.lastIndexOf("\n",Math.max(0,d-1)))+1,f=a.lastIndexOf("\n\n",b),g=a.indexOf("。",b);-1===g&&(g=a.length);let h=a.indexOf("\n",b);-1===h&&(h=a.length);let i=Math.max(-1===f?0:f+2,e,b-220),k=Math.max(Math.min(g,h)+1,b+c);return a.slice(i,k).trim()}function k(a){return[a.kind,a.subject,a.value,a.unit,a.authority,a.facts?.join("|")??"",(0,d.c6)(a.sentence)].join("\xa7")}async function l(a,b={}){let c,d=new Map,j=[];for(let b of a){let a=f.get(k(b));a?d.set(b.id,{...a,id:b.id}):j.push(b)}if(0===j.length)return{records:d};let m=b.invokeJson??((a,c)=>(0,e.bb)(a,c,{temperature:0,diagnostics:b.diagnostics,signal:b.signal,schema:i,prefixKey:"citation-adjudication"}));for(let a=0;a<j.length;a+=40){let b,e=j.slice(a,a+40);try{b=await m(h,function(a){let b=a.map(a=>JSON.stringify({id:a.id,数据类型:g[a.kind],数据主体:a.subject,权威值:`${a.authority}${a.unit}`,正文引用值:`${a.value}${a.unit}`,所在句:a.sentence,...a.facts&&a.facts.length>0?{判定辅助事实:a.facts}:{}}));return`逐条裁决以下 ${a.length} 条正文引用候选是否以该项目级数据口径陈述该数值:
206
206
  ${b.join("\n")}
207
- 只输出 JSON:{"judgments":[{"id":"...","conclusion":"consistent|conflict|uncertain","rationale":"不超过 60 字的依据"}]};每条候选必须给出结论,不得遗漏。`}(e))}catch(a){c=`语义判定调用异常:${a instanceof Error?a.message:String(a)}`,b=void 0}if(!b||!Array.isArray(b.judgments)){for(let a of(c=c??"语义判定调用失败(模型未返回有效 JSON)",e))d.set(a.id,{id:a.id,conclusion:"uncertain",rationale:c});continue}let i=new Map;for(let a of b.judgments)a&&"string"==typeof a.id&&i.set(a.id,a);for(let a of e){let b=i.get(a.id),c=b?.conclusion==="consistent"||b?.conclusion==="conflict"||b?.conclusion==="uncertain"?b.conclusion:"uncertain",e="string"==typeof b?.rationale&&b.rationale.trim()?b.rationale.trim().slice(0,120):b?"模型未给出判定依据":"模型输出缺少该候选的判定",g={id:a.id,conclusion:c,rationale:e};d.set(a.id,g),b&&(f.size>=4e3&&f.clear(),f.set(k(a),g))}}return{records:d,unavailable:c}}let m=(a,b)=>l(a,b)},63516:(a,b,c)=>{c.d(b,{BC:()=>y,E6:()=>R,EW:()=>B,FH:()=>ab,HX:()=>I,Mf:()=>aq,Mj:()=>al,Mx:()=>l,NT:()=>ac,Sf:()=>N,TX:()=>ap,Uk:()=>S,VX:()=>ae,eA:()=>am,e_:()=>P,ey:()=>Q,i:()=>v,jl:()=>O,l:()=>K,mg:()=>q,ur:()=>F,w:()=>ao,wC:()=>G,wG:()=>w,xk:()=>x,zD:()=>af});var d=c(73024),e=c(76760),f=c(95734);c(78217);var g=c(1218),h=c(37047),i=c(22157),j=c(71678),k=c(40299);function l(a=!1){return{awardObjectives:[],specialQualityStandards:[],awardClauses:[],systematicBenchmarks:[],frontScheduleClauses:[],dateFabricationProhibited:!1,prohibitionNotes:[],extracted:a}}let m={type:"object",required:["awardObjectives","specialQualityStandards","awardClauses","systematicBenchmarks","prohibitionNotes"],properties:{awardObjectives:{type:"array",maxItems:10,items:{type:"object",required:!0,properties:{text:{type:"string",minLength:2,maxLength:120},coreTerms:{type:"array",maxItems:4,items:{type:"string",maxLength:24}},source:{type:"string",maxLength:80}}}},specialQualityStandards:{type:"array",maxItems:10,items:{type:"object",required:!0,properties:{text:{type:"string",minLength:2,maxLength:120},coreTerms:{type:"array",maxItems:4,items:{type:"string",maxLength:24}},source:{type:"string",maxLength:80}}}},awardClauses:{type:"array",maxItems:10,items:{type:"object",required:!0,properties:{text:{type:"string",minLength:2,maxLength:200},coreTerms:{type:"array",maxItems:4,items:{type:"string",maxLength:24}},source:{type:"string",maxLength:80}}}},greenBuildingGrade:{type:"object",properties:{text:{type:"string",minLength:2,maxLength:120},coreTerms:{type:"array",maxItems:4,items:{type:"string",maxLength:24}},source:{type:"string",maxLength:80}}},smartSiteGrade:{type:"object",properties:{text:{type:"string",minLength:2,maxLength:120},coreTerms:{type:"array",maxItems:4,items:{type:"string",maxLength:24}},source:{type:"string",maxLength:80}}},assemblyRate:{type:"object",properties:{text:{type:"string",minLength:2,maxLength:120},coreTerms:{type:"array",maxItems:4,items:{type:"string",maxLength:24}},source:{type:"string",maxLength:80}}},systematicBenchmarks:{type:"array",maxItems:10,items:{type:"object",required:!0,properties:{text:{type:"string",minLength:2,maxLength:120},coreTerms:{type:"array",maxItems:4,items:{type:"string",maxLength:24}},source:{type:"string",maxLength:80}}}},frontScheduleClauses:{type:"array",maxItems:20,items:{type:"object",required:!0,properties:{text:{type:"string",minLength:2,maxLength:200},coreTerms:{type:"array",maxItems:4,items:{type:"string",maxLength:24}},source:{type:"string",maxLength:80}}}},dateFabricationProhibited:{type:"boolean"},prohibitionNotes:{type:"array",maxItems:12,items:{type:"object",required:!0,properties:{text:{type:"string",minLength:2,maxLength:200},coreTerms:{type:"array",maxItems:4,items:{type:"string",maxLength:24}},source:{type:"string",maxLength:80}}}}}},n=/^(?:☑?\s*无|无)\s*[。;;]?\s*$|:\s*(?:☑)?\s*无\s*[。;;]?\s*$|:\s*见\s*《?[^》]{2,40}》?\s*[。;;]?\s*$/u;function o(a){if(!a?.text||a.text.trim().length<2)return;let b=a.text.trim();if(!n.test(b))return{text:b,coreTerms:(a.coreTerms||[]).map(a=>a.trim()).filter(a=>a.length>=2&&a.length<=16).slice(0,4),source:a.source?.trim()||void 0}}function p(a){if(!Array.isArray(a))return[];let b=new Set,c=[];for(let d of a){let a=o(d);if(!a)continue;let e=a.text;b.has(e)||(b.add(e),c.push(a))}return c}async function q(a,b={}){let c,d=l(!1);if(!a||0===a.length)return d;let e=[...a].sort((a,b)=>{let c=`${a.sectionTitle||""}
208
- ${a.content||""}`,d=`${b.sectionTitle||""}
209
- ${b.content||""}`;return Number(s.test(d))-Number(s.test(c))}),h=[],j=0,n=[];for(let a of e){if(!a.content||!a.content.trim())continue;let b=`【${a.filePath||"资料"}|${a.sectionTitle||"正文"}】
210
- ${(0,g.wj)(a.content)}`;h.length>0&&j+b.length>4e4&&(n.push(h),h=[],j=0),h.push(b),j+=b.length}async function r(a){let c=a.join("\n\n");if(!c.trim())return d;let e=function(a){let b=0x811c9dc5;for(let c=0;c<a.length;c+=1)b^=a.charCodeAt(c),b=Math.imul(b,0x1000193);return(b>>>0).toString(16)}(c),g=await (0,f.bb)([(0,k.y4)("你是招标文件“要求与标准”结构化提取器。"),'从施工项目绑定资料(招标文件/合同条款/技术标准/检查规范等)中提取文本性评分项要求——这些是评标专家会核对文档是否响应、且影响否决与得分的实质要求。\n只提取资料中明确写出的要求,绝不臆造;资料没有该类别时输出空数组或缺省。\ncoreTerms 是用于在正文中核对该要求是否被响应的核心词(2-4 个),必须选最能代表该要求的专有名词/等级/体系名(如“黄山杯”“二星级”“六个百分百”),不要泛化词。\ndateFabricationProhibited:资料写明“以开工令为准/开工日期以监理开工令为准/不得自定开工日期”时为 true,否则 false。\nsystematicBenchmarks 提取体系化基准要求(如“扬尘治理六个百分百”“四节一环保”),单条零散要求放 prohibitionNotes。\nfrontScheduleClauses:从“投标人须知前附表/投标人须知”章节提取施工组织设计必须响应的实质条款——计划工期与质量要求、创优目标与奖惩(如“确保黄山杯,支付300万元”)、缺陷责任期与质保金、履约担保、工期延误赔偿、项目经理/关键人员要求、分包限制、装配式/绿色建筑/智慧工地等级、安全文明与扬尘要求、付款方式(影响资金安排)。只提取施组正文需要写入或必须遵守的条款;投标程序类条款(开标时间地点、保证金账户、投标文件递交/解密方式、评标委员会组成等纯程序信息)一律不提取。\n工程量清单的项目特征描述不是评分项要求,不要提取。\n必须输出且仅输出一个 JSON 对象,字段结构如下(没有内容的字段输出空数组 [] 或省略可选字段,绝不输出其他字段名):\n{\n "awardObjectives": [{ "text": "创优目标原文", "coreTerms": ["核心词"], "source": "来源文件" }],\n "specialQualityStandards": [{ "text": "...", "coreTerms": [], "source": "..." }],\n "awardClauses": [{ "text": "...", "coreTerms": [], "source": "..." }],\n "greenBuildingGrade": { "text": "...", "coreTerms": [], "source": "..." },\n "smartSiteGrade": { "text": "...", "coreTerms": [], "source": "..." },\n "assemblyRate": { "text": "...", "coreTerms": [], "source": "..." },\n "systematicBenchmarks": [{ "text": "...", "coreTerms": [], "source": "..." }],\n "frontScheduleClauses": [{ "text": "...", "coreTerms": [], "source": "..." }],\n "dateFabricationProhibited": false,\n "prohibitionNotes": [{ "text": "...", "coreTerms": [], "source": "..." }]\n}\n只返回 JSON。'].join("\n"),c,{maxTokens:16e3,temperature:0,signal:b.signal,diagnostics:b.diagnostics,schema:m,taskKind:"structuredGeneration"});return g?{awardObjectives:p(g.awardObjectives),specialQualityStandards:p(g.specialQualityStandards),awardClauses:p(g.awardClauses),greenBuildingGrade:o(g.greenBuildingGrade),smartSiteGrade:o(g.smartSiteGrade),assemblyRate:o(g.assemblyRate),systematicBenchmarks:p(g.systematicBenchmarks),frontScheduleClauses:p(g.frontScheduleClauses).filter(a=>!(0,i.hh)(a.text)),dateFabricationProhibited:!0===g.dateFabricationProhibited,prohibitionNotes:p(g.prohibitionNotes).filter(a=>!(0,i.hh)(a.text)),extracted:!0,sourceHash:e}:{...d,sourceHash:e}}for(let a of(h.length>0&&n.push(h),n)){let b=await r(a);c=c?function(a,b){let c,d,e,f,g,h;return{...a,awardObjectives:J(a.awardObjectives,b.awardObjectives),specialQualityStandards:J(a.specialQualityStandards,b.specialQualityStandards),awardClauses:J(a.awardClauses,b.awardClauses),greenBuildingGrade:(c=a.greenBuildingGrade,d=b.greenBuildingGrade,c||d),smartSiteGrade:(e=a.smartSiteGrade,f=b.smartSiteGrade,e||f),assemblyRate:(g=a.assemblyRate,h=b.assemblyRate,g||h),systematicBenchmarks:J(a.systematicBenchmarks,b.systematicBenchmarks),frontScheduleClauses:J(a.frontScheduleClauses,b.frontScheduleClauses),prohibitionNotes:J(a.prohibitionNotes,b.prohibitionNotes),dateFabricationProhibited:a.dateFabricationProhibited||b.dateFabricationProhibited,extracted:a.extracted||b.extracted}}(c,b):b}return c||d}let r=["工程创优奖项申报要求:争创或确保获得市级、省级或国家级优质工程奖,含具体奖项名称","绿色建筑星级等级要求","智慧工地等级要求","装配式建筑装配率要求","特殊质量标准与质量要求条款","扬尘治理六个百分百要求","质量目标必须确保达到合格或优良标准的要求"],s=/确保|争创|创优|获得.{0,10}[杯奖]|优质工程奖|绿色建筑|星级|智慧工地|装配率|装配式|六个百分百|四节一环保/u,t={specialQualityStandards:{label:"特殊质量标准",lexical:/特殊质量标准|质量标准和要求的约定|质量要求.{0,12}(?:为|是|满足)/u,hint:"特殊质量标准与质量要求条款(除创优/等级外的实质质量约束)"},frontScheduleClauses:{label:"前附表响应条款",lexical:/计划工期|日历天|缺陷责任期|履约担保|质保金|工期延误|项目经理|技术负责人|分包|转包|付款方式|支付.{0,10}万|[杯奖]|创优|奖项/u,hint:"投标人须知前附表施组响应实质条款(工期/质量/创优奖惩/人员/分包/付款等)"},dateFabricationProhibited:{label:"禁编日期条款",lexical:/开工令|以开工令|不得.{0,12}(?:自定|自行确定|编造)/u,hint:"以开工令为准的禁编日期条款(布尔字段)"},prohibitionNotes:{label:"禁止性要求",lexical:/不得|禁止|严禁|不允许/u,hint:"禁止/不得类条款与零散约束要求"}},u={awardObjectives:{label:"创优目标",lexical:/创优|争创|确保获得|确保.{0,8}[杯奖]|优质工程奖/u},awardClauses:{label:"奖项条款",lexical:/获得.{0,12}[杯奖]|支付.{0,10}万|不予支付|奖项的约定/u},greenBuildingGrade:{label:"绿色建筑等级",lexical:/绿色建筑.{0,20}(?:等级|星级|标准|要求)|[一二三]星级/u},smartSiteGrade:{label:"智慧工地等级",lexical:/智慧工地.{0,20}(?:等级|要求|基本级|优良级|良好级)/u},assemblyRate:{label:"装配率",lexical:/装配率.{0,20}(?:%|不低于|不少于|为|要求)|装配式.{0,20}装配率/u},systematicBenchmarks:{label:"体系基准",lexical:/六个百分百|四节一环保|文明施工专项费用|围挡出入口.{0,12}冲洗|扬尘.{0,12}(?:冲洗|防治|治理)/u},...t},v=["awardObjectives","awardClauses","greenBuildingGrade","smartSiteGrade","assemblyRate","systematicBenchmarks"];function w(a){return u[a].label}function x(a){if(!a)return[...v];let b=[];return 0===a.awardObjectives.length&&b.push("awardObjectives"),0===a.awardClauses.length&&b.push("awardClauses"),a.greenBuildingGrade||b.push("greenBuildingGrade"),a.smartSiteGrade||b.push("smartSiteGrade"),a.assemblyRate||b.push("assemblyRate"),0===a.systematicBenchmarks.length&&b.push("systematicBenchmarks"),b}function y(a){if(!a)return["awardObjectives","specialQualityStandards","awardClauses","greenBuildingGrade","smartSiteGrade","assemblyRate","systematicBenchmarks","frontScheduleClauses","dateFabricationProhibited","prohibitionNotes"];let b=[];return 0===a.awardObjectives.length&&b.push("awardObjectives"),0===a.specialQualityStandards.length&&b.push("specialQualityStandards"),0===a.awardClauses.length&&b.push("awardClauses"),a.greenBuildingGrade||b.push("greenBuildingGrade"),a.smartSiteGrade||b.push("smartSiteGrade"),a.assemblyRate||b.push("assemblyRate"),0===a.systematicBenchmarks.length&&b.push("systematicBenchmarks"),0===a.frontScheduleClauses.length&&b.push("frontScheduleClauses"),a.dateFabricationProhibited||b.push("dateFabricationProhibited"),0===a.prohibitionNotes.length&&b.push("prohibitionNotes"),b}let z={awardObjectives:'"awardObjectives": [{ "text": "创优目标原文", "coreTerms": ["核心词"], "source": "来源文件" }]',awardClauses:'"awardClauses": [{ "text": "条款原文", "coreTerms": [], "source": "..." }]',greenBuildingGrade:'"greenBuildingGrade": { "text": "...", "coreTerms": [], "source": "..." }',smartSiteGrade:'"smartSiteGrade": { "text": "...", "coreTerms": [], "source": "..." }',assemblyRate:'"assemblyRate": { "text": "...", "coreTerms": [], "source": "..." }',systematicBenchmarks:'"systematicBenchmarks": [{ "text": "...", "coreTerms": [], "source": "..." }]',specialQualityStandards:'"specialQualityStandards": [{ "text": "...", "coreTerms": [], "source": "..." }]',frontScheduleClauses:'"frontScheduleClauses": [{ "text": "...", "coreTerms": [], "source": "..." }]',dateFabricationProhibited:'"dateFabricationProhibited": true',prohibitionNotes:'"prohibitionNotes": [{ "text": "...", "coreTerms": [], "source": "..." }]'},A={type:"object",properties:m.properties};async function B(a,b,c={}){let d=a,e=y(d),h=[];for(let a=0;a<2&&e.length>0;a+=1){let a=new Map;for(let c of e){if(h.includes(c))continue;let d=function(a,b){let c=[];for(let d of a){let a=(0,g.wj)(`${d.sectionTitle||""}
211
- ${d.content||""}`);if(!b.lexical.test(a))continue;let e=a.split(/(?<=[。;;!?!?])|\n/u).map(a=>a.trim()).filter(a=>a.length>0);for(let a=0;a<e.length;a+=1){if(!b.lexical.test(e[a])||function(a){let b=a.trim();if(!b||/^#{0,6}\s*\d+(?:[.-]\d+)*\s*[^\s。;;::]{1,24}$/u.test(b)||/☑\s*无/u.test(b)||/□有[^。;;!?!?]{0,40}具体要求如下[::]\s*\/?\s*$/u.test(b))return!0;let c=b.split(":").pop()?.trim()||b;return!!n.test(c)}(e[a]))continue;let d=Math.max(0,a-2),f=Math.min(e.length,a+3),g=e.slice(d,f).join("").trim();g&&!c.includes(g)&&c.push(g)}}return c.slice(0,6)}(b,u[c]);if(0===d.length){h.push(c);continue}a.set(c,d)}if(0===a.size)break;let i=[...a.entries()].map(([a,b])=>`【缺失字段:${u[a].label}】
212
- ${b.map((a,b)=>`条款窗口${b+1}:${a}`).join("\n")}`),j=[...a.keys()].map(a=>` ${z[a]},`).join("\n"),l=[...a.keys()].flatMap(a=>{let b=t[a]?.hint;return b?[` ${u[a].label}:${b}`]:[]}),m=await (0,f.bb)([(0,k.y4)("你是招标文件评分项要求定向提取器。"),"从以下条款窗口中提取缺失的评分项要求字段——每条窗口都是招标/合同文件相关条款的原文片段,字段内容必须忠实引用原文,绝不臆造或改写。",...l.length>0?["各字段提取口径:",...l]:[],"窗口中没有对应字段内容时,该字段输出空数组 [] 或省略;绝不输出未要求的其他字段。","coreTerms 是用于在正文中核对该要求是否被响应的核心词(2-4 个),必须选最能代表该要求的专有名词/等级/体系名,不要泛化词。","dateFabricationProhibited:窗口内容写明「以开工令为准」类禁编日期条款时为 true,否则省略。","必须输出且仅输出一个 JSON 对象,字段结构如下:","{",j,"}"].join("\n"),i.join("\n\n"),{maxTokens:8e3,temperature:0,signal:c.signal,diagnostics:c.diagnostics,schema:A,taskKind:"structuredGeneration"});m&&(d=I(d,{awardObjectives:p(m.awardObjectives),specialQualityStandards:p(m.specialQualityStandards),awardClauses:p(m.awardClauses),greenBuildingGrade:o(m.greenBuildingGrade),smartSiteGrade:o(m.smartSiteGrade),assemblyRate:o(m.assemblyRate),systematicBenchmarks:p(m.systematicBenchmarks),frontScheduleClauses:p(m.frontScheduleClauses),dateFabricationProhibited:!0===m.dateFabricationProhibited,prohibitionNotes:p(m.prohibitionNotes),extracted:!0})),e=y(d)}return{model:d,stillGaps:e.filter(a=>!h.includes(a)),noEvidenceGaps:h}}let C=[...r,"计划工期与工期延误违约赔偿条款","质量目标必须达到合格或优良标准","安全文明施工与扬尘治理要求","项目经理与关键人员配置要求","分包与转包限制条款","材料设备采购与进场验收要求","付款方式与资金安排条款","缺陷责任期与质量保证金条款"],D=/确保|争创|创优|优质工程奖|获得.{0,10}[杯奖]|鲁班奖|绿色建筑|星级|智慧工地|装配率|装配式|六个百分百|四节一环保|达到.{0,6}(合格|优良)|质量标准|验收标准|特殊要求|按最高标准执行|按计划|违约金|工期延误|计划工期|日历天|安全文明|文明施工|扬尘|实名制|劳资专管|承插型盘扣|钢板防护网|商品砼|预拌砂浆|见证取样|送样|项目经理|技术负责人|分包|转包|履约担保|质保金|缺陷责任期|施工组织方案|施工进度计划|专项施工方案|施工工艺|须达到|必须达到|不低于|不少于|不得超过|不得超出/u,E=/盖单位章|签字或盖章|年月日|投标总价|汇总表|计日工表|综合单价分析|单价小计|未计价材料费|开标时间|开标地点|递交截止|投标截止|解密|电子交易系统|保证金账户|开户银行|投标保证金|异议|投诉|技术热线|评标委员会由.{0,10}人|评标委员会组成|资格审查|四库一平台|保函|担保机构|受益人|开立人|签字盖章|密封|正本.{0,4}副本|联合体|清标/u;async function F(a){if(a.length<=1)return a;let b=a.map(a=>(0,g.wj)(`${a.sectionTitle||""}
213
- ${a.content||""}`)),c=await (0,h.Mv)(C,b),d=a.filter((a,d)=>{let e=b[d];return!!(D.test(e)||Math.max(...C.map(a=>c(a,e)))>=.45)||!E.test(e)});return 0===d.length?a:d}async function G(a){if(0===a.length)return[];let b=a.map(a=>(0,g.wj)(`${a.sectionTitle||""}
214
- ${a.content||""}`)),c=await (0,h.Mv)(r,b),d=a.map((a,d)=>({item:a,text:b[d],score:Math.max(...r.map(a=>c(a,b[d])))})).filter(a=>a.score>=.5||s.test(a.text)).sort((a,b)=>b.score-a.score),e=new Set,f=[];for(let a of d){let b=(0,g.wj)(`${a.item.sectionTitle||""}
215
- ${a.item.content||""}`),c=`${a.item.filePath}|${a.item.sectionTitle||""}|${b.slice(0,120)}`;e.has(c)||(e.add(c),f.push({...a.item,content:b}))}return f}function H(a){return x(a).length>0}function I(a,b){let c=(a,b)=>a.length>0?a:b;return{...a,awardObjectives:c(a.awardObjectives,b.awardObjectives),specialQualityStandards:c(a.specialQualityStandards,b.specialQualityStandards),awardClauses:c(a.awardClauses,b.awardClauses),greenBuildingGrade:a.greenBuildingGrade||b.greenBuildingGrade,smartSiteGrade:a.smartSiteGrade||b.smartSiteGrade,assemblyRate:a.assemblyRate||b.assemblyRate,systematicBenchmarks:c(a.systematicBenchmarks,b.systematicBenchmarks),frontScheduleClauses:c(a.frontScheduleClauses,b.frontScheduleClauses),prohibitionNotes:c(a.prohibitionNotes,b.prohibitionNotes),dateFabricationProhibited:a.dateFabricationProhibited||b.dateFabricationProhibited,extracted:a.extracted||b.extracted}}function J(a,b){let c=new Set,d=[];for(let e of[...a,...b])c.has(e.text)||(c.add(e.text),d.push(e));return d}function K(a){return!!a&&(a.awardObjectives.length>0||a.specialQualityStandards.length>0||a.awardClauses.length>0||!!a.greenBuildingGrade||!!a.smartSiteGrade||!!a.assemblyRate||a.systematicBenchmarks.length>0||a.frontScheduleClauses.length>0||a.dateFabricationProhibited||a.prohibitionNotes.length>0)}function L(a){let b=e.join(process.env.HOME||process.cwd(),".customize-agent","cache","document-workflow",(0,i.c6)(a||"default"));return d.mkdirSync(b,{recursive:!0}),b}function M(a){return a.map(a=>({filePath:a.filePath||"",sectionTitle:a.sectionTitle||"",contentHash:(0,i.c6)(a.content||"")})).sort((a,b)=>`${a.filePath}|${a.sectionTitle}`.localeCompare(`${b.filePath}|${b.sectionTitle}`))}function N(a){return(0,i.c6)({version:"tender-requirements-extraction-v3",collection:M(a.collectionEvidence),preselectInput:M(a.preselectEvidence)})}function O(a,b){try{let c=e.join(L(a),`tender-requirements-${b}.json`),f=JSON.parse(d.readFileSync(c,"utf8"));if(!K(f)||H(f))return;return f}catch{return}}function P(a,b,c){if(!(!c||!K(c)||H(c)))try{d.writeFileSync(e.join(L(a),`tender-requirements-${b}.json`),JSON.stringify(c,null,2))}catch{}}function Q(a){if(!a||!K(a))return"";let b=[],c=(a,c)=>{for(let d of c)(0,i.DI)(d.text)||b.push(`${a}:${d.text}${d.source?`(来源:${d.source})`:""}。`)};return(c("本项目创优目标(必须全文显性响应,质量目标章节必须逐条承接并配套创优保证措施;奖项名称必须与招标文件原文逐字一致,禁止替换、降级或省略为其他奖项名称,“确保/达到”不得弱化为“争创”)",a.awardObjectives),c("特殊质量标准(实质性要求,质量目标必须显性写明)",a.specialQualityStandards),c("奖项条款(与创优目标关联,创优保证措施须覆盖申报与兑现条件)",a.awardClauses),a.greenBuildingGrade&&b.push(`绿色建筑等级要求:${a.greenBuildingGrade.text}。必须编制系统性绿色施工保证方案(节能/节地/节水/节材/室内环境指标控制与验收),不得仅以单一指标替代整体响应。`),a.smartSiteGrade&&b.push(`智慧工地等级要求:${a.smartSiteGrade.text},智慧工地建设方案须达到该等级。`),a.assemblyRate&&b.push(`装配率要求:${a.assemblyRate.text},装配式施工方案须覆盖水平构件与相关部品。`),c("体系基准要求(必须逐项覆盖表述,不得零散遗漏)",a.systematicBenchmarks),c("投标人须知前附表响应条款(施组必须逐条响应或遵守,零响应即评标失分)",a.frontScheduleClauses.filter(a=>!(0,j.dn)(a.text))),a.dateFabricationProhibited&&b.push("禁止编造开工日期:招标文件以开工令时间为准,正文不得自行设定具体日历开工日期,一律表述为“以开工令时间为准”。"),c("禁止性/约束性要求(正文不得违反)",a.prohibitionNotes),0===b.length)?"":`【招标文件评分项要求(系统从绑定资料提取,必须逐条响应,零响应即评标失分)】
207
+ 只输出 JSON:{"judgments":[{"id":"...","conclusion":"consistent|conflict|uncertain","rationale":"不超过 60 字的依据"}]};每条候选必须给出结论,不得遗漏。`}(e))}catch(a){c=`语义判定调用异常:${a instanceof Error?a.message:String(a)}`,b=void 0}if(!b||!Array.isArray(b.judgments)){for(let a of(c=c??"语义判定调用失败(模型未返回有效 JSON)",e))d.set(a.id,{id:a.id,conclusion:"uncertain",rationale:c});continue}let i=new Map;for(let a of b.judgments)a&&"string"==typeof a.id&&i.set(a.id,a);for(let a of e){let b=i.get(a.id),c=b?.conclusion==="consistent"||b?.conclusion==="conflict"||b?.conclusion==="uncertain"?b.conclusion:"uncertain",e="string"==typeof b?.rationale&&b.rationale.trim()?b.rationale.trim().slice(0,120):b?"模型未给出判定依据":"模型输出缺少该候选的判定",g={id:a.id,conclusion:c,rationale:e};d.set(a.id,g),b&&(f.size>=4e3&&f.clear(),f.set(k(a),g))}}return{records:d,unavailable:c}}let m=(a,b)=>l(a,b)},63516:(a,b,c)=>{c.d(b,{E6:()=>F,HF:()=>H,Hj:()=>I,Mf:()=>_,Mj:()=>X,Mx:()=>l,NT:()=>n,Sf:()=>y,T3:()=>J,TX:()=>$,Uk:()=>E,eA:()=>Y,e_:()=>B,ey:()=>G,jl:()=>A,l:()=>D,mg:()=>w,tH:()=>U,w:()=>Z,zD:()=>C});var d=c(73024),e=c(76760),f=c(95734),g=c(48661),h=c(1218),i=c(22157),j=c(71678),k=c(40299);function l(a=!1){return{entries:[],excluded:[],reconciliation:{clauseCount:0,entryCount:0,excludedCount:0,undecidedCount:0,mergedCount:0,batchCount:0,retriedBatches:0},extracted:a}}let m=/^(?:☑?\s*无|无)\s*[。;;]?\s*$|:\s*(?:☑)?\s*无\s*[。;;]?\s*$|:\s*见\s*《?[^》]{2,40}》?\s*[。;;]?\s*$/u;function n(a){return a.trim().replace(/^#{2,4}\s+/u,"").replace(/^\d+(?:\.\d+)*[\s、.]+/u,"").trim()}let o=[/^第[零一二三四五六七八九十百千\d]{1,6}[条章节款项]/u,/^[((][一二三四五六七八九十\d]{1,3}[))]/u,/^[一二三四五六七八九十]{1,3}[、..](?!\d)/u,/^\d{1,2}(?:[..]\d{1,2}){1,3}(?:[、..]|\s)/u,/^\d{1,2}[、..]\s*(?![\d%])/u],p={type:"object",required:["results"],properties:{results:{type:"array",required:!0,minItems:1,items:{type:"object",required:!0,properties:{index:{type:"number",required:!0},isRequirement:{type:"boolean",required:!0},inScope:{type:"boolean",required:!0},reason:{type:"string",maxLength:32},policy:{type:"string",maxLength:16},coreTerms:{type:"array",items:{type:"string",maxLength:24}},category:{type:"string",maxLength:16}}}}}},q=[(0,k.y4)("你是招标文件条款判定器。"),'输入是从招标资料(招标文件/补疑/答疑等)中按原文顺序切分的条款单元(含全局序号与来源)。\n对每一条独立完成判定,且必须为每一条给出结果(不得遗漏任何序号)。\n\n1. isRequirement:该条是否构成对投标人的实质要求(需写入正文响应或必须遵守)?\n - true:明确的目标/等级/标准/参数/义务/禁止性要求(确保、达到、不低于、不得、严禁、必须、应当等约束语义)\n - false:目录、章节导语、说明性/解释性文字、空白表头、格式模板、无约束力的描述\n - 条款值被明确标注「无」「☑无」「不适用」「/」时 → isRequirement=false(reason="no_value")\n - 工程量清单条目、项目特征描述、工程量数据不是本通道要求(由清单蓝图通道处理)→ false\n2. inScope:该条是否属于施工组织设计正文的职责范围?\n - true:质量/工期/安全/环保目标、创优奖项、绿色建筑/智慧工地/装配式等级、体系基准(六个百分百/四节一环保等)、\n 工期与进度约束、人员配置与分包限制、材料工艺与验收标准、禁止性事项、必须遵守的合同约束、\n 保证金/付款/结算等商务约束(技术标定性响应)\n - false:纯投标程序事务(开标时间地点/保证金账户信息/递交解密方式/评标委员会组成)、投标资格条件\n (营业执照/资质证书/业绩要求)、评标否决规则(否决其投标/废标情形)、商务纪律承诺(廉洁承诺)、格式签章要求\n3. policy(isRequirement 且 inScope 时必填,其余省略):\n - "respond":必须在正文显性写出的要求(创优目标/奖项、质量目标、等级指标、体系基准、技术工艺条款、人员与分包约束、验收标准)\n - "comply":不逐条抄写但全文必须遵守的约束(以开工令为准的日期约束、工期总日历天数基准、全局禁止性事项)\n - "qualitative":商务性约束(保证金/付款/结算/违约金等)——技术标按合同约定定性响应,不落商务数字参数\n4. coreTerms:2-4 个用于正文核对的核心词(专有名词/等级名/体系名/关键数字参数,如「黄山杯」「二星级」「六个百分百」「300万元」);\n 数字参数必须保留数字与单位;不要泛化词(「施工」「工程」类不能作为核心词)\n5. category:按招标语义命名类别(如「质量创优」「工期进度」「安全文明」「绿色施工」「人员管理」「商务支付」「禁止性要求」),\n 同类要求使用同一类别名\n\nisRequirement=false 或 inScope=false 时须给出 reason(枚举):\n- "non_requirement":非约束性内容(目录/导语/说明/描述)\n- "out_of_scope":超出施组职责(投标程序/资格/评标规则/纪律/格式)\n- "no_value":条款值为「无」或不适用\n\n输出 JSON 结构(覆盖全部序号,每序号必出结果):\n{ "results": [\n { "index": 0, "isRequirement": true, "inScope": true, "policy": "respond", "coreTerms": ["黄山杯", "300万元"], "category": "质量创优" },\n { "index": 1, "isRequirement": false, "inScope": false, "reason": "out_of_scope" }\n] }\n只返回 JSON。'].join("\n"),r=/开工令|开工日期|竣工日期|不得.{0,12}(?:自定|自行确定|编造|设定)/u;function s(a){let b=[a.section,a.clauseNo?`条款${a.clauseNo}`:""].filter(Boolean).join("\xb7");return[a.file,b].filter(Boolean).join("|")||void 0}async function t(a,b,c){let d=Array(a.length),e=0;return await Promise.all(Array.from({length:Math.min(b,a.length)},async()=>{for(;;){let b=e;if(e+=1,b>=a.length)return;d[b]=await c(a[b],b)}})),d}async function u(a,b,c={}){let d=a.map((a,c)=>{let d=s(a);return`【条款 ${b+c}】${d?`来源:${d}`:""}
208
+ ${a.text}`}).join("\n\n"),e=new Set(a.map((a,c)=>b+c)),g=new Map;for(let a=0;a<2;a+=1){let b=await (0,f.bb)(q,d,{maxTokens:8e3,temperature:0,signal:c.signal,diagnostics:c.diagnostics,schema:p,taskKind:"structuredGeneration"});for(let a of(g=new Map,b?.results||[]))"number"==typeof a.index&&e.has(a.index)&&g.set(a.index,a);if(g.size===e.size)return{judgments:g,retried:a>0}}return{judgments:g,retried:!0}}async function v(a,b={}){let c=[],d=[],e=[];if(0===a.length)return{entries:c,excluded:d,undecided:e,batchCount:0,retriedBatches:0};let f=[];for(let b=0;b<a.length;b+=40)f.push(a.slice(b,b+40));let g=await t(f,3,(a,c)=>u(a,40*c,b)),h=0;return g.forEach((a,b)=>{a.retried&&(h+=1),f[b].forEach((f,g)=>{var h,k;let l=a.judgments.get(40*b+g);if(!l)return void e.push(f);if(!l.isRequirement||!l.inScope)return void d.push({text:f.text,source:s(f),reason:"no_value"===l.reason||"out_of_scope"===l.reason||"non_requirement"===l.reason?l.reason:!0===l.isRequirement&&!1===l.inScope?"out_of_scope":"non_requirement"});if(m.test(f.text)||function(a){let b=a.trim();if(!b||/^#{0,6}\s*\d+(?:[.-]\d+)*\s*[^\s。;;::]{1,24}$/u.test(b)||/☑\s*无/u.test(b)||/□有[^。;;!?!?]{0,40}具体要求如下[::]\s*\/?\s*$/u.test(b))return!0;let c=b.split(":").pop()?.trim()||b;return!!m.test(c)}(f.text))return void d.push({text:f.text,source:s(f),reason:"no_value"});if((0,i.hh)(f.text)||(0,j.dn)(f.text)||(0,i.DI)(f.text))return void d.push({text:f.text,source:s(f),reason:"out_of_scope"});let n="comply"===(h=l.policy)||"qualitative"===h?h:"respond";c.push({text:f.text,coreTerms:Array.isArray(k=l.coreTerms)?k.map(a=>(a||"").trim()).filter(a=>a.length>=2&&a.length<=24).slice(0,4):[],sources:[function(a){let b=[a.section,a.clauseNo?`条款${a.clauseNo}`:""].filter(Boolean).join("\xb7");return{file:a.file||void 0,location:b||void 0}}(f)],category:function(a){let b=(a||"").trim();return!b||b.length>16?"其他要求":b}(l.category),policy:n,global:!!("comply"===n&&r.test(f.text))||void 0})})}),{entries:c,excluded:d,undecided:e,batchCount:f.length,retriedBatches:h}}async function w(a,b={}){let c=l(!1);if(!a||0===a.length)return c;let d=function(a){let b=[];for(let c of a){let a,d=c.content||"";if(!d.trim())continue;let e=c.filePath||void 0,f=c.sectionTitle?.trim()||void 0,g=[],i=()=>{let c=g.join("\n").trim(),d=a;if(g=[],a=void 0,!c)return;let h=function(a){if(a.length<=2e3)return[a];let b=a.split(/(?<=[。;;!?!?])/u),c=[],d="";for(let a of b)d&&d.length+a.length>2e3&&(c.push(d),d=""),d+=a;return d&&c.push(d),c.length>0?c:[a]}(c);h.forEach((a,c)=>{b.push({file:e,section:f,clauseNo:d?h.length>1?`${d}-${c+1}`:d:void 0,text:a})})};for(let b of d.split(/\r?\n/u)){let c=b.trim();if(/^#{1,6}\s/u.test(c)){g.length>0&&i();let a=(0,h.wj)(c).trim();a&&(f=a);continue}let d=(0,h.wj)(c).trim();if(!d){g.length>0&&i();continue}let e=function(a){for(let b of o){let c=b.exec(a);if(c)return c[0].trim().replace(/[、..\s]$/u,"")}}(d);if(e){g.length>0&&i(),a=e,g.push(d);continue}if(d.length<=300&&/[::]/u.test(d)&&!/[。;;]/u.test(d.slice(0,d.search(/[::]/u)))){g.length>0&&i(),g.push(d),i();continue}g.push(d)}g.length>0&&i()}return b}(a);if(0===d.length)return c;b.onPhase?.(`条款化完成:${d.length} 条单元(全文穷举切分,不预筛不剔除)`,[`来源文件:${[...new Set(d.map(a=>a.file).filter(Boolean))].join("、")||"—"}`,"逐条判定进行中(每批 40 条,序号严格对齐)"]);let e=await v(d,{signal:b.signal,diagnostics:b.diagnostics}),f=function(a){let b=new Map,c=0;for(let d of a){let a=d.text.replace(/[\s,。;、::..()()「」“”"'`·]/gu,""),e=b.get(a);if(e){for(let a of d.sources)e.sources.some(b=>b.file===a.file&&b.location===a.location)||e.sources.push(a);e.coreTerms=[...new Set([...e.coreTerms,...d.coreTerms])].slice(0,4),c+=1;continue}b.set(a,d)}return{entries:[...b.values()],mergedCount:c}}(e.entries);b.onPhase?.(`逐条判定完成:要求 ${f.entries.length} + 排除 ${e.excluded.length}${f.mergedCount>0?` + 合并 ${f.mergedCount}`:""} + 未判定 ${e.undecided.length}`,0===e.undecided.length?["对账闭合:全部条款已判定"]:[`未判定 ${e.undecided.length} 条(LLM 输出缺号且重试后仍缺),对账未闭合,缓存不落盘`]);let g=e.entries.length>0||e.excluded.length>0;return{entries:f.entries,excluded:e.excluded,reconciliation:{clauseCount:d.length,entryCount:f.entries.length,excludedCount:e.excluded.length,undecidedCount:e.undecided.length,mergedCount:f.mergedCount,batchCount:e.batchCount,retriedBatches:e.retriedBatches},extracted:g,sourceHash:function(a){let b=0x811c9dc5;for(let c=0;c<a.length;c+=1)b^=a.charCodeAt(c),b=Math.imul(b,0x1000193);return(b>>>0).toString(16)}(a.map(a=>`${a.filePath||""}|${a.sectionTitle||""}|${a.content||""}`).join("\n"))}}function x(a){let b=e.join(process.env.HOME||process.cwd(),".customize-agent","cache","document-workflow",(0,i.c6)(a||"default"));return d.mkdirSync(b,{recursive:!0}),b}function y(a){return(0,i.c6)({version:"tender-requirements-extraction-v4",collection:a.collectionEvidence.map(a=>({filePath:a.filePath||"",sectionTitle:a.sectionTitle||"",contentHash:(0,i.c6)(a.content||"")})).sort((a,b)=>`${a.filePath}|${a.sectionTitle}`.localeCompare(`${b.filePath}|${b.sectionTitle}`))})}function z(a){if(!a||!Array.isArray(a.entries)||!Array.isArray(a.excluded)||!a.reconciliation)return!1;let b=a.reconciliation;return"number"==typeof b.clauseCount&&"number"==typeof b.entryCount&&"number"==typeof b.excludedCount&&"number"==typeof b.mergedCount&&"number"==typeof b.undecidedCount&&0===b.undecidedCount&&b.clauseCount===b.entryCount+b.excludedCount+b.mergedCount}function A(a,b){try{let c=e.join(x(a),`tender-requirements-${b}.json`),f=JSON.parse(d.readFileSync(c,"utf8"));if(!f?.extracted||!z(f))return;return f}catch{return}}function B(a,b,c){if(c?.extracted&&z(c))try{d.writeFileSync(e.join(x(a),`tender-requirements-${b}.json`),JSON.stringify(c,null,2))}catch{}}function C(a){if(!a)return[];let b=[],c=a.reconciliation;if(a.extracted){let a=[`要求 ${c.entryCount}`,`排除 ${c.excludedCount}`];c.mergedCount>0&&a.push(`合并 ${c.mergedCount}(来源已聚合)`),a.push(`未判定 ${c.undecidedCount}`),b.push(`条款对账:切分 ${c.clauseCount} = ${a.join(" + ")}${0===c.undecidedCount?"(闭合)":"(未闭合)"}`)}let d=new Map;for(let b of a.entries){let a=d.get(b.category)||[];a.push(b.text),d.set(b.category,a)}for(let[a,c]of d)b.push(`${a} ${c.length} 条:${c.join("、")}`);return c.undecidedCount>0&&b.push(`未判定条款 ${c.undecidedCount} 条:对账未闭合(LLM 输出缺号且重试后仍缺),请检查 LLM 可用性`),a.extracted||b.push("招标要求未提取(无绑定资料或模型不可用),验收自动跳过"),b}function D(a){return!!(a?.extracted&&a.entries.length>0)}function E(a){return a?a.entries.map(a=>({kind:a.category,item:a})):[]}function F(a){return a.coreTerms.length>0?a.coreTerms.join(" "):a.text}function G(a){if(!a?.extracted)return"";let b=[];for(let c of a.entries)c.global&&b.push(`全局遵守:${c.text}(全文任何章节不得违反,禁止自行设定该类数据)`);return b.push("本章分配到的招标要求(见「本章必须处理的招标要求」清单)必须逐条处理:显性响应类须写入正文并配套保证措施;遵守类须全文一致遵守;定性响应类按合同约定定性声明。奖项名称、等级指标、数字参数必须与招标文件原文逐字一致,禁止替换、降级或省略。"),`【招标要求全局口径红线(全文档适用)】
216
209
  ${b.map((a,b)=>`${b+1}. ${a}`).join("\n")}
217
- ${(0,i.TP)("以上为系统提取的评分项要求内容:实质要求(奖项名称、数字参数、等级指标等)必须显性响应进正文;本段提示词文字本身(编号、括号说明等元话语)禁止复述进正文")}`}function R(a){return a.coreTerms.length>0?a.coreTerms.join(" "):a.text}function S(a){if(!a)return[];let b=[];for(let c of a.awardObjectives)b.push({kind:"创优目标",item:c});for(let c of a.specialQualityStandards)b.push({kind:"特殊质量标准",item:c});for(let c of a.awardClauses)b.push({kind:"奖项条款",item:c});for(let c of a.systematicBenchmarks)b.push({kind:"体系基准要求",item:c});for(let c of a.frontScheduleClauses)b.push({kind:"前附表响应条款",item:c});return a.greenBuildingGrade&&b.push({kind:"绿色建筑等级",item:a.greenBuildingGrade}),a.smartSiteGrade&&b.push({kind:"智慧工地等级",item:a.smartSiteGrade}),a.assemblyRate&&b.push({kind:"装配率要求",item:a.assemblyRate}),b}let T={type:"object",required:["results"],properties:{results:{type:"array",required:!0,minItems:1,items:{type:"object",required:!0,properties:{index:{type:"number",required:!0},responsive:{type:"boolean",required:!0}}}}}},U=new Map;async function V(a,b={}){let c=a.map(a=>({kind:a.kind,text:a.text.trim()})).filter(a=>a.text.length>0);if(0===c.length)return new Map;let d=c.map(a=>`${a.kind}\u0001${a.text}`).join("\x02"),e=U.get(d);if(void 0!==e)return e;let g=new Set;c.forEach((a,b)=>{((0,i.hh)(a.text)||(0,j.dn)(a.text)||(0,i.DI)(a.text))&&g.add(b)});let h=await (0,f.bb)([(0,k.y4)("你是招标文件要求项程序性/实质性分类器。"),"对每个要求项判定其是否属于施工组织设计正文必须响应的实质要求:\n- 实质要求(responsive=true):创优目标与奖项、质量/工期/安全/环保目标、绿色建筑/智慧工地/装配式等级、扬尘治理、四节一环保、人员与分包要求、付款履约约束等施组需写入或遵守的条款\n- 程序性条款(responsive=false):开标时间地点、保证金账户、投标文件递交/解密方式、评标委员会组成、投标有效期等纯投标程序信息\n只输出 JSON,不得输出其他内容。"].join("\n"),c.map((a,b)=>`${b+1}. [${a.kind}] ${a.text}`).join("\n"),{maxTokens:2e3,temperature:0,signal:b.signal,diagnostics:b.diagnostics,schema:T,taskKind:"structuredGeneration"});if(!h?.results?.length)return new Map(c.map((a,b)=>[b,!g.has(b)]));let l=new Map;for(let a of h.results)"number"==typeof a.index&&l.set(a.index,!1!==a.responsive);let m=new Map(c.map((a,b)=>[b,!g.has(b)&&(l.get(b)??!0)]));return U.size>=32&&U.clear(),U.set(d,m),m}let W={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 X(a,b={}){let c=a.filter(a=>a.text.trim());if(0===c.length)return new Map;let d=await (0,f.bb)([(0,k.y4)("你是招标要求条款锚点关系判定器。"),'对每条条款判定其锚点之间的关系:\n- alternative=true:条款锚点为"或/及/任选其一"关系(如"省级或国家级奖项""A、B、C任选"),满足任一锚点即算完整响应\n- alternative=false:条款锚点必须全部满足(并列承诺、金额与奖项共存条款),缺任一锚点即部分响应\n只输出 JSON,不得输出其他内容。'].join("\n"),c.map((a,b)=>`${b+1}. 条款:${a.text}
218
- 未命中锚点:${a.missingAnchors.join("、")||"(无)"}`).join("\n"),{maxTokens:1e3,temperature:0,signal:b.signal,diagnostics:b.diagnostics,schema:W,taskKind:"structuredGeneration"});if(!d?.results?.length)return new Map(c.map((a,b)=>[b,!1]));let e=new Map;for(let a of d.results)"number"==typeof a.index&&e.set(a.index,!0===a.alternative);return new Map(c.map((a,b)=>[b,e.get(b)??!1]))}function Y(a){let b=a;for(;;){let a=b.replace(/^(?:争创|争取|力争|争获|确保|获得|创建|力创|评为|荣获|标为|目标为|承诺|为)/u,"");if(a===b||!a)break;b=a}return b}function Z(a,b,c){let d=a.text.replace(/\s+/gu,""),e=new Set;for(let b of a.coreTerms){let a=b.replace(/\s+/gu,"");a.length>=2&&e.add(a)}if(!c?.skipNumericAnchors)for(let a of d.matchAll(/(?:\d+(?:\.\d+)?\s*(?:%|%|天|日|万元|亿元|元|米|m|M|mm|毫米|层|年|个|月|周|小时|分钟|项|处|台|套|辆|人|家|次|遍|道|吨|kPa|MPa))/giu))e.add(a[0].replace(/\s+/gu,""));for(let a of d.matchAll(/[\u4e00-\u9fa5]{2,6}[杯奖星]/gu)){let b=Y(a[0]);/^[\u4e00-\u9fa5]{2,7}$/u.test(b)&&e.add(b)}let f=[],g=[];for(let a of e)(b.includes(a)?f:g).push(a);return{total:e.size,hit:f,missing:g}}function $(a,b){let c=a.replace(/([^)]*)|\([^)]*\)/gu,"").split(/[,。;、,;\n]/u).map(a=>a.replace(/[「」“”"'`\s]/gu,"").trim()).filter(a=>a.length>=6),d=c.filter(a=>!b.includes(a));return{total:c.length,missing:d}}function _(a){return a.replace(/投标人本单位|承包人本单位/gu,"本公司").replace(/本招标项目/gu,"本项目").replace(/(?:承包人|发包人)认为视同/gu,"视为").replace(/承包人|投标人|施工单位|承包方|中标人|承包单位|投标单位/gu,"我方")}function aa(a,b){let c=Z(a,b);if(c.total>0&&0===c.missing.length)return!0;let d=$(a.text,b);if(d.total>0&&0===d.missing.length)return!0;let e=$(_(a.text),b);return!!(e.total>0)&&0===e.missing.length}async function ab(a,b,c){let d=[],e=S(b);if(0===e.length)return d;let f=a.replace(/\s+/gu,""),g=[/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],h=()=>g.filter(b=>b.test(a)).length,i=a.split(/\n/u).filter(a=>/^#{2,4}\s/u.test(a.trim())).map(a=>ac(a)).filter(Boolean).slice(0,80),j=await V(e.map(a=>({kind:a.kind,text:a.item.text})),{signal:c.signal,diagnostics:c.diagnostics}),k=c.bodyTexts&&c.bodyTexts.length>0?[...i,...c.bodyTexts]:i,l=[];for(let[a,{kind:b,item:g}]of e.entries()){if(!1===j.get(a)||"体系基准要求"===b&&/六个百分百|扬尘治理/u.test(g.text)&&h()>=4)continue;let e=R(g),i=0;for(let a of k){let b=c.semanticSimilarity(e,a);b>i&&(i=b)}if(i>=.6){if(!ah(g.text)){let a=new Set;for(let b of g.text.matchAll(/(?:\d+(?:\.\d+)?\s*(?:万元|亿元|元))/giu))a.add(b[0].replace(/\s+/gu,""));if(a.size>0&&[...a].filter(a=>!f.includes(a)).length>0){let a=Z(g,f);l.push({item:g,kind:b,bestSimilarity:i,hit:a.hit,missing:a.missing})}}continue}if(ah(g.text)){aj(f,g.text)||d.push({level:"info",severity:"warning",category:"evidence_coverage",owner:"llm",repairability:"llm_repairable",message:`商务条款定性响应:${b}“${g.text}”商务参数不要求落位技术标正文,定性响应句未检出(最佳语义相似度 ${i.toFixed(2)})`,suggestion:"商务条款按合同约定执行:技术标以“本工程…按合同约定…”定性响应句声明落实(不出现“按招标文件约定/要求”元语言前缀),商务参数(金额/比例/时限)保留在商务标与合同文件。"});continue}if(aa(g,f))continue;let m=Z(g,f);if(m.hit.length>0){l.push({item:g,kind:b,bestSimilarity:i,hit:m.hit,missing:m.missing});continue}d.push({level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"llm_repairable",message:`评分项要求未响应:${b}“${g.text}”在正文中零命中(最佳语义相似度 ${i.toFixed(2)})`,suggestion:`招标文件明确要求的${b}必须显性响应:在对应章节以投标人口吻补写“${g.text}”对应内容及配套保证措施(不得使用“按招标文件要求:”条幅前缀)。`})}if(l.length>0){let a=await X(l.map(a=>({text:a.item.text,missingAnchors:a.missing})),{signal:c.signal,diagnostics:c.diagnostics});for(let[b,c]of l.entries())a.get(b)||d.push({level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"llm_repairable",message:`评分项要求部分响应:${c.kind}“${c.item.text}”已命中“${c.hit.join("、")}”,但缺少“${c.missing.join("、")}”(最佳语义相似度 ${c.bestSimilarity.toFixed(2)})`,suggestion:`条款内全部关键数据与奖项必须逐项显性响应:在对应章节补写“${c.missing.join("、")}”对应内容(缺一即部分响应)。`})}if(b){let a=[...b.awardObjectives,...b.awardClauses].map(a=>a.text);if(a.length>0){let b=new Set;for(let a of f.matchAll(/[杯奖]/gu)){let c=f[(a.index||0)+1];if("奖"===a[0]&&void 0!==c&&/[励金惩罚项]/u.test(c))continue;let d=(a.index||0)+1,e=f.slice(Math.max(0,d-13),d-1),g=e.match(/(?:(|\(|\u201c)([\u4e00-\u9fa5]{2,6})$/u),h=g?g[1]:e.match(/[\u4e00-\u9fa5]{2,6}$/u)?.[0];if(!h)continue;let i=Y(h)+a[0];/^[\u4e00-\u9fa5]{2,7}$/u.test(i)&&b.add(i)}for(let c of b)!/优质工程|优良工程|样板工程|示范工程|文明工地|标准化工地/u.test(c)&&(a.some(a=>a.includes(c))||d.unshift({level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"llm_repairable",message:`奖项名称疑似杜撰/替换:正文出现“${c}”,不在招标文件奖项要求原文中(招标文件要求:${a.map(a=>a.slice(0,60)).join(";")})`,suggestion:`奖项名称必须与招标文件原文逐字一致:把正文“${c}”改为招标文件原文奖项名称,禁止替换、降级或省略;招标文件“确保/达到”类要求不得弱化为“争创/争取”。`}));if(a.some(a=>/确保|必须|须/u.test(a)))for(let c of b)a.some(a=>a.includes(c))&&RegExp(`(?:争创|争取|力争|争获)${c}`).test(f)&&d.unshift({level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"llm_repairable",message:`奖项承诺强度弱化:“${c}”前使用了争取类措辞(争创/争取/力争),招标文件要求为“确保/必须”级别`,suggestion:`招标文件“确保/达到”类等级要求不得弱化为“争创/争取”:把正文争取类措辞改为“确保${c}”并配套创优保证措施。`})}}return d.slice(0,8)}function ac(a){return a.trim().replace(/^#{2,4}\s+/u,"").replace(/^\d+(?:\.\d+)*[\s、.]+/u,"").trim()}function ad(a,b,c){let d="",e=0;for(let f of a){let a=ac(f.title);if(!a)continue;let g=c(b,a);g>e&&(e=g,d=a)}return d||ac(a[0]?.title||"")||void 0}async function ae(a,b,c,d={}){let e=[];if(!a)return e;let f=b.map(a=>ac(a.title)).filter(Boolean);if(0===f.length)return e;let g=S(a),h=await V(g.map(a=>({kind:a.kind,text:a.item.text})),{signal:d.signal,diagnostics:d.diagnostics});for(let[a,{kind:b,item:d}]of g.entries()){if(!1===h.get(a))continue;let g=R(d),i="",j=0;for(let a of f){let b=c(g,a);b>j&&(j=b,i=a)}j>=.45&&e.push({kind:b,item:d,chapterTitle:i,score:j})}return e}function af(a){if(!a)return[];let b=[];a.extracted&&b.push(`已从绑定资料结构化提取评分项要求(哈希 ${a.sourceHash?.slice(0,8)})`),a.awardObjectives.length&&b.push(`创优目标 ${a.awardObjectives.length} 条:${a.awardObjectives.map(a=>a.text).join("、")}`),a.specialQualityStandards.length&&b.push(`特殊质量标准 ${a.specialQualityStandards.length} 条`),a.awardClauses.length&&b.push(`奖项条款 ${a.awardClauses.length} 条`),a.greenBuildingGrade&&b.push(`绿色建筑等级:${a.greenBuildingGrade.text}`),a.smartSiteGrade&&b.push(`智慧工地等级:${a.smartSiteGrade.text}`),a.assemblyRate&&b.push(`装配率:${a.assemblyRate.text}`),a.systematicBenchmarks.length&&b.push(`体系基准 ${a.systematicBenchmarks.length} 条:${a.systematicBenchmarks.map(a=>a.text).join("、")}`);let c=a.frontScheduleClauses.filter(a=>!(0,j.dn)(a.text)&&!(0,i.DI)(a.text));return c.length&&b.push(`前附表响应条款 ${c.length} 条:${c.map(a=>a.text).slice(0,8).join("、")}`),a.dateFabricationProhibited&&b.push("禁编日期:以开工令为准"),a.extracted||b.push("评分项要求未提取(无绑定资料或模型不可用),零响应检测跳过"),b}let ag=/履约保证金|质量保证金|保证金账户|中标金额|进度款|工程款|付款|结清|结算|违约金|贷款市场报价利率|LPR|最高投标限价|工程结算价款|预付款|支付担保|保函|暂列金额|暂估价|结算核减|造价咨询费|工程量.*异议|增值税|异地纳税人|报价明细|综合单价|清单合价|预留金|投标报价|异常低价|评标基准价/u;function ah(a){return ag.test(a)}let ai=[{re:/违约金|贷款市场报价利率|LPR/u,keyword:"违约金",sentence:"本工程工期延误违约金按合同约定条款执行,进度计划与纠偏措施按进度管理制度落实。"},{re:/质量保证金/u,keyword:"质量保证金",sentence:"本工程质量保证金按合同约定的金额、担保方式与退还时限执行,可采用电子保函或纸质保函等担保方式替代。"},{re:/保证金/u,keyword:"保证金",sentence:"本工程履约保证金按合同约定的金额、提交期限与退还时限执行,可按约定以保函形式替代。"},{re:/预付款/u,keyword:"预付款",sentence:"本工程预付款的支付、扣回与使用按合同约定执行,专款用于施工准备。"},{re:/支付担保/u,keyword:"支付担保",sentence:"本工程发包人工程款支付担保按合同约定执行,担保办结后我方按约组织进场施工。"},{re:/扬尘/u,keyword:"扬尘",sentence:"本工程扬尘污染防治费用与建筑工人实名制管理费用按合同约定列入费用计划并专款专用。"},{re:/水电费/u,keyword:"水电费",sentence:"本工程水电费用由我方承担,工程结算时按合同约定在结算价中核算处理,缴费与结算资料按合同约定办理。"},{re:/最高投标限价/u,keyword:"最高投标限价",sentence:"本工程最高投标限价按合同约定执行,相关费用列入计划并专款专用。"},{re:/暂列金额|暂估价/u,keyword:"暂列金额",sentence:"本工程暂列金额按合同约定计入投标总价并按规定计税,暂列金额的使用范围与计价规则按合同约定执行。"},{re:/核减|造价咨询费/u,keyword:"核减",sentence:"本工程竣工结算审核核减额与报审金额的核对、造价咨询费承担方式按合同约定执行,结算编制与报审按合同约定时限办理。"},{re:/清单.*异议|工程量.*错误|异议.*清单/u,keyword:"异议",sentence:"本工程开工前完成工程量清单核对,对清单工程量中的错误在异议截止日期前提出异议并附计算依据。"},{re:/注册地/u,keyword:"注册地",sentence:"本工程我方注册地及纳税人身份按合同约定执行,异地提供建筑服务时在建筑服务发生地预缴增值税,计税资料与申报口径按合同约定办理。"},{re:/增值税|纳税人/u,keyword:"增值税",sentence:"本工程按合同约定的计税方法执行异地纳税人增值税相关规定,计税资料与申报口径按合同约定办理。"},{re:/结清|结算|付款|进度款|工程款/u,keyword:"结算",sentence:"本工程进度款、竣工结算款与最终结清款的支付审批时限按合同约定执行。"},{re:/投标报价|报价明细|综合单价|清单合价|预留金|异常低价|评标基准价/u,keyword:"投标报价",sentence:"本工程投标报价已覆盖招标范围的全部工作内容,施工期间发生的工程内容均按合同约定的计量计价规则执行。"}];function aj(a,b){let c=ai.find(a=>a.re.test(b))?.keyword??"商务条款",d=a.indexOf(c);for(;d>=0;){if(a.slice(Math.max(0,d-48),d+c.length+48).includes("按合同约定"))return!0;d=a.indexOf(c,d+c.length)}return!1}function ak(a){let b=a.text.trim();if(ah(b))return ai.find(a=>a.re.test(b))?.sentence??"本工程相关商务条款按合同约定执行。";let c=/(?:要求|等级|标准)[::]\s*无\s*$/u.test(b),d=b.replace(/\.\.\.+|…+$/u,"");if(c)return`${_(d)}。该项无强制要求,施工按现行国家及地方相关标准执行。`;let e=/[。;;!?]$/u.test(d)?d:`${d}。`;return`${_(e)}${an(b)}`}async function al(a){let{chapters:b,model:c,similarity:d}=a,e=S(c);if(0===e.length)return{fixedCount:0,details:[]};let f=await ae(c,b,d,{signal:a.signal,diagnostics:a.diagnostics});if(0===f.length&&0===b.length)return{fixedCount:0,details:[]};let g=new Map(f.map(a=>[a.item,a])),h=await V(e.map(a=>({kind:a.kind,text:a.item.text})),{signal:a.signal,diagnostics:a.diagnostics}),i=b.map(a=>a.content).join("\n").replace(/\s+/gu,""),j=0,k=[];for(let[a,{kind:c,item:f}]of e.entries()){if(!1===h.get(a))continue;let e=g.get(f);if(!e){let a=ad(b,R(f),d);a&&(e={kind:c,item:f,chapterTitle:a,score:-1})}if(!e)continue;if(ah(f.text)){if(aj(i,f.text))continue}else if(aa(f,i))continue;let l=b.find(a=>ac(a.title)===e.chapterTitle);if(!l)continue;let m=ak(f);l.content=`${l.content.replace(/\s+$/u,"")}
210
+ ${(0,i.TP)("以上为系统提取的招标要求全局口径:本段提示词文字本身(编号、括号说明等元话语)禁止复述进正文")}`}function H(a){if(0===a.length)return"";let b={respond:"显性响应",comply:"全文遵守",qualitative:"定性响应"};return["【本章必须处理的招标要求(蓝图分配全量,逐条响应/遵守;零处理即评标失分)】",...a.map(a=>{let c=a.sources.find(a=>a.file)?.file;return`- [${b[a.policy]}] ${a.text}${c?`(来源:${c})`:""}`}),(0,i.TP)("以上为系统提取的招标要求原文:实质内容(奖项名称/等级指标/数字参数)必须显性落位;本段提示词文字本身(编号、括号说明等元话语)禁止复述进正文")].join("\n")}function I(a,b,c){let d=[];if(0===a.length||0===b.length)return{assignments:d,lowConfidenceCount:0};let e=b.map(a=>n(a.title)).filter(Boolean);if(0===e.length)return{assignments:d,lowConfidenceCount:0};let f=0;for(let b of a){let a=F(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}}function J(a,b){let c=e.join((0,g.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 K={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 L(a,b={}){let c=a.filter(a=>a.text.trim());if(0===c.length)return new Map;let d=await (0,f.bb)([(0,k.y4)("你是招标要求条款锚点关系判定器。"),'对每条条款判定其锚点之间的关系:\n- alternative=true:条款锚点为"或/及/任选其一"关系(如"省级或国家级奖项""A、B、C任选"),满足任一锚点即算完整响应\n- alternative=false:条款锚点必须全部满足(并列承诺、金额与奖项共存条款),缺任一锚点即部分响应\n只输出 JSON,不得输出其他内容。'].join("\n"),c.map((a,b)=>`${b+1}. 条款:${a.text}
211
+ 未命中锚点:${a.missingAnchors.join("、")||"(无)"}`).join("\n"),{maxTokens:1e3,temperature:0,signal:b.signal,diagnostics:b.diagnostics,schema:K,taskKind:"structuredGeneration"});if(!d?.results?.length)return new Map(c.map((a,b)=>[b,!1]));let e=new Map;for(let a of d.results)"number"==typeof a.index&&e.set(a.index,!0===a.alternative);return new Map(c.map((a,b)=>[b,e.get(b)??!1]))}function M(a,b,c){let d=a.text.replace(/\s+/gu,""),e=new Set;for(let b of a.coreTerms){let a=b.replace(/\s+/gu,"");a.length>=2&&e.add(a)}if(!c?.skipNumericAnchors)for(let a of d.matchAll(/(?:\d+(?:\.\d+)?\s*(?:%|%|天|日|万元|亿元|元|米|m|M|mm|毫米|层|年|个|月|周|小时|分钟|项|处|台|套|辆|人|家|次|遍|道|吨|kPa|MPa))/giu))e.add(a[0].replace(/\s+/gu,""));for(let a of d.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)&&e.add(b)}let f=[],g=[];for(let a of e)(b.includes(a)?f:g).push(a);return{total:e.size,hit:f,missing:g}}function N(a,b){let c=a.replace(/([^)]*)|\([^)]*\)/gu,"").split(/[,。;、,;\n]/u).map(a=>a.replace(/[「」“”"'`\s]/gu,"").trim()).filter(a=>a.length>=6),d=c.filter(a=>!b.includes(a));return{total:c.length,missing:d}}function O(a){return a.replace(/投标人本单位|承包人本单位/gu,"本公司").replace(/本招标项目/gu,"本项目").replace(/(?:承包人|发包人)认为视同/gu,"视为").replace(/承包人|投标人|施工单位|承包方|中标人|承包单位|投标单位/gu,"我方")}function P(a,b){let c=M(a,b);if(c.total>0&&0===c.missing.length)return!0;let d=N(a.text,b);if(d.total>0&&0===d.missing.length)return!0;let e=N(O(a.text),b);return!!(e.total>0)&&0===e.missing.length}let Q=/履约保证金|质量保证金|保证金账户|中标金额|进度款|工程款|付款|结清|结算|违约金|贷款市场报价利率|LPR|最高投标限价|工程结算价款|预付款|支付担保|保函|暂列金额|暂估价|结算核减|造价咨询费|工程量.*异议|增值税|异地纳税人|报价明细|综合单价|清单合价|预留金|投标报价|异常低价|评标基准价/u;function R(a){return Q.test(a)}let S=[{re:/违约金|贷款市场报价利率|LPR/u,keyword:"违约金",sentence:"本工程工期延误违约金按合同约定条款执行,进度计划与纠偏措施按进度管理制度落实。"},{re:/质量保证金/u,keyword:"质量保证金",sentence:"本工程质量保证金按合同约定的金额、担保方式与退还时限执行,可采用电子保函或纸质保函等担保方式替代。"},{re:/保证金/u,keyword:"保证金",sentence:"本工程履约保证金按合同约定的金额、提交期限与退还时限执行,可按约定以保函形式替代。"},{re:/预付款/u,keyword:"预付款",sentence:"本工程预付款的支付、扣回与使用按合同约定执行,专款用于施工准备。"},{re:/支付担保/u,keyword:"支付担保",sentence:"本工程发包人工程款支付担保按合同约定执行,担保办结后我方按约组织进场施工。"},{re:/扬尘/u,keyword:"扬尘",sentence:"本工程扬尘污染防治费用与建筑工人实名制管理费用按合同约定列入费用计划并专款专用。"},{re:/水电费/u,keyword:"水电费",sentence:"本工程水电费用由我方承担,工程结算时按合同约定在结算价中核算处理,缴费与结算资料按合同约定办理。"},{re:/最高投标限价/u,keyword:"最高投标限价",sentence:"本工程最高投标限价按合同约定执行,相关费用列入计划并专款专用。"},{re:/暂列金额|暂估价/u,keyword:"暂列金额",sentence:"本工程暂列金额按合同约定计入投标总价并按规定计税,暂列金额的使用范围与计价规则按合同约定执行。"},{re:/核减|造价咨询费/u,keyword:"核减",sentence:"本工程竣工结算审核核减额与报审金额的核对、造价咨询费承担方式按合同约定执行,结算编制与报审按合同约定时限办理。"},{re:/清单.*异议|工程量.*错误|异议.*清单/u,keyword:"异议",sentence:"本工程开工前完成工程量清单核对,对清单工程量中的错误在异议截止日期前提出异议并附计算依据。"},{re:/注册地/u,keyword:"注册地",sentence:"本工程我方注册地及纳税人身份按合同约定执行,异地提供建筑服务时在建筑服务发生地预缴增值税,计税资料与申报口径按合同约定办理。"},{re:/增值税|纳税人/u,keyword:"增值税",sentence:"本工程按合同约定的计税方法执行异地纳税人增值税相关规定,计税资料与申报口径按合同约定办理。"},{re:/结清|结算|付款|进度款|工程款/u,keyword:"结算",sentence:"本工程进度款、竣工结算款与最终结清款的支付审批时限按合同约定执行。"},{re:/投标报价|报价明细|综合单价|清单合价|预留金|异常低价|评标基准价/u,keyword:"投标报价",sentence:"本工程投标报价已覆盖招标范围的全部工作内容,施工期间发生的工程内容均按合同约定的计量计价规则执行。"}];function T(a,b){let c=S.find(a=>a.re.test(b))?.keyword??"商务条款",d=a.indexOf(c);for(;d>=0;){if(a.slice(Math.max(0,d-48),d+c.length+48).includes("按合同约定"))return!0;d=a.indexOf(c,d+c.length)}return!1}async function U(a){let b=[];if(0===a.entries.length)return b;let c=a.markdown,d=c.replace(/\s+/gu,""),e=[/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],f=()=>e.filter(a=>a.test(c)).length,g=c.split(/\n/u).filter(a=>/^#{2,4}\s/u.test(a.trim())).map(a=>n(a)).filter(Boolean),h=a.bodyTexts&&a.bodyTexts.length>0?[...g,...a.bodyTexts]:g.length>0?g:[c.slice(0,2e3)],i=[];for(let c of a.entries){let e=c.category;if("comply"===c.policy)continue;if("qualitative"===c.policy||R(c.text)){T(d,c.text)||b.push({level:"info",severity:"warning",category:"evidence_coverage",owner:"llm",repairability:"llm_repairable",message:`商务条款定性响应:${e}“${c.text}”商务参数不要求落位技术标正文,定性响应句未检出`,suggestion:"商务条款按合同约定执行:技术标以“本工程…按合同约定…”定性响应句声明落实(不出现“按招标文件约定/要求”元语言前缀),商务参数(金额/比例/时限)保留在商务标与合同文件。"});continue}if(/六个百分百|扬尘治理/u.test(c.text)&&f()>=4)continue;let g=F(c),j=0;for(let b of h){let c=a.semanticSimilarity(g,b);c>j&&(j=c)}if(j>=.6){let a=new Set;for(let b of c.text.matchAll(/(?:\d+(?:\.\d+)?\s*(?:万元|亿元|元))/giu))a.add(b[0].replace(/\s+/gu,""));if(a.size>0&&[...a].filter(a=>!d.includes(a)).length>0){let a=M(c,d);i.push({item:c,kind:e,bestSimilarity:j,hit:a.hit,missing:a.missing})}continue}if(P(c,d))continue;let k=M(c,d);if(k.hit.length>0){i.push({item:c,kind:e,bestSimilarity:j,hit:k.hit,missing:k.missing});continue}b.push({level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"llm_repairable",message:`招标要求未响应:${e}“${c.text}”在正文中零命中(最佳语义相似度 ${j.toFixed(2)})`,suggestion:`招标文件明确要求的${e}必须显性响应:在对应章节以投标人口吻补写“${c.text}”对应内容及配套保证措施(不得使用“按招标文件要求:”条幅前缀)。`})}if(i.length>0){let c=await L(i.map(a=>({text:a.item.text,missingAnchors:a.missing})),{signal:a.signal,diagnostics:a.diagnostics});for(let[a,d]of i.entries())c.get(a)||b.push({level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"llm_repairable",message:`招标要求部分响应:${d.kind}“${d.item.text}”已命中“${d.hit.join("、")}”,但缺少“${d.missing.join("、")}”(最佳语义相似度 ${d.bestSimilarity.toFixed(2)})`,suggestion:`条款内全部关键数据与奖项必须逐项显性响应:在对应章节补写“${d.missing.join("、")}”对应内容(缺一即部分响应)。`})}return b}function V(a){let b=a.text.trim();if(R(b))return S.find(a=>a.re.test(b))?.sentence??"本工程相关商务条款按合同约定执行。";let c=/(?:要求|等级|标准)[::]\s*无\s*$/u.test(b),d=b.replace(/\.\.\.+|…+$/u,"");if(c)return`${O(d)}。该项无强制要求,施工按现行国家及地方相关标准执行。`;let e=/[。;;!?]$/u.test(d)?d:`${d}。`;return`${O(e)}${W(b)}`}function W(a){if(/分包/u.test(a))return"本工程全部施工任务由我公司项目部自行组织实施,严禁违法分包、转包及挂靠行为。";if(/总价合同|总价包干/u.test(a))return"本工程合同价款按总价包干执行,除合同约定调整情形外不予调整。";if(/隐蔽工程/u.test(a))return"本工程隐蔽验收按约定时限提前通知监理单位参加检查。";if(/预付款/u.test(a))return"本工程预付款的支付、扣回与使用按合同约定执行,专款用于施工准备。";if(/扬尘/u.test(a))return"本工程扬尘污染防治费用按合同约定列入计划并专款专用。";if(/工期延误|违约金/u.test(a))return"本工程工期与违约金管理按合同约定执行,进度计划与纠偏措施按进度管理制度落实。";if(/保证金/u.test(a))return"本工程保证金缴纳、退还与保函替代按合同约定执行。";if(/更换主要施工管理人员|更换项目经理/u.test(a))return"本工程主要施工管理人员保持稳定,确需更换时提前按合同约定提交书面申请并获发包人书面同意后执行。";if(/农民工工资专用账户|农民工工资/u.test(a))return"本工程农民工工资专用账户按合同约定设立并专款专用,实名制管理与工资支付保障按劳动力管理制度落实。";if(/支付担保/u.test(a))return"本工程发包人工程款支付担保按合同约定执行,担保办结后我方按约组织进场施工。";if(/安全生产|事故/u.test(a))return"本工程安全生产无事故目标与带班检查频次按合同约定执行,现场安全管理按安全检查与整改销项制度落实。";if(/工程报表|周报/u.test(a))return"本工程每月25日前报送工程报表与下月计划、周例会前一天报送周报,由资料员按期编制报送。";if(/竣工资料|竣工结算/u.test(a))return"本工程竣工资料套数与移交时限按合同约定执行,竣工结算申请与审批按约定时限办理。";if(/缺陷责任期|保修/u.test(a))return"本工程缺陷责任期与保修响应时限按合同约定执行,保修期内接到通知按时限到场修复。";if(/工期总日历天数/u.test(a))return"本工程工期天数计算以工期总日历天数为准,进度计划按总日历天数编制并动态校核。";if(/可调整价差|市场价格波动|价格调整|调差/u.test(a))return"本工程价格调整范围按《可调整价差人工和主要材料一览表》执行:表内人工与主要材料按合同约定调差,表外材料价格风险由我方承担,调差申请与审批按合同专用条款办理。";if(/注册建造师|建造师数量|资质标准/u.test(a))return"项目部按资质标准配置市政公用工程专业注册建造师,数量满足招标要求,注册建造师证书注册于本公司并在岗履职。";if(/养护等级|养护期|绿化养护/u.test(a))return"本工程绿化养护执行合同约定的养护等级与养护期,养护期内按养护方案落实浇水、修剪、施肥、除虫等作业并留存养护记录。";if(/视同|漏报|没有报价|未报价/u.test(a))return"本工程对清单项目逐项复核报价,未报价项目费用按合同约定执行,不重复计取。";let b=/^([^::]{2,24})[::]/u.exec(a)?.[1];return b&&!/承包人|发包人|招标人/u.test(b)?`本工程${b}按合同约定执行,具体安排见对应章节。`:""}async function X(a){let{chapters:b,assignments:c}=a;if(0===c.length||0===b.length)return{fixedCount:0,details:[]};let d=b.map(a=>a.content).join("\n").replace(/\s+/gu,""),e=0,f=[];for(let a of c){let{entry:c}=a;if("comply"===c.policy)continue;if("qualitative"===c.policy||R(c.text)){if(T(d,c.text))continue}else if(P(c,d))continue;let g=b.find(b=>n(b.title)===a.chapterTitle);if(!g)continue;let h=V(c);g.content=`${g.content.replace(/\s+$/u,"")}
219
212
 
220
- ${m}`,i+=m.replace(/\s+/gu,""),j+=1,k.push(`${c}“${f.text.slice(0,28)}${f.text.length>28?"…":""}” → ${e.chapterTitle}${e.score<0?"(兜底路由)":""}`)}return{fixedCount:j,details:k.slice(0,6)}}async function am(a){let{chapters:b,model:c,similarity:d}=a,e=S(c);if(0===e.length||!a.markdown.trim())return{markdown:a.markdown,fixedCount:0,details:[]};let f=new Map((await ae(c,b,d,{signal:a.signal,diagnostics:a.diagnostics})).map(a=>[a.item,a])),g=await V(e.map(a=>({kind:a.kind,text:a.item.text})),{signal:a.signal,diagnostics:a.diagnostics}),h=a.markdown.split(/\r?\n/u),i=h.join("\n").replace(/\s+/gu,""),j=0,k=[];for(let[a,{kind:c,item:l}]of e.entries()){if(!1===g.get(a))continue;let e=f.get(l);if(!e){let a=ad(b,R(l),d);a&&(e={kind:c,item:l,chapterTitle:a,score:-1})}if(!e)continue;if(ah(l.text)){if(aj(i,l.text))continue}else if(aa(l,i))continue;let m=function(a,b){let c,d,e=b.replace(/\s+/gu,"");if(!e)return -1;for(let b=0;b<a.length;b+=1){let f=/^(#{2,6})\s+(.+)$/u.exec(a[b].trim());if(!f)continue;let g=ac(a[b].trim()).replace(/\s+/gu,"");if(g){if(g===e){c={index:b,level:f[1].length};break}!d&&(g.includes(e)||e.includes(g))&&(d={index:b,level:f[1].length})}}let f=c??d;if(!f)return -1;for(let b=f.index+1;b<a.length;b+=1){let c=/^(#{1,6})\s+/u.exec(a[b].trim());if(c&&c[1].length<=f.level)return b}return a.length}(h,e.chapterTitle);if(m<0)continue;let n=ak(l);h=[...h.slice(0,m),"",n,"",...h.slice(m)],i+=n.replace(/\s+/gu,"");let o=b.find(a=>ac(a.title)===e.chapterTitle);o&&(o.content=`${o.content.replace(/\s+$/u,"")}
213
+ ${h}`,d+=h.replace(/\s+/gu,""),e+=1,f.push(`${c.category}“${c.text.slice(0,28)}${c.text.length>28?"…":""}” → ${a.chapterTitle}${a.lowConfidence?"(低置信分配)":""}`)}return{fixedCount:e,details:f}}async function Y(a){let{chapters:b,assignments:c}=a;if(0===c.length||!a.markdown.trim())return{markdown:a.markdown,fixedCount:0,details:[]};let d=a.markdown.split(/\r?\n/u),e=d.join("\n").replace(/\s+/gu,""),f=0,g=[];for(let a of c){let{entry:c}=a;if("comply"===c.policy)continue;if("qualitative"===c.policy||R(c.text)){if(T(e,c.text))continue}else if(P(c,e))continue;let h=function(a,b){let c,d,e=b.replace(/\s+/gu,"");if(!e)return -1;for(let b=0;b<a.length;b+=1){let f=/^(#{2,6})\s+(.+)$/u.exec(a[b].trim());if(!f)continue;let g=n(a[b].trim()).replace(/\s+/gu,"");if(g){if(g===e){c={index:b,level:f[1].length};break}!d&&(g.includes(e)||e.includes(g))&&(d={index:b,level:f[1].length})}}let f=c??d;if(!f)return -1;for(let b=f.index+1;b<a.length;b+=1){let c=/^(#{1,6})\s+/u.exec(a[b].trim());if(c&&c[1].length<=f.level)return b}return a.length}(d,a.chapterTitle);if(h<0)continue;let i=V(c);d=[...d.slice(0,h),"",i,"",...d.slice(h)],e+=i.replace(/\s+/gu,"");let j=b.find(b=>n(b.title)===a.chapterTitle);j&&(j.content=`${j.content.replace(/\s+$/u,"")}
221
214
 
222
- ${n}`),j+=1,k.push(`${c}“${l.text.slice(0,28)}${l.text.length>28?"…":""}” → ${e.chapterTitle}${e.score<0?"(兜底路由)":""}`)}return{markdown:h.join("\n"),fixedCount:j,details:k.slice(0,6)}}function an(a){if(/分包/u.test(a))return"本工程全部施工任务由我公司项目部自行组织实施,严禁违法分包、转包及挂靠行为。";if(/总价合同|总价包干/u.test(a))return"本工程合同价款按总价包干执行,除合同约定调整情形外不予调整。";if(/隐蔽工程/u.test(a))return"本工程隐蔽验收按约定时限提前通知监理单位参加检查。";if(/预付款/u.test(a))return"本工程预付款的支付、扣回与使用按合同约定执行,专款用于施工准备。";if(/扬尘/u.test(a))return"本工程扬尘污染防治费用按合同约定列入计划并专款专用。";if(/工期延误|违约金/u.test(a))return"本工程工期与违约金管理按合同约定执行,进度计划与纠偏措施按进度管理制度落实。";if(/保证金/u.test(a))return"本工程保证金缴纳、退还与保函替代按合同约定执行。";if(/更换主要施工管理人员|更换项目经理/u.test(a))return"本工程主要施工管理人员保持稳定,确需更换时提前按合同约定提交书面申请并获发包人书面同意后执行。";if(/农民工工资专用账户|农民工工资/u.test(a))return"本工程农民工工资专用账户按合同约定设立并专款专用,实名制管理与工资支付保障按劳动力管理制度落实。";if(/支付担保/u.test(a))return"本工程发包人工程款支付担保按合同约定执行,担保办结后我方按约组织进场施工。";if(/安全生产|事故/u.test(a))return"本工程安全生产无事故目标与带班检查频次按合同约定执行,现场安全管理按安全检查与整改销项制度落实。";if(/工程报表|周报/u.test(a))return"本工程每月25日前报送工程报表与下月计划、周例会前一天报送周报,由资料员按期编制报送。";if(/竣工资料|竣工结算/u.test(a))return"本工程竣工资料套数与移交时限按合同约定执行,竣工结算申请与审批按约定时限办理。";if(/缺陷责任期|保修/u.test(a))return"本工程缺陷责任期与保修响应时限按合同约定执行,保修期内接到通知按时限到场修复。";if(/工期总日历天数/u.test(a))return"本工程工期天数计算以工期总日历天数为准,进度计划按总日历天数编制并动态校核。";if(/可调整价差|市场价格波动|价格调整|调差/u.test(a))return"本工程价格调整范围按《可调整价差人工和主要材料一览表》执行:表内人工与主要材料按合同约定调差,表外材料价格风险由我方承担,调差申请与审批按合同专用条款办理。";if(/注册建造师|建造师数量|资质标准/u.test(a))return"项目部按资质标准配置市政公用工程专业注册建造师,数量满足招标要求,注册建造师证书注册于本公司并在岗履职。";if(/养护等级|养护期|绿化养护/u.test(a))return"本工程绿化养护执行合同约定的养护等级与养护期,养护期内按养护方案落实浇水、修剪、施肥、除虫等作业并留存养护记录。";if(/视同|漏报|没有报价|未报价/u.test(a))return"本工程对清单项目逐项复核报价,未报价项目费用按合同约定执行,不重复计取。";let b=/^([^::]{2,24})[::]/u.exec(a)?.[1];return b&&!/承包人|发包人|招标人/u.test(b)?`本工程${b}按合同约定执行,具体安排见对应章节。`:""}function ao(a){let b=a.split(/\r?\n/u),c=[],d=0,e=[];for(let a of b){let b=a.trim();if(!b.includes("本施工组织设计已按上述条款要求逐项落实执行")){c.push(a);continue}let f=/[::]([^。;;\n]{8,90})/u.exec(b),g=f?.[1]?.trim();if(!g){c.push(a);continue}let h=an(g);if(!h){c.push(a);continue}c.push(b.replace(/本施工组织设计已按上述条款要求逐项落实执行。?/g,h)),d+=1,e.push(g.slice(0,18))}return{markdown:c.join("\n"),fixedCount:d,details:e}}function ap(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]}${_(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 aq(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)||i.includes("按合同约定")))){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}}},64406:(a,b,c)=>{c.d(b,{eS:()=>e.eS,Ih:()=>e.Ih,Fr:()=>e.Fr,fE:()=>K,gk:()=>J,u2:()=>e.u2,cT:()=>e.cT,Rv:()=>e.Rv,s3:()=>e.s3,dF:()=>e.dF,Vw:()=>p,VZ:()=>z,xR:()=>e.xR,mC:()=>e.Ve,iy:()=>e.iy,H:()=>e.H,vH:()=>e.vH,cl:()=>e.cl,ub:()=>e.ub,CJ:()=>e.CJ,KE:()=>e.KE,fQ:()=>e.fQ,z4:()=>d.z4,bq:()=>e.bq,LA:()=>e.LA,hI:()=>d.hI,Dq:()=>d.Dq,Pt:()=>d.Pt,GG:()=>d.GG,P3:()=>d.P3,hu:()=>e.hu,cf:()=>e.cf,a8:()=>e.a8,WY:()=>e.WY,$h:()=>L,SZ:()=>Z,zo:()=>A,fK:()=>ai,y4:()=>w,uL:()=>x,JF:()=>r,GI:()=>aa,EJ:()=>t,mG:()=>E,xp:()=>S,zj:()=>X,N$:()=>C,Co:()=>W,r_:()=>ah,BR:()=>u,Fd:()=>s,Qc:()=>l,kp:()=>ag,Pl:()=>v,EN:()=>M,K2:()=>N,ir:()=>Q,lv:()=>U,yV:()=>B,_D:()=>af,Y4:()=>m,qz:()=>P,ON:()=>e.ON,ex:()=>e.N$,x5:()=>e.x5,m6:()=>e.m6,jP:()=>e.jP,iY:()=>e.iY,cJ:()=>e.cJ,br:()=>q,nm:()=>e.nm,Et:()=>e.Et,l4:()=>e.l4,y2:()=>e.y2,AD:()=>e.AD,cv:()=>e.cv,fg:()=>e.fg,Xc:()=>e.Xc,rA:()=>e.rA,zP:()=>e.zP,g4:()=>o,gD:()=>n,mB:()=>e.mB,YN:()=>e.YN,sn:()=>e.sn,$$:()=>e.$$,Tz:()=>e.Tz,qj:()=>D,Vc:()=>I,lR:()=>G,qG:()=>H,QM:()=>F,ek:()=>e.ek,r8:()=>e.r8,dc:()=>d.dc,IJ:()=>e.IJ});var d=c(12863),e=c(35547),f=c(22157),g=c(98281),h=c(27625),i=c(30949);let j=[[/高压旋喷桩/gu,"土钉墙"],[/旋喷桩/gu,"土钉墙"],[/钻孔灌注桩/gu,"土钉墙"],[/咬合桩/gu,"土钉墙"],[/地下连续墙/gu,"土钉墙"],[/搅拌桩/gu,"土钉墙"],[/灌注桩/gu,"土钉墙"],[/支护桩/gu,"土钉墙"],[/排桩/gu,"土钉墙"],[/冠梁/gu,"坡顶"]],k=/高压旋喷桩机|旋喷桩机|搅拌桩机|三轴搅拌|成槽机|灌注桩机/u;function l(a){let b=new Map;for(let c of a.matchAll(e.MQ)){let a=c[1].trim(),d=a.replace(/[\d,,.。%%㎡m2²]/gu,"").slice(0,16);if(d.length<10)continue;let e=b.get(d)||[],f=(c.index??0)+c[0].indexOf(c[1]);e.push({sentence:a,start:f,end:f+c[1].length}),b.set(d,e)}let c=[];for(let a of b.values()){if(a.length<3)continue;let b=a[0].sentence,d=b.length;for(let c of a.slice(1)){let a=0,e=Math.min(d,c.sentence.length);for(;a<e&&b[a]===c.sentence[a];)a+=1;d=a}let e=b.slice(0,d).lastIndexOf(":"),f=b.slice(0,e>=0?e+1:d);if(!(f.length<4))for(let b=1;b<a.length;b+=1){let d=a[b],e=d.sentence.slice(f.length).trim();e.length<10||c.push({start:d.start,end:d.end,replacement:e})}}if(0===c.length)return{markdown:a,fixedCount:0,details:[]};let d=J(a,c.map(a=>({...a,detail:"段首固定开场剥离"})));return{markdown:d.markdown,fixedCount:d.fixedCount,details:[`段首固定开场剥离 ${d.fixedCount} 处`]}}function m(a){let b=a,c=0;for(let[a,d]of[[/:\s*:/gu,":"],[/;:/gu,";"],[/。:/gu,"。"],[/::/gu,":"],[/。;/gu,"。"],[/;。/gu,"。"],[/。,/gu,"。"],[/,。/gu,"。"],[/、。/gu,"。"],[/、;/gu,";"],[/、,/gu,","],[/,、/gu,","],[/;、/gu,";"],[/。{2,}/gu,"……"]]){let e=b;b=b.replace(a,d),c+=(e.match(RegExp(a.source,"gu"))||[]).length}return b===a?{markdown:a,fixedCount:0,details:[]}:{markdown:b,fixedCount:c,details:[`截断句残留清洗 ${c} 处`]}}function n(a,b,c=3){let d=b,e=0;for(let b=0;b<c;b+=1){let b=a(d);if(0===b.fixedCount)break;d=b.markdown,e+=b.fixedCount}return{markdown:d,fixedCount:e}}function o(a,b,c=3){let d=b,e=0;for(let b=0;b<c;b+=1){let b=0;for(let c of a){let a=c(d);0!==a.fixedCount&&(d=a.markdown,b+=a.fixedCount)}if(0===b)break;e+=b}return{markdown:d,fixedCount:e}}function p(a){return a.replace(e.Ih,"$1")}function q(a){let b=a.split(/\r?\n/u),c=[],d=0;for(let a of b){let b=a.trim(),e=(c[c.length-1]??"").trimEnd();if(b&&!/^\|/u.test(b)&&b.endsWith("|")&&1===(b.match(/\|/gu)||[]).length&&!/^#{1,6}\s/u.test(b)&&g.w7.test(e)){let a=b.slice(0,b.lastIndexOf("|")).trim(),f=e.slice(0,e.lastIndexOf("|")).trimEnd(),g=/[,。;、:]$/u.test(f)?"":" ";c[c.length-1]=`${f}${g}${a} |`,d+=1;continue}c.push(a)}return{markdown:c.join("\n"),fixedCount:d}}function r(a){let b=a,c=0,d=[];for(let{re:a,group:f}of[{re:RegExp(`((?:${e.mC})[^。;;
215
+ ${i}`),f+=1,g.push(`${c.category}“${c.text.slice(0,28)}${c.text.length>28?"…":""}” → ${a.chapterTitle}${a.lowConfidence?"(低置信分配)":""}`)}return{markdown:d.join("\n"),fixedCount:f,details:g}}function Z(a){let b=a.split(/\r?\n/u),c=[],d=0,e=[];for(let a of b){let b=a.trim();if(!b.includes("本施工组织设计已按上述条款要求逐项落实执行")){c.push(a);continue}let f=/[::]([^。;;\n]{8,90})/u.exec(b),g=f?.[1]?.trim();if(!g){c.push(a);continue}let h=W(g);if(!h){c.push(a);continue}c.push(b.replace(/本施工组织设计已按上述条款要求逐项落实执行。?/g,h)),d+=1,e.push(g.slice(0,18))}return{markdown:c.join("\n"),fixedCount:d,details:e}}function $(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]}${O(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 _(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)||i.includes("按合同约定")))){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}}},64406:(a,b,c)=>{c.d(b,{eS:()=>e.eS,Ih:()=>e.Ih,Fr:()=>e.Fr,fE:()=>K,gk:()=>J,u2:()=>e.u2,cT:()=>e.cT,Rv:()=>e.Rv,s3:()=>e.s3,dF:()=>e.dF,Vw:()=>p,VZ:()=>z,xR:()=>e.xR,mC:()=>e.Ve,iy:()=>e.iy,H:()=>e.H,vH:()=>e.vH,cl:()=>e.cl,ub:()=>e.ub,CJ:()=>e.CJ,KE:()=>e.KE,fQ:()=>e.fQ,z4:()=>d.z4,bq:()=>e.bq,LA:()=>e.LA,hI:()=>d.hI,Dq:()=>d.Dq,Pt:()=>d.Pt,GG:()=>d.GG,P3:()=>d.P3,hu:()=>e.hu,cf:()=>e.cf,a8:()=>e.a8,WY:()=>e.WY,$h:()=>L,SZ:()=>Z,zo:()=>A,fK:()=>ai,y4:()=>w,uL:()=>x,JF:()=>r,GI:()=>aa,EJ:()=>t,mG:()=>E,xp:()=>S,zj:()=>X,N$:()=>C,Co:()=>W,r_:()=>ah,BR:()=>u,Fd:()=>s,Qc:()=>l,kp:()=>ag,Pl:()=>v,EN:()=>M,K2:()=>N,ir:()=>Q,lv:()=>U,yV:()=>B,_D:()=>af,Y4:()=>m,qz:()=>P,ON:()=>e.ON,ex:()=>e.N$,x5:()=>e.x5,m6:()=>e.m6,jP:()=>e.jP,iY:()=>e.iY,cJ:()=>e.cJ,br:()=>q,nm:()=>e.nm,Et:()=>e.Et,l4:()=>e.l4,y2:()=>e.y2,AD:()=>e.AD,cv:()=>e.cv,fg:()=>e.fg,Xc:()=>e.Xc,rA:()=>e.rA,zP:()=>e.zP,g4:()=>o,gD:()=>n,mB:()=>e.mB,YN:()=>e.YN,sn:()=>e.sn,$$:()=>e.$$,Tz:()=>e.Tz,qj:()=>D,Vc:()=>I,lR:()=>G,qG:()=>H,QM:()=>F,ek:()=>e.ek,r8:()=>e.r8,dc:()=>d.dc,IJ:()=>e.IJ});var d=c(12863),e=c(35547),f=c(22157),g=c(98281),h=c(27625),i=c(30949);let j=[[/高压旋喷桩/gu,"土钉墙"],[/旋喷桩/gu,"土钉墙"],[/钻孔灌注桩/gu,"土钉墙"],[/咬合桩/gu,"土钉墙"],[/地下连续墙/gu,"土钉墙"],[/搅拌桩/gu,"土钉墙"],[/灌注桩/gu,"土钉墙"],[/支护桩/gu,"土钉墙"],[/排桩/gu,"土钉墙"],[/冠梁/gu,"坡顶"]],k=/高压旋喷桩机|旋喷桩机|搅拌桩机|三轴搅拌|成槽机|灌注桩机/u;function l(a){let b=new Map;for(let c of a.matchAll(e.MQ)){let a=c[1].trim(),d=a.replace(/[\d,,.。%%㎡m2²]/gu,"").slice(0,16);if(d.length<10)continue;let e=b.get(d)||[],f=(c.index??0)+c[0].indexOf(c[1]);e.push({sentence:a,start:f,end:f+c[1].length}),b.set(d,e)}let c=[];for(let a of b.values()){if(a.length<3)continue;let b=a[0].sentence,d=b.length;for(let c of a.slice(1)){let a=0,e=Math.min(d,c.sentence.length);for(;a<e&&b[a]===c.sentence[a];)a+=1;d=a}let e=b.slice(0,d).lastIndexOf(":"),f=b.slice(0,e>=0?e+1:d);if(!(f.length<4))for(let b=1;b<a.length;b+=1){let d=a[b],e=d.sentence.slice(f.length).trim();e.length<10||c.push({start:d.start,end:d.end,replacement:e})}}if(0===c.length)return{markdown:a,fixedCount:0,details:[]};let d=J(a,c.map(a=>({...a,detail:"段首固定开场剥离"})));return{markdown:d.markdown,fixedCount:d.fixedCount,details:[`段首固定开场剥离 ${d.fixedCount} 处`]}}function m(a){let b=a,c=0;for(let[a,d]of[[/:\s*:/gu,":"],[/;:/gu,";"],[/。:/gu,"。"],[/::/gu,":"],[/。;/gu,"。"],[/;。/gu,"。"],[/。,/gu,"。"],[/,。/gu,"。"],[/、。/gu,"。"],[/、;/gu,";"],[/、,/gu,","],[/,、/gu,","],[/;、/gu,";"],[/。{2,}/gu,"……"]]){let e=b;b=b.replace(a,d),c+=(e.match(RegExp(a.source,"gu"))||[]).length}return b===a?{markdown:a,fixedCount:0,details:[]}:{markdown:b,fixedCount:c,details:[`截断句残留清洗 ${c} 处`]}}function n(a,b,c=3){let d=b,e=0;for(let b=0;b<c;b+=1){let b=a(d);if(0===b.fixedCount)break;d=b.markdown,e+=b.fixedCount}return{markdown:d,fixedCount:e}}function o(a,b,c=3){let d=b,e=0;for(let b=0;b<c;b+=1){let b=0;for(let c of a){let a=c(d);0!==a.fixedCount&&(d=a.markdown,b+=a.fixedCount)}if(0===b)break;e+=b}return{markdown:d,fixedCount:e}}function p(a){return a.replace(e.Ih,"$1")}function q(a){let b=a.split(/\r?\n/u),c=[],d=0;for(let a of b){let b=a.trim(),e=(c[c.length-1]??"").trimEnd();if(b&&!/^\|/u.test(b)&&b.endsWith("|")&&1===(b.match(/\|/gu)||[]).length&&!/^#{1,6}\s/u.test(b)&&g.w7.test(e)){let a=b.slice(0,b.lastIndexOf("|")).trim(),f=e.slice(0,e.lastIndexOf("|")).trimEnd(),g=/[,。;、:]$/u.test(f)?"":" ";c[c.length-1]=`${f}${g}${a} |`,d+=1;continue}c.push(a)}return{markdown:c.join("\n"),fixedCount:d}}function r(a){let b=a,c=0,d=[];for(let{re:a,group:f}of[{re:RegExp(`((?:${e.mC})[^。;;
223
216
  |]{0,10}?)(\\d{3,})(\\s*mm)`,"gu"),group:2},{re:RegExp(`(\\d{3,})(\\s*mm厚?[^。;;
224
- |]{0,18}(?:${e.mC}))`,"gu"),group:1}])for(let e of[...b.matchAll(a)].filter(a=>Number(a[f])>=100)){let a=Number(e[f]),g=String(Math.round(a/10));b=b.replace(e[0],e[0].replace(e[f]??"",g)),c+=1,d.push(`${a}mm→${g}mm`)}return{markdown:b,fixedCount:c,details:d}}function s(a){let b=a,c=0,d=[],f=[...(b=b.replace(/([,,])\s*(?:不再另行[^。;;\u000A,,]{0,40}|以[^,,。;;\u000A]{0,16}为唯一[^,,。;;\u000A]{0,24}不再[^,,。;;\u000A]{0,20})/gu,(a,b)=>(c+=1,b))).matchAll(/(?:^|[。;;\u000A])([^。;;\u000A]*?(?:不再另行[^。;;\u000A]{0,40}|以[^。;;\u000A]{0,16}为唯一[^。;;\u000A]{0,24}不再[^。;;\u000A]{0,20})[^。;;\u000A]*)(?=[。;;\u000A]|$)/gu)],g=[];for(let a of f){let b=a[0],c=a[1]??"",d=c.replace(e.dI,"").trim();/(?:\d)/u.test(d)||g.push({start:(a.index??0)+b.indexOf(c),end:(a.index??0)+b.indexOf(c)+c.length})}for(let a of[...g].sort((a,b)=>b.start-a.start))b=b.slice(0,a.start)+b.slice(a.end),c+=1;let h=b;return(b=b.replace(/,+/gu,",").replace(/,(?=[。;;\u000A])/gu,"").replace(/(?:^|[。;;\u000A])\s*,/gu,(a,b)=>b).replace(/([。;;])\1+/gu,"$1").replace(/^[。;;\s]+/u,"").replace(/\u000A{3,}/gu,"\n\n"))!==h&&(c+=1),c>0&&d.push(`元话语声明句清洗 ${c} 处`),{markdown:b,fixedCount:+(c>0),details:d}}function t(a){let b=a,c=0,d=[];b=b.replace(/(?:[Pp]\s*=\s*[^。;;\u000A,,]*|[qQ]\s*=\s*[^。;;\u000A,,]{0,80}|Σ\s*[Pp][12]?(?:\s*\/\s*cos\s*φ)?[^。;;\u000A,,]{0,40}|[Kk][12]\s*[×*]?\s*Σ\s*[Pp][12]?[^。;;\u000A,,]{0,40}|cos\s*φ[^。;;\u000A,,]{0,20})/gu,()=>(c+=1,""));let e=[];for(let a of b.matchAll(/(?:^|[。;;\n])([^。;;\n]*)(?=[。;;\n]|$)/gu)){let b=(a[1]??"").replace(/[\s|,,::()()×=+-]/gu,"");!(0===b.length||/[\u4e00-\u9fff]/u.test(b))&&(/kW|m³|m3|kVA/u.test(b)||e.push(a[1]??""))}for(let a of[...new Set(e)].sort((a,b)=>b.length-a.length))b=b.replace(a,()=>(c+=1,""));return b=b.replace(/,+/gu,",").replace(/\n{3,}/gu,"\n\n"),c>0&&d.push(`公式形态残留清洗 ${c} 处`),{markdown:b,fixedCount:+(c>0),details:d}}function u(a,b){if(void 0!==b&&b>0){let c=[],d=new Set,f=(a,e,f,g)=>{if(!Number.isFinite(f)||f<=0||f===b||"stage"===g&&f<b)return;let h=`${a}:${e}`;d.has(h)||(d.add(h),c.push({start:a,end:a+e.length,replacement:String(b),detail:`劳动力峰值 ${f}人→${b}人(蓝图权威口径)`}))},g=a=>/^\s*\|.*\|\s*$/u.test(a),h=/峰值|高峰(?:期)?(?:人数|劳动力|作业人员|总人数)?|劳动力总人数|高峰期总人数/u;for(let b of a.matchAll(/[^。;;\n]+/gu)){let c=b[0],d=h.test(c),g=/阶段/u.test(c);if(d||g)for(let g of c.matchAll(/([\d,]+)\s*人/gu)){let c=g[1],h=Number(c.replace(/[,,]/gu,""));if(!Number.isFinite(h)||h<=0)continue;let i=(b.index??0)+(g.index??0)+g[0].indexOf(c),j=a.lastIndexOf("\n",i)+1,{group:k}=(0,e.Zi)(a,i,j);"peak"===k&&f(i,c,h,d?"peak":"stage")}}let i=a.split("\n"),j=0;for(let b of i){if(g(b)&&h.test(b))for(let c of b.matchAll(/([\d,]+)\s*人/gu)){let b=c[1],d=Number(b.replace(/[,,]/gu,""));if(!Number.isFinite(d)||d<=0)continue;let g=j+(c.index??0)+c[0].indexOf(b),{group:h}=(0,e.Zi)(a,g,j);"peak"===h&&f(g,b,d,"peak")}j+=b.length+1}return c.length>0?J(a,c):{markdown:a,fixedCount:0,details:[]}}let c=[...a.matchAll(/高峰期总人数(\d+)人|劳动力总人数(\d+)人|总人数(\d+)人/gu)],d=[...a.matchAll(/高峰(?:期)?人数(\d+)人|峰值(?:需求|人数)?[为约]?(\d+)人/gu)];if(0===c.length||0===d.length)return{markdown:a,fixedCount:0,details:[]};let f=a=>Number(a[1]||a[2]||a[3]),g=new Map;for(let a of c){let b=f(a);b>0&&g.set(b,(g.get(b)||0)+1)}let h=new Map;for(let a of d){let b=f(a);b>0&&h.set(b,(h.get(b)||0)+1)}let i=a=>[...a.entries()].sort((a,b)=>b[1]-a[1])[0],j=i(g),k=i(h);if(void 0===j||void 0===k)return{markdown:a,fixedCount:0,details:[]};let[l,m]=j,[n,o]=k;if(l===n)return{markdown:a,fixedCount:0,details:[]};let p=o>=m?n:l,q=o>=m?l:n,r=a,s=0,t=[],u=RegExp(`(高峰期总人数|劳动力总人数|总人数)(\\d+)人`,"gu"),v=RegExp(`(高峰(?:期)?人数)(\\d+)人`,"gu");return(r=o>=m?r.replace(u,(a,b,c)=>Number(c)===q?`${b}${p}人`:a):r.replace(v,(a,b,c)=>Number(c)===q?`${b}${p}人`:a))!==a&&(s=1,t.push(`劳动力峰值统一:${q}人→${p}人(${o>=m?"高峰口径":"总人数口径"}胜出)`)),{markdown:r,fixedCount:s,details:t}}function v(a,b){if(!b||0===b.length)return{markdown:a,fixedCount:0,details:[],residualCount:0};let{claims:c,ambiguities:d}=(0,e.c6)(a,b);if(0===c.length&&0===d.length)return{markdown:a,fixedCount:0,details:[],residualCount:0};let f=[];for(let a of c)f.push({start:a.start,end:a.end,replacement:String(a.expected),detail:`阶段劳动力 ${a.phase} ${a.actual}人→${a.expected}人`});for(let b of d){let c=(0,e.Ci)(b);if(!c)continue;let d=-1;for(let c of[`${b.phrase}阶段`,b.phrase]){let e=a.lastIndexOf(c,b.start);if(-1!==e&&!(e+c.length>b.start)&&/^(?:约|为|达|共|计)?\s*$/u.test(a.slice(e+c.length,b.start))){d=e;break}}if(-1===d)continue;let g=b.start+b.raw.length;"人"===a.slice(g,g+1)&&f.push({start:d,end:g+1,replacement:`${c.leading.phase}阶段${c.leading.value}人,${c.trailing.phase}阶段${c.trailing.value}人`,detail:`阶段名拼接拆分:${b.phrase} → ${c.leading.phase}(${c.leading.value}人)+${c.trailing.phase}(${c.trailing.value}人)`})}if(0===f.length)return{markdown:a,fixedCount:0,details:[],residualCount:0};let g=[...f].sort((a,b)=>b.start-a.start),h=a,i=[],j=1/0;for(let a of g)a.end>j||(h=`${h.slice(0,a.start)}${a.replacement}${h.slice(a.end)}`,i.push(a),j=a.start);let k=(0,e.c6)(h,b);return k.claims.length>0?{markdown:a,fixedCount:0,details:[],residualCount:k.claims.length}:{markdown:h,fixedCount:i.length,details:i.map(a=>a.detail),residualCount:0}}function w(a){let b=a.split(/\r?\n/u),c=a=>/^\|\s*信息项\s*\|\s*内容\s*\|\s*$/u.test(a.trim()),d=[],e=0;for(;e<b.length;){if(!c(b[e])){e+=1;continue}let a=[],f=e+1;for(f<b.length&&g.N3.test(b[f])&&(f+=1);f<b.length&&g.w7.test(b[f])&&!g.N3.test(b[f]);){let c=b[f].split("|").map(a=>a.trim()),d=c[1]??"";c.length>=4&&d&&a.push({name:d,value:c[2]??"",index:f}),f+=1}d.push({header:e,end:f-1,rows:a}),e=Math.max(f,e+1)}let f=/项目名称|招标人|建设单位|发包人|建设地点|招标范围|计划工期|合同估算价|质量标准/u,h=/资料未明确|暂未明确|待资料复核|未检索到|资料不足|无法确认|建议补充|不适用|可核验信息|系统暂未|项目资料暂未|待确认|待系统|通用兜底|兜底(?:占位|模板|内容)|以本项目招标文件明确内容为准/u,i=d.filter(a=>a.rows.some(a=>f.test(a.name)));if(i.length<=1)return{markdown:a,fixedCount:0,details:[]};let j=i[0],k=new Set,l=[],m=[],n=new Set(j.rows.map(a=>a.name));for(let a of i.slice(1)){let c=[];for(let d of a.rows)!n.has(d.name)&&(h.test(d.value)&&d.value.trim().length<=24||(n.add(d.name),l.push(b[d.index]),c.push(d.name)));for(let b=a.header;b<=a.end;b+=1)k.add(b);for(let c=a.header-1;c>=0&&""===b[c].trim();c-=1)k.add(c);a.end+1<b.length&&""===b[a.end+1].trim()&&k.add(a.end+1);let d=a.header-1;for(;d>=0&&""===b[d].trim();)d-=1;d>=0&&!/^[|#]/u.test(b[d].trim())&&/汇总(?:成表|为表|如下|列出)|如下表|见下表|形成(?:如下)?表|汇总表/u.test(b[d])&&k.add(d),m.push(`基础信息表重复合并:删除第 ${i.indexOf(a)+1} 处重复表${c.length>0?`,并入字段 ${c.join("、")}`:""}`)}let o=[];for(let a=0;a<b.length;a+=1)k.has(a)||o.push(b[a]),a===j.end&&o.push(...l);return{markdown:o.join("\n"),fixedCount:i.length-1,details:m}}function x(a){let b=a.split(/\r?\n/u),c=/资料未明确|暂未明确|待资料复核|未检索到|资料不足|无法确认|建议补充|不适用|可核验信息|系统暂未|项目资料暂未|待确认|待系统|通用兜底|兜底(?:占位|模板|内容)|以本项目招标文件明确内容为准/u,d=new Set,e=[],f=0;for(;f<b.length;){if(!g.w7.test(b[f])||g.N3.test(b[f])){f+=1;continue}let a=f;for(;a+1<b.length&&g.w7.test(b[a+1]);)a+=1;let h=[];for(let c=f+1;c<=a;c+=1)g.N3.test(b[c])||h.push(c);let i=h.filter(a=>b[a].split("|").map(a=>a.trim()).filter(a=>a.length>0).some(a=>a.length<=24&&c.test(a)));if(i.length>0&&i.length<h.length)for(let a of i)d.add(a),e.push(`删除兜底话术表行:${b[a].trim().slice(0,48)}`);f=a+1}return 0===d.size?{markdown:a,fixedCount:0,details:[]}:{markdown:b.filter((a,b)=>!d.has(b)).join("\n"),fixedCount:d.size,details:e}}function y(a){return(a.match(/《([^》]+)》/u)||[])[1]||""}function z(a,b,c){let d=[...a||[]],e=new Set(d.map(a=>y(a))),f=[...c.matchAll(/([\u4e00-\u9fa5]{2,10}?[省市])/gu)].map(a=>a[1]);if(0===f.length||!b)return d;for(let a of(0,i.RY)(b)){let b=y(a);!(!b||e.has(b))&&/[\u4e00-\u9fa5]{2,10}(?:省|市|区|县|自治州|自治区)/u.test(b)&&f.some(a=>b.includes(a))&&(e.add(b),d.push(a))}return d}function A(a,b){if(!b||0===b.length)return{markdown:a,fixedCount:0,details:[]};let c=b.filter(b=>{let c=y(b);return!(!c||!/[\u4e00-\u9fa5]{2,10}(?:省|市|区|县|自治州|自治区)/u.test(c)||/中华人民共和国|国务院/u.test(c))&&!a.includes(`《${c}》`)});if(0===c.length)return{markdown:a,fixedCount:0,details:[]};let d=a.split(/\r?\n/u),e=-1,f=0;for(let a=0;a<d.length;a+=1){let b=d[a].trim(),c=/^(#{2,4})\s+(.+)$/u.exec(b),g=c?null:/^\*\*(.+)\*\*$/u.exec(b);if(!c&&!g)continue;let h=c?c[2]:g?.[1]??"";if(/编制依据|编制说明|编制原则|编制目的/u.test(h)){e=a,f=c?c[1].length:0;break}}if(-1===e)return{markdown:a,fixedCount:0,details:[]};let g=d.length;for(let a=e+1;a<d.length;a+=1){let b=/^(#{1,4})\s+(.+)$/u.exec(d[a].trim());if(b&&(0===f||b[1].length<=f)){g=a;break}}let h=[];for(let a=e+1;a<g;a+=1){let b=d[a],e=/^(\s*[-*]?\s*)([^::]{2,20}[::])\s*(.*)$/u.exec(b);if(!e||!/地方法规|地方性法规|地方规章/u.test(e[2]))continue;let f=c.filter(a=>!b.includes(`《${y(a)}》`));if(0!==f.length){/《[^》]+》/u.test(e[3]||"")?d[a]=`${b.replace(/[。;;\s]*$/u,"")}、${f.join("、")};`:d[a]=`${e[1]}${e[2]}${f.join("、")}及工程所在地现行其他地方性法规与政府规章;`,h.push(`编制依据补写地方性法规:${f.join("、")}`);break}}return 0===h.length?{markdown:a,fixedCount:0,details:[]}:{markdown:d.join("\n"),fixedCount:h.length,details:h}}function B(a){let b=[];for(let c of a.matchAll(/(?:埋深|覆土(?:厚度|深度)?|管顶覆土)(?:不小于|不大于|不低于|不超过|约|为|达|控制在|一般|宜|应)?[^。;;\n|]{0,10}?([\d,,]+(?:\.\d+)?)\s*(mm|cm|米|m)(?![a-zA-Z0-9²³])/gu)){let d=Number((c[1]||"").replace(/[,,]/gu,""));if(!Number.isFinite(d))continue;let e=c[2];if(("mm"===e?d/1e3:"cm"===e?d/100:d)<=10)continue;let f=c.index??0,g=f>0&&/[,,、]/u.test(a[f-1])?1:0;b.push({start:f-g,end:f+c[0].length,detail:`埋深/覆土槽位数值删除:${c[0].trim()}`})}if(0===b.length)return{markdown:a,fixedCount:0,details:[]};let c=a;for(let a of[...b].sort((a,b)=>b.start-a.start))c=`${c.slice(0,a.start)}${c.slice(a.end)}`;return{markdown:c=c.replace(/,,/gu,",").replace(/,;/gu,";").replace(/,。/gu,"。").replace(/,、/gu,"、").replace(/、,/gu,"、").replace(/;,/gu,";").replace(/。,/gu,"。"),fixedCount:b.length,details:b.map(a=>a.detail)}}function C(a){let b=(0,e.LZ)(a);if(0===b.length)return{markdown:a,fixedCount:0,details:[]};let c=a.split(/\r?\n/u),d=[];for(let a of b){let b=a.parts.filter(b=>!a.uncovered.includes(b));if(0===b.length)continue;let e=c[a.lineIndex];if(void 0===e)continue;let f=/^(\s*#{3,4}\s+)(.*?)\s*$/u.exec(e);if(!f)continue;let g=/^([\d.]+[\s\u00a0]+)/u.exec(f[2]),h=`${b.join("、")}工程`;c[a.lineIndex]=`${f[1]}${g?g[1]:""}${h}`,d.push(`标题工程类别覆盖修正:${a.title} → ${g?g[1]:""}${h}`)}return 0===d.length?{markdown:a,fixedCount:0,details:[]}:{markdown:c.join("\n"),fixedCount:d.length,details:d}}function D(a){return a.split(/\r?\n/u).map(a=>{let b=a.trim();return/^#{1,6}\s/u.test(b)||/^\s*\|/u.test(b)||!e.k6.test(a)&&!e.mt.test(a)?a:a.split(/(?<=[。;;])\s*/u).filter(a=>!!(0,e.Bn)(a)||!(e.k6.test(a)||e.mt.test(a))).join("")}).join("\n")}function E(a,b){if(void 0===b||b<=0)return{markdown:a,fixedCount:0,details:[]};let c=a,e=new Set;return(c=c.replace(/养护[^。;;\n|]{0,16}?([一二两三四五六七八九十]+|\d{1,2})\s*年/gu,(a,c)=>{let f=(0,d.a0)(c);return void 0===f||f===b||f<=0?a:(e.add(`${c}年`),a.replace(c,String(b)))}))===a?{markdown:a,fixedCount:0,details:[]}:{markdown:c,fixedCount:1,details:[`绿化养护期统一:${[...e].join("/")}→${b}年(以工程量清单养护期为准)`]}}function F(a){let b=a.split(/\r?\n/u),c=new Set,d=[],f=(0,e.MC)(a),g=a=>(a[0]||"").trim(),h=(a,b)=>(0,e.xX)(a,b);for(let a of f){let b=a.dataRows;if(!(b.length<4))for(let e=Math.floor(b.length/2);e<=Math.ceil(b.length/2);e+=1){let f=b.slice(0,e),i=b.slice(e);if(f.length<2||i.length<2)continue;let j=0,k=-1;for(let a of i){let b=g(a);if(b){for(let c=k+1;c<f.length;c+=1)if(g(f[c])===b&&h(a,f[c])>=.5){j+=1,k=c;break}}}if(j/i.length<.8)continue;let l=a.startLine+2+e;for(let b=l;b<=a.endLine;b+=1)c.add(b);d.push(`第 ${a.startLine+1}~${a.endLine+1} 行表格删除 ${i.length} 行重复数据行`);break}}return 0===c.size?{markdown:a,removedCount:0,details:d}:{markdown:b.filter((a,b)=>!c.has(b)).join("\n"),removedCount:c.size,details:d}}function G(a){let b=(0,e.MC)(a);if(b.length<2)return{markdown:a,removedCount:0};let c=a.split(/\r?\n/u),d=new Set;for(let a=0;a<b.length;a+=1)for(let c=a+1;c<b.length;c+=1){let f=b[a],g=b[c];if(d.has(f.startLine)||d.has(g.startLine))continue;let h=f.header.length>0&&f.header.length===g.header.length&&f.header.every((a,b)=>a===g.header[b]),i=(0,e.xX)(f.header,g.header),j=(0,e.xX)(f.firstCol,g.firstCol),k=(0,e.xX)(f.dataCells,g.dataCells),l=Math.max((0,e.HW)((0,e.sg)(f.dataCells),(0,e.sg)(g.dataCells)),(0,e.HW)((0,e.sg)(g.dataCells),(0,e.sg)(f.dataCells)));if(!(h&&k>=.6)&&!(i>=.7&&j>=.6)&&!(j>=.6&&l>=.6))continue;let[m,n]=f.bodyChars>=g.bodyChars?[f,g]:[g,f];for(let a=n.startLine;a<=n.endLine;a+=1)d.add(a)}return 0===d.size?{markdown:a,removedCount:0}:{markdown:c.filter((a,b)=>!d.has(b)).join("\n"),removedCount:d.size,removedLineNumbers:[...d].sort((a,b)=>a-b)}}function H(a){let b=G(a.map(a=>a.content).join("\n\n"));if(0===b.removedCount)return{removedCount:0,chapterFixed:0};let c=new Set(b.removedLineNumbers||[]),d=0,e=0,f=0;for(let b=0;b<a.length;b+=1){let g=a[b],h=g.content.split("\n"),i=new Set;for(let a=0;a<h.length;a+=1)c.has(d+a)&&i.add(a);i.size>0&&(g.content=h.filter((a,b)=>!i.has(b)).join("\n"),e+=i.size,f+=1),d+=h.length,b<a.length-1&&(d+=1)}return{removedCount:e,chapterFixed:f}}function I(a){let b=a.split(/\r?\n/u),c=new Set,d=new Set,f=[],g=[],h=()=>{let a=(0,e.Jt)(f.join(""));a&&(c.has(a)?g.forEach(a=>d.add(a)):c.add(a)),f=[],g=[]};return(b.forEach((a,b)=>{let c=a.trim();if(!c||/^#{1,6}\s/u.test(c)||/^\s*\|/u.test(c))return void h();if(/^[-*•]\s/u.test(c)){h(),f=[c],g=[b],h();return}f.push(c),g.push(b)}),h(),0===d.size)?{markdown:a,removedCount:0}:{markdown:b.filter((a,b)=>!d.has(b)).join("\n"),removedCount:d.size}}function J(a,b){if(0===b.length)return{markdown:a,fixedCount:0,details:[]};let c=[...b].sort((a,b)=>a.start-b.start||a.end-b.end),d="",e=0,f=0,g=[];for(let b of c)b.start<e||b.end<=b.start||(d+=a.slice(e,b.start)+b.replacement,e=b.end,f+=1,g.push(b.detail));return{markdown:d+=a.slice(e),fixedCount:f,details:[...new Set(g)].slice(0,8)}}function K(a,b){let c=a,f=0,g=[],h=function(a){if(!a)return{nodeAuthorities:[],crossSectionAuthorities:{},codeAuthorities:{}};let b=[];for(let c of a.byDomain.get("schedule")??[])c.label.startsWith("里程碑:")&&"number"==typeof c.value&&!(c.value<=0)&&b.push({node:c.label.slice(4),offset:`第${c.value}日`});let c={},d=[...a.byDomain.get("equipment")??[],...a.byDomain.get("quantity")??[]];for(let[a,b]of Object.entries(e.tH)){let e=d.find(a=>b.test(a.label)||a.anchors.some(a=>b.test(a)));e&&"number"==typeof e.value&&e.value>0&&(c[a]=e.value)}for(let b of[{key:"villageCount",domain:"redline",label:"自然村数量"},{key:"slackDays",domain:"schedule",label:"机动工期"},{key:"scheduleDays",domain:"contract",label:"总工期"}]){let d=(a.byDomain.get(b.domain)??[]).find(a=>a.label===b.label&&"number"==typeof a.value);d&&"number"==typeof d.value&&d.value>0&&(c[b.key]=d.value)}let f={};for(let b of a.byDomain.get("spec")??[])"string"==typeof b.value&&b.value&&(f[b.anchors[0]??b.label]=b.value);let g=(a.byDomain.get("labor")??[]).find(a=>"劳动力峰值"===a.label);return{nodeAuthorities:b,crossSectionAuthorities:c,codeAuthorities:f,laborPeakAuthority:g&&"number"==typeof g.value&&g.value>0?g.value:void 0}}(b?.authorityIndex),i={...h.crossSectionAuthorities};b?.scheduleAuthority!==void 0&&b.scheduleAuthority>0&&(i.scheduleDays=b.scheduleAuthority),b?.assemblyRateAuthority!==void 0&&b.assemblyRateAuthority>0&&(i.prefabRatio=b.assemblyRateAuthority);let l=b?.laborPeakAuthority??h.laborPeakAuthority,m=b?.quantityAnchors??[];for(let a of[a=>(function(a,b=[]){if(0===b.length)return{markdown:a,fixedCount:0,details:[]};let c=[];for(let d of b){if(d.start<0||d.end<=d.start||d.end>a.length)continue;let b=Number(a.slice(d.start,d.end).replace(/,/gu,""));!Number.isFinite(b)||Math.abs(b-d.value)>1e-6||c.push({start:d.start,end:d.end,replacement:String(d.authorityValue),detail:`${d.name} ${d.value}${d.unit}→${d.authorityValue}${d.unit}(以工程量清单汇总值为准)`})}return J(a,c)})(a,m),a=>(function(a,b){let c=void 0!==b&&b>0?b:(0,d.QW)(a);if(void 0===c)return{markdown:a,fixedCount:0,details:[]};let f=[],g=b=>{for(let g of a.matchAll(b)){let b=Number(g[1].replace(/[,,]/gu,""));if(!Number.isFinite(b)||b<=0)continue;let h=g.index+g[0].indexOf(g[1]),i=a.lastIndexOf("\n",g.index)+1,j=a.indexOf("\n",g.index);-1===j&&(j=a.length),/^\s*\|.*\|\s*$/u.test(a.slice(i,j))||"peak"!==(0,e.Zi)(a,h,i).group||(0,d.rx)(a,h)||/人(?:以内|以下|之内)/u.test(a.slice(h+g[1].length,h+g[1].length+8))&&/控制/u.test(a.slice(Math.max(0,h-16),h))||b!==c&&f.push({start:h,end:h+g[1].length,replacement:String(c),detail:`劳动力峰值 ${b}人→${c}人(以分阶段投入明细表为准)`})}};for(let b of(g(d.Dp),g(e.X6),a.matchAll(/(?:高峰期|高峰|峰值)[^。;;\n]{0,16}?控制(?:在|为|到)?(?:约)?\s*([\d,]+)\s*人(?:以内|以下|之内)?/gu))){let a=Number(b[1].replace(/[,,]/gu,""));if(!Number.isFinite(a)||a<=0||a>=c)continue;let d=b.index+b[0].indexOf(b[1]);f.push({start:d,end:d+b[1].length,replacement:String(c),detail:`劳动力控制上限 ${a}人→${c}人(与分阶段投入明细表峰值自洽)`})}return J(a,f)})(a,l),a=>(function(a,b){let c=a,d=[],f=b?.scheduleAuthority;if(void 0!==f&&f>0){let a=[...c.matchAll(/(?:开工令下发后|开工后)第(\d{1,3})[日天]/gu)].map(a=>Number(a[1])),b=a.length>0?Math.max(...a):0;if(b>0&&b!==f){let a=f/b,e=[];for(let b of c.matchAll(/(?:开工令下发后|开工后)第(\d{1,3})[日天]/gu)){let c=Math.max(1,Math.round(Number(b[1])*a)),d=b.index+b[0].indexOf(b[1]);e.push({start:d,end:d+b[1].length,replacement:String(c),detail:`节点日期 ${b[1]}日→${c}日(总工期${f}日历天体系缩放)`})}for(let b of c.matchAll(/第(\d{2,3})日(?=[^。;;\n]{0,8}竣工验收)/gu)){let c=Math.max(1,Math.round(Number(b[1])*a));e.push({start:b.index,end:b.index+b[0].length,replacement:`第${c}日`,detail:`竣工验收节点 ${b[1]}日→${c}日(总工期${f}日历天体系缩放)`})}for(let b of c.matchAll(/(竣工验收(?:合格)?[^。;;\n]{0,8}?[((])第(\d{2,3})日([))])/gu)){let c=Math.max(1,Math.round(Number(b[2])*a));e.push({start:b.index,end:b.index+b[0].length,replacement:`${b[1]}第${c}日${b[3]}`,detail:`竣工验收节点 ${b[2]}日→${c}日(总工期${f}日历天体系缩放)`})}if(e.length>0){let a=J(c,e);c=a.markdown,d.push(...a.details.slice(0,8));let b=/^(\|[^|]*\|)\s*开工令下发后第(\d+)日\s*\|\s*开工令下发后第(\d+)日\s*\|\s*(\d+)\s*日\s*(\|.*)$/u,f=c.split(/\r?\n/u),g=0,h=0;for(let a=0;a<f.length;a+=1){let c=f[a].match(b);if(!c){g=0;continue}let d=Number(c[3]),e=g>0?g+1:Number(c[2]),i=Math.max(d,e+1),j=i-e+1;(e!==Number(c[2])||i!==d||j!==Number(c[4]))&&(f[a]=`${c[1]} 开工令下发后第${e}日 | 开工令下发后第${i}日 | ${j}日 ${c[5]}`,h+=1),g=i}h>0&&(c=f.join("\n"),d.push(`三列进度表链式重算 ${h} 行(开始/持续列与缩放后结束列自洽)`))}}}let g=c.split(/\r?\n/u),h=/^\|.+\|$/u,i=[],j=0;for(let a of g)i.push({start:j,end:j+a.length}),j+=a.length+1;let k=a=>{let b=[];return/清理|预验收|收尾/u.test(a)&&b.push("cleanup"),/竣工验收/u.test(a)&&b.push("completion"),/装饰|幕墙/u.test(a)&&b.push("decoration"),/机电/u.test(a)&&b.push("mep"),/二次|ALC|墙板|砌体/u.test(a)&&b.push("secondary"),/主体|封顶/u.test(a)&&b.push("topping"),/土方|基坑|基础|支护/u.test(a)&&b.push("excavation"),b},l=a=>(a.split("|")[1]||"").trim(),m=a=>{let b;for(let c of a.matchAll(/第(\d{1,3})[日天]/gu)){let d=a.slice(Math.max(0,(c.index??0)-8),c.index??0);/(?:合格|封顶|移交|完成|进场|退场)后$/u.test(d)||(b={value:Number(c[1]),start:(c.index??0)+c[0].indexOf(c[1]),end:(c.index??0)+c[0].lastIndexOf(c[1])+c[1].length})}return b},n=new Map,o=[];for(let a=0;a<g.length;a+=1){if(!h.test(g[a].trim()))continue;let b=a;for(;a<g.length&&h.test(g[a].trim());)a+=1;let c=a,d=g.slice(Math.max(0,b-6),b).join("\n");if(/总进度计划|施工总进度|总进度安排|总工期控制|总工期/u.test(d)){for(let a=b;a<c;a+=1){let b=l(g[a]),c=m(g[a]);if(!(!c||/---/u.test(b)))for(let a of k(b)){let b=n.get(a);(void 0===b||c.value>b)&&n.set(a,c.value)}}o.push({start:i[b].start,end:i[c-1].end})}}for(let a of b?.nodeAuthorities??[]){let b=a.offset.match(/第(\d{1,3})[日天]/u);if(!b)continue;let c=Number(b[1]);if(!Number.isFinite(c)||c<1||c>3e3)continue;let d=e.ae.find(b=>b.re.test(a.node))?.key;if(void 0===d)continue;let f=n.get(d);void 0!==f&&f!==c&&(o.length=0),n.set(d,c)}if(0===n.size)return{markdown:c,fixedCount:+(d.length>0),details:d};let p=[],q=a=>!o.some(b=>a>=b.start&&a<=b.end);for(let a=0;a<g.length;a+=1){if(!h.test(g[a].trim())||!q(i[a].start))continue;let b=l(g[a]),c=m(g[a]);if(!c||/---/u.test(b))continue;let d=k(b).map(a=>n.get(a)).find(a=>void 0!==a);if(void 0===d||c.value===d)continue;let f=e.ae.find(a=>k(b).includes(a.key))?.label||b.slice(0,12);p.push({start:i[a].start+c.start,end:i[a].start+c.end,replacement:String(d),detail:`表格节点“${f}”${c.value}日→${d}日(以总进度计划/总工期控制表为准)`})}let r=(a,b,c,d,f)=>{let g=e.ae.find(b=>b.re.test(a))?.key;if(void 0===g||!Number.isFinite(b)||b<1||b>3e3)return;let h=n.get(g);void 0!==h&&b!==h&&q(c)&&p.push({start:c,end:d,replacement:String(h),detail:`节点“${e.ae.find(a=>a.key===g)?.label||g}”工期 ${b}日→${h}日(以总进度计划表为准)`})};for(let a of c.matchAll(/第(\d{2,3})日(?:(?![))→。;;\n,、]).){0,14}?完成(?:(?![((→。;;\n,、]).){0,12}?(基坑支护及土方外运|装饰装修及幕墙|机电安装及智能化调试|室外工程及竣工验收|地下结构出正负零|主体结构封顶|正负零|封顶)/gu)){let b=a.index+a[0].indexOf(a[1]);r(a[2],Number(a[1]),b,b+a[1].length,a[0].slice(0,40))}for(let a of c.matchAll(/(竣工验收)(?:(?!(?:后|第\d{2,3}[日天]|,|、|→)).){0,10}?第(\d{2,3})[日天]/gu)){let b=a.index+a[0].indexOf(a[2]);r(a[1],Number(a[2]),b,b+a[2].length,a[0].slice(0,40))}for(let a of c.matchAll(/(基坑支护|正负零|封顶|装饰装修|机电安装|竣工验收)(?:(?!(?:第\d{2,3}[日天]|,|、)).){0,8}?完成[^。;;\n]{0,10}?第(\d{2,3})[日天]/gu)){let b=a.index+a[0].indexOf(a[2]);r(a[1],Number(a[2]),b,b+a[2].length,a[0].slice(0,40))}for(let a of c.matchAll(/(主体(?:结构)?封顶)(?!后)(?:(?!(?:第\d{2,3}[日天]|,|、|完成|\||[。;;\n])).){0,20}?第(\d{2,3})日/gu)){let b=a.index+a[0].indexOf(a[2]);r(a[1],Number(a[2]),b,b+a[2].length,a[0].slice(0,40))}let s=J(c,p);return{markdown:s.markdown,fixedCount:s.fixedCount+ +(d.length>0),details:[...d,...s.details].slice(0,12)}})(a,{scheduleAuthority:b?.scheduleAuthority,nodeAuthorities:h.nodeAuthorities}),a=>(function(a,b,c){let d=[];for(let c of e._F){if("number"!==c.kind)continue;let f=new Set,g=[],h=[];for(let b of c.patterns)for(let d of a.matchAll(b)){let b=d[0].slice(0,40);if(e.we.test(b)||/按不少于|不少于|至少|不低于/u.test(b))continue;if("scheduleDays"===c.key){let c=b.indexOf(String(d[1]));if(c>=0&&/(?:阶段|第\d+日|至第|共|集中)/u.test(a.slice(Math.max(0,(d.index||0)+c-16),(d.index||0)+c)))continue}let i=a.lastIndexOf("\n",d.index)+1,j=a.indexOf("\n",d.index);-1===j&&(j=a.length);let k=a.slice(i,j);if(e.ZN.test(k))continue;let l=Number(d[1]);if(!Number.isFinite(l)||l<=0)continue;let m=(0,e.Rw)(a,d.index||0,b,i);/^\s*\|/u.test(k)?(f.add(l),h.push({value:l,group:m})):g.push({value:l,group:m})}let i=b?.[c.key],j=void 0!==i&&i>0?i:1===f.size?[...f][0]:void 0;if(void 0!==j&&[...g.filter(a=>""===a.group),...void 0!==i?h:[]].some(a=>a.value!==j))for(let b of c.patterns)for(let f of a.matchAll(b)){let b=f[0].slice(0,40);if(e.we.test(b))continue;let g=a.lastIndexOf("\n",f.index)+1,h=a.indexOf("\n",f.index);-1===h&&(h=a.length);let k=a.slice(g,h);if(e.ZN.test(k)||/^\s*\|/u.test(k)&&void 0===i)continue;let l=Number(f[1]);if(!Number.isFinite(l)||l<=0||!/^\s*\|/u.test(k)&&""!==(0,e.Rw)(a,f.index||0,b,g)||l===j)continue;let m=f.index+f[0].indexOf(f[1]),n=void 0!==i&&i>0?"scheduleDays"===c.key?"以绑定资料计划工期为准":"以绑定资料锁定口径为准":"以表格口径为准";d.push({start:m,end:m+f[1].length,replacement:String(j),detail:`${c.label} ${l}${c.unit}→${j}${c.unit}(${n})`})}}for(let b of e._F){if("code"!==b.kind)continue;let f=c?.[b.key];if(!f)continue;let g=[];for(let c of b.patterns)for(let b of a.matchAll(c)){let c=b[0].slice(0,40);if(e.we.test(c))continue;let d=a.lastIndexOf("\n",b.index)+1,h=a.indexOf("\n",b.index);-1===h&&(h=a.length);let i=a.slice(d,h);if(e.ZN.test(i)||/按不少于|不少于|至少|不低于/u.test(c)||!/^\s*\|/u.test(i)&&""!==(0,e.Rw)(a,b.index||0,"",d)||b[1]===f)continue;let j=b.index+b[0].indexOf(b[1]);g.push({start:j,end:j+b[1].length,raw:c})}for(let c of g)d.push({start:c.start,end:c.end,replacement:f,detail:`${b.label} ${a.slice(c.start,c.end)}→${f}(以工程量清单锁定口径为准)`})}return J(a,d)})(a,i,h.codeAuthorities),a=>(function(a,b){if("slope"!==b)return{markdown:a,fixedCount:0,details:[]};let c=0,e=0,f=a.split(/\r?\n/u).map(a=>{let b=a.trim();return/^#{1,6}\s/u.test(b)||/^\s*\|/u.test(b)||!d.re.test(a)?a:a.split(/(?<=[。;;])/u).map(a=>{if(!d.re.test(a))return a;if(!d.mO.test(a))return c+=1,"";let b=/([。;;])$/u.exec(a)?.[1],f=a.split(/[,、]/u).filter(a=>!k.test(a)).join(",");for(let[a,c]of(void 0===b||/[。;;]$/u.test(f)||(f+=b),j))f=f.replace(a,c);return e+=1,f}).join("")});return 0===c&&0===e?{markdown:a,fixedCount:0,details:[]}:{markdown:f.join("\n"),fixedCount:c+e,details:[`支护体系确定性裁决(图纸/地质槽位:放坡喷锚类):删除桩族句 ${c} 句、改写混句 ${e} 句`]}})(a,b?.supportAuthority),a=>(function(a){let b=0,c=[];return{markdown:a.replace(/第(\d{1,4})订(?=[))])/gu,(a,d)=>(b+=1,c.push(`法规文号残缺:第${d}订→第${d}号`),`第${d}号`)),fixedCount:b,details:c}})(a),a=>(function(a){let b=0,c=[];return{markdown:a.replace(/(?<=[\u4e00-\u9fa5])(?<!第)(?<!,)(\d{4,6})(?=主?\s*要?\s*工程量(?!清单))/gu,a=>(b+=1,c.length<12&&c.push(`误入数字粘连清洗:删除“${a}”并补逗号`),",")),fixedCount:b,details:c}})(a),a=>(function(a,b){if(!b||b<=0)return{markdown:a,fixedCount:0,details:[]};let c=0,d=[];return{markdown:a.replace(/第(\d{1,3})日[ \t\u00a0]*(至|~|~)[ \t\u00a0]*第(\d{4,6})[ \t\u00a0]*日/gu,(a,e,f,g)=>{let h=Number(e),i=Number(g);return h>b||i<=b?a:(c+=1,d.length<12&&d.push(`日区间超限截断:“${a.replace(/\s+/gu,"")}”→“第${e}日${f}第${b}日”`),`第${e}日${f}第${b}日`)}),fixedCount:c,details:d}})(a,b?.scheduleAuthority)]){let b=a(c);b.markdown!==c&&(c=b.markdown,f+=b.fixedCount,g.push(...b.details))}return{markdown:c,fixedCount:f,details:g.slice(0,12)}}function L(a){let b=(a=a.replace(/[。;!?]{2,}/gu,a=>a[0]??"").replace(/,(?=[。;!?])/gu,"")).split(/(?<=[。!?;\n])/u),c=[],d=0,e=[];for(let a of b){let b=a.replace(/\s+/gu,"");if(b.length>=20&&!/^[|#>]/.test(a.trimStart())&&e[e.length-1]?.replace(/\s+/gu,"")===b){d+=1,c.push(`相邻整句重复折叠:“${b.slice(0,24)}”`);continue}e.push(a)}return{markdown:e.map(a=>{let b=a.trimStart();if(/^[|#]/.test(b))return a;let e=a,f=!0,g=0;for(;f&&g<20;){f=!1,g+=1;for(let a=16;a>=4;a-=1){for(let b=0;b+2*a<=e.length;b+=1){let g=e.slice(b,b+a);if((/[0-9]/.test(g)||/[\u4e00-\u9fa5]/.test(g))&&e.slice(b+a,b+2*a)===g){e=e.slice(0,b+a)+e.slice(b+2*a),f=!0,d+=1,c.push(`相邻重复短语折叠:“${g.slice(0,24)}”`);break}}if(f)break}if(f)continue;for(let a=20;a>=9;a-=1){for(let b=0;b+a<=e.length;b+=1){let g=e.slice(b,b+a);if(!/[\u4e00-\u9fa5]/.test(g[0]||""))continue;let h=/[0-9]/.test(g);if(!h&&a<12||h&&(/\d$/.test(g)||/[|→\-—]/.test(g)))continue;let i=e.indexOf(g);if(i!==b||-1===e.indexOf(g,i+1))continue;let j=0,k=e.indexOf(g,i+1);for(;-1!==k;)e=e.slice(0,k)+e.slice(k+a),j+=1,k=e.indexOf(g,k);if(j>0){f=!0,d+=j,c.push(`隔位重复短语折叠:“${g.slice(0,24)}”\xd7${j}`);break}}if(f)break}if(f)continue;let a="kW|kVA|MPa|㎡|m\xb2|m\xb3|mm|cm|%",b=RegExp(`(\\d+(?:\\.\\d+)?)(?:${a})(?=\\s*\\d+(?:\\.\\d+)?(?:${a}))`,"gu").exec(e);if(b){let g=b.index+b[0].length,h=e.slice(g).match(RegExp(`^\\s*(\\d+(?:\\.\\d+)?)(?:${a})`));h&&(e=e.slice(0,g)+e.slice(g+h[0].length),f=!0,d+=1,c.push(`数值单位粘连折叠:“${b[0]}${h[0].trim()}”→“${b[0]}”`))}if(f)continue;let h=e;(e=e.replace(/[,,]{2,}/gu,",").replace(/[。;!?]{2,}/gu,a=>a[0]).replace(/,(?=[。;!?])/gu,""))!==h&&(f=!0,c.push("残留重复标点归一"))}return e}).join(""),fixedCount:d,details:c.slice(0,8)}}function M(a,b){let c=[];if(b?.areaSummary)for(let d of a.matchAll(/\|\s*按施工图设计文件确定\s*\|/gu))c.push({start:d.index+1,end:d.index+d[0].length-1,replacement:` ${b.areaSummary} `,detail:`工程概况一览表建设规模套话→“${b.areaSummary}”`});if(b?.scheduleDays!==void 0&&b.scheduleDays>0)for(let d of a.matchAll(/\|\s*按合同约定工期执行\s*\|/gu))c.push({start:d.index+1,end:d.index+d[0].length-1,replacement:` ${b.scheduleDays}个日历天 `,detail:`工程概况一览表工期套话→“${b.scheduleDays}个日历天”`});if(0===c.length)return{markdown:a,fixedCount:0,details:[]};let d=J(a,c);return{markdown:d.markdown,fixedCount:d.fixedCount,details:d.details}}function N(a){let b=a.match(/(### 6\.1\s+施工部署与施工流水组织[\s\S]*?)(?=### 6\.2|## 第[六七]章|$)/u);if(!b)return{markdown:a,fixedCount:0,details:[]};let c=b[0],d=["三检","样板引路","隐蔽验收","见证取样","试块养护","分部分项报验"],e=d.filter(a=>c.includes(a)).length;if(e>=3)return{markdown:a,fixedCount:0,details:[]};let f=`
217
+ |]{0,18}(?:${e.mC}))`,"gu"),group:1}])for(let e of[...b.matchAll(a)].filter(a=>Number(a[f])>=100)){let a=Number(e[f]),g=String(Math.round(a/10));b=b.replace(e[0],e[0].replace(e[f]??"",g)),c+=1,d.push(`${a}mm→${g}mm`)}return{markdown:b,fixedCount:c,details:d}}function s(a){let b=a,c=0,d=[],f=[...(b=b.replace(/([,,])\s*(?:不再另行[^。;;\u000A,,]{0,40}|以[^,,。;;\u000A]{0,16}为唯一[^,,。;;\u000A]{0,24}不再[^,,。;;\u000A]{0,20})/gu,(a,b)=>(c+=1,b))).matchAll(/(?:^|[。;;\u000A])([^。;;\u000A]*?(?:不再另行[^。;;\u000A]{0,40}|以[^。;;\u000A]{0,16}为唯一[^。;;\u000A]{0,24}不再[^。;;\u000A]{0,20})[^。;;\u000A]*)(?=[。;;\u000A]|$)/gu)],g=[];for(let a of f){let b=a[0],c=a[1]??"",d=c.replace(e.dI,"").trim();/(?:\d)/u.test(d)||g.push({start:(a.index??0)+b.indexOf(c),end:(a.index??0)+b.indexOf(c)+c.length})}for(let a of[...g].sort((a,b)=>b.start-a.start))b=b.slice(0,a.start)+b.slice(a.end),c+=1;let h=b;return(b=b.replace(/,+/gu,",").replace(/,(?=[。;;\u000A])/gu,"").replace(/(?:^|[。;;\u000A])\s*,/gu,(a,b)=>b).replace(/([。;;])\1+/gu,"$1").replace(/^[。;;\s]+/u,"").replace(/\u000A{3,}/gu,"\n\n"))!==h&&(c+=1),c>0&&d.push(`元话语声明句清洗 ${c} 处`),{markdown:b,fixedCount:+(c>0),details:d}}function t(a){let b=a,c=0,d=[];b=b.replace(/(?:[Pp]\s*=\s*[^。;;\u000A,,]*|[qQ]\s*=\s*[^。;;\u000A,,]{0,80}|Σ\s*[Pp][12]?(?:\s*\/\s*cos\s*φ)?[^。;;\u000A,,]{0,40}|[Kk][12]\s*[×*]?\s*Σ\s*[Pp][12]?[^。;;\u000A,,]{0,40}|cos\s*φ[^。;;\u000A,,]{0,20})/gu,()=>(c+=1,""));let e=[];for(let a of b.matchAll(/(?:^|[。;;\n])([^。;;\n]*)(?=[。;;\n]|$)/gu)){let b=(a[1]??"").replace(/[\s|,,::()()×=+-]/gu,"");!(0===b.length||/[\u4e00-\u9fff]/u.test(b))&&(/kW|m³|m3|kVA/u.test(b)||e.push(a[1]??""))}for(let a of[...new Set(e)].sort((a,b)=>b.length-a.length))b=b.replace(a,()=>(c+=1,""));return b=b.replace(/,+/gu,",").replace(/\n{3,}/gu,"\n\n"),c>0&&d.push(`公式形态残留清洗 ${c} 处`),{markdown:b,fixedCount:+(c>0),details:d}}function u(a,b){if(void 0!==b&&b>0){let c=[],d=new Set,f=(a,e,f,g)=>{if(!Number.isFinite(f)||f<=0||f===b||"stage"===g&&f<b)return;let h=`${a}:${e}`;d.has(h)||(d.add(h),c.push({start:a,end:a+e.length,replacement:String(b),detail:`劳动力峰值 ${f}人→${b}人(蓝图权威口径)`}))},g=a=>/^\s*\|.*\|\s*$/u.test(a),h=/峰值|高峰(?:期)?(?:人数|劳动力|作业人员|总人数)?|劳动力总人数|高峰期总人数/u;for(let b of a.matchAll(/[^。;;\n]+/gu)){let c=b[0],d=h.test(c),g=/阶段/u.test(c);if(d||g)for(let g of c.matchAll(/([\d,]+)\s*人/gu)){let c=g[1],h=Number(c.replace(/[,,]/gu,""));if(!Number.isFinite(h)||h<=0)continue;let i=(b.index??0)+(g.index??0)+g[0].indexOf(c),j=a.lastIndexOf("\n",i)+1,{group:k}=(0,e.Zi)(a,i,j);"peak"===k&&f(i,c,h,d?"peak":"stage")}}let i=a.split("\n"),j=0;for(let b of i){if(g(b)&&h.test(b))for(let c of b.matchAll(/([\d,]+)\s*人/gu)){let b=c[1],d=Number(b.replace(/[,,]/gu,""));if(!Number.isFinite(d)||d<=0)continue;let g=j+(c.index??0)+c[0].indexOf(b),{group:h}=(0,e.Zi)(a,g,j);"peak"===h&&f(g,b,d,"peak")}j+=b.length+1}return c.length>0?J(a,c):{markdown:a,fixedCount:0,details:[]}}let c=[...a.matchAll(/高峰期总人数(\d+)人|劳动力总人数(\d+)人|总人数(\d+)人/gu)],d=[...a.matchAll(/高峰(?:期)?人数(\d+)人|峰值(?:需求|人数)?[为约]?(\d+)人/gu)];if(0===c.length||0===d.length)return{markdown:a,fixedCount:0,details:[]};let f=a=>Number(a[1]||a[2]||a[3]),g=new Map;for(let a of c){let b=f(a);b>0&&g.set(b,(g.get(b)||0)+1)}let h=new Map;for(let a of d){let b=f(a);b>0&&h.set(b,(h.get(b)||0)+1)}let i=a=>[...a.entries()].sort((a,b)=>b[1]-a[1])[0],j=i(g),k=i(h);if(void 0===j||void 0===k)return{markdown:a,fixedCount:0,details:[]};let[l,m]=j,[n,o]=k;if(l===n)return{markdown:a,fixedCount:0,details:[]};let p=o>=m?n:l,q=o>=m?l:n,r=a,s=0,t=[],u=RegExp(`(高峰期总人数|劳动力总人数|总人数)(\\d+)人`,"gu"),v=RegExp(`(高峰(?:期)?人数)(\\d+)人`,"gu");return(r=o>=m?r.replace(u,(a,b,c)=>Number(c)===q?`${b}${p}人`:a):r.replace(v,(a,b,c)=>Number(c)===q?`${b}${p}人`:a))!==a&&(s=1,t.push(`劳动力峰值统一:${q}人→${p}人(${o>=m?"高峰口径":"总人数口径"}胜出)`)),{markdown:r,fixedCount:s,details:t}}function v(a,b){if(!b||0===b.length)return{markdown:a,fixedCount:0,details:[],residualCount:0};let{claims:c,ambiguities:d}=(0,e.c6)(a,b);if(0===c.length&&0===d.length)return{markdown:a,fixedCount:0,details:[],residualCount:0};let f=[];for(let a of c)f.push({start:a.start,end:a.end,replacement:String(a.expected),detail:`阶段劳动力 ${a.phase} ${a.actual}人→${a.expected}人`});for(let b of d){let c=(0,e.Ci)(b);if(!c)continue;let d=-1;for(let c of[`${b.phrase}阶段`,b.phrase]){let e=a.lastIndexOf(c,b.start);if(-1!==e&&!(e+c.length>b.start)&&/^(?:约|为|达|共|计)?\s*$/u.test(a.slice(e+c.length,b.start))){d=e;break}}if(-1===d)continue;let g=b.start+b.raw.length;"人"===a.slice(g,g+1)&&f.push({start:d,end:g+1,replacement:`${c.leading.phase}阶段${c.leading.value}人,${c.trailing.phase}阶段${c.trailing.value}人`,detail:`阶段名拼接拆分:${b.phrase} → ${c.leading.phase}(${c.leading.value}人)+${c.trailing.phase}(${c.trailing.value}人)`})}if(0===f.length)return{markdown:a,fixedCount:0,details:[],residualCount:0};let g=[...f].sort((a,b)=>b.start-a.start),h=a,i=[],j=1/0;for(let a of g)a.end>j||(h=`${h.slice(0,a.start)}${a.replacement}${h.slice(a.end)}`,i.push(a),j=a.start);let k=(0,e.c6)(h,b);return k.claims.length>0?{markdown:a,fixedCount:0,details:[],residualCount:k.claims.length}:{markdown:h,fixedCount:i.length,details:i.map(a=>a.detail),residualCount:0}}function w(a){let b=a.split(/\r?\n/u),c=a=>/^\|\s*信息项\s*\|\s*内容\s*\|\s*$/u.test(a.trim()),d=[],e=0;for(;e<b.length;){if(!c(b[e])){e+=1;continue}let a=[],f=e+1;for(f<b.length&&g.N3.test(b[f])&&(f+=1);f<b.length&&g.w7.test(b[f])&&!g.N3.test(b[f]);){let c=b[f].split("|").map(a=>a.trim()),d=c[1]??"";c.length>=4&&d&&a.push({name:d,value:c[2]??"",index:f}),f+=1}d.push({header:e,end:f-1,rows:a}),e=Math.max(f,e+1)}let f=/项目名称|招标人|建设单位|发包人|建设地点|招标范围|计划工期|合同估算价|质量标准/u,h=/资料未明确|暂未明确|待资料复核|未检索到|资料不足|无法确认|建议补充|不适用|可核验信息|系统暂未|项目资料暂未|待确认|待系统|通用兜底|兜底(?:占位|模板|内容)|以本项目招标文件明确内容为准/u,i=d.filter(a=>a.rows.some(a=>f.test(a.name)));if(i.length<=1)return{markdown:a,fixedCount:0,details:[]};let j=i[0],k=new Set,l=[],m=[],n=new Set(j.rows.map(a=>a.name));for(let a of i.slice(1)){let c=[];for(let d of a.rows)!n.has(d.name)&&(h.test(d.value)&&d.value.trim().length<=24||(n.add(d.name),l.push(b[d.index]),c.push(d.name)));for(let b=a.header;b<=a.end;b+=1)k.add(b);for(let c=a.header-1;c>=0&&""===b[c].trim();c-=1)k.add(c);a.end+1<b.length&&""===b[a.end+1].trim()&&k.add(a.end+1);let d=a.header-1;for(;d>=0&&""===b[d].trim();)d-=1;d>=0&&!/^[|#]/u.test(b[d].trim())&&/汇总(?:成表|为表|如下|列出)|如下表|见下表|形成(?:如下)?表|汇总表/u.test(b[d])&&k.add(d),m.push(`基础信息表重复合并:删除第 ${i.indexOf(a)+1} 处重复表${c.length>0?`,并入字段 ${c.join("、")}`:""}`)}let o=[];for(let a=0;a<b.length;a+=1)k.has(a)||o.push(b[a]),a===j.end&&o.push(...l);return{markdown:o.join("\n"),fixedCount:i.length-1,details:m}}function x(a){let b=a.split(/\r?\n/u),c=/资料未明确|暂未明确|待资料复核|未检索到|资料不足|无法确认|建议补充|不适用|可核验信息|系统暂未|项目资料暂未|待确认|待系统|通用兜底|兜底(?:占位|模板|内容)|以本项目招标文件明确内容为准/u,d=new Set,e=[],f=0;for(;f<b.length;){if(!g.w7.test(b[f])||g.N3.test(b[f])){f+=1;continue}let a=f;for(;a+1<b.length&&g.w7.test(b[a+1]);)a+=1;let h=[];for(let c=f+1;c<=a;c+=1)g.N3.test(b[c])||h.push(c);let i=h.filter(a=>b[a].split("|").map(a=>a.trim()).filter(a=>a.length>0).some(a=>a.length<=24&&c.test(a)));if(i.length>0&&i.length<h.length)for(let a of i)d.add(a),e.push(`删除兜底话术表行:${b[a].trim().slice(0,48)}`);f=a+1}return 0===d.size?{markdown:a,fixedCount:0,details:[]}:{markdown:b.filter((a,b)=>!d.has(b)).join("\n"),fixedCount:d.size,details:e}}function y(a){return(a.match(/《([^》]+)》/u)||[])[1]||""}function z(a,b,c){let d=[...a||[]],e=new Set(d.map(a=>y(a))),f=[...c.matchAll(/([\u4e00-\u9fa5]{2,10}?[省市])/gu)].map(a=>a[1]);if(0===f.length||!b)return d;for(let a of(0,i.RY)(b)){let b=y(a);!(!b||e.has(b))&&/[\u4e00-\u9fa5]{2,10}(?:省|市|区|县|自治州|自治区)/u.test(b)&&f.some(a=>b.includes(a))&&(e.add(b),d.push(a))}return d}function A(a,b){if(!b||0===b.length)return{markdown:a,fixedCount:0,details:[]};let c=b.filter(b=>{let c=y(b);return!(!c||!/[\u4e00-\u9fa5]{2,10}(?:省|市|区|县|自治州|自治区)/u.test(c)||/中华人民共和国|国务院/u.test(c))&&!a.includes(`《${c}》`)});if(0===c.length)return{markdown:a,fixedCount:0,details:[]};let d=a.split(/\r?\n/u),e=-1,f=0;for(let a=0;a<d.length;a+=1){let b=d[a].trim(),c=/^(#{2,4})\s+(.+)$/u.exec(b),g=c?null:/^\*\*(.+)\*\*$/u.exec(b);if(!c&&!g)continue;let h=c?c[2]:g?.[1]??"";if(/编制依据|编制说明|编制原则|编制目的/u.test(h)){e=a,f=c?c[1].length:0;break}}if(-1===e)return{markdown:a,fixedCount:0,details:[]};let g=d.length;for(let a=e+1;a<d.length;a+=1){let b=/^(#{1,4})\s+(.+)$/u.exec(d[a].trim());if(b&&(0===f||b[1].length<=f)){g=a;break}}let h=[];for(let a=e+1;a<g;a+=1){let b=d[a],e=/^(\s*[-*]?\s*)([^::]{2,20}[::])\s*(.*)$/u.exec(b);if(!e||!/地方法规|地方性法规|地方规章/u.test(e[2]))continue;let f=c.filter(a=>!b.includes(`《${y(a)}》`));if(0!==f.length){/《[^》]+》/u.test(e[3]||"")?d[a]=`${b.replace(/[。;;\s]*$/u,"")}、${f.join("、")};`:d[a]=`${e[1]}${e[2]}${f.join("、")}及工程所在地现行其他地方性法规与政府规章;`,h.push(`编制依据补写地方性法规:${f.join("、")}`);break}}return 0===h.length?{markdown:a,fixedCount:0,details:[]}:{markdown:d.join("\n"),fixedCount:h.length,details:h}}function B(a){let b=[];for(let c of a.matchAll(/(?:埋深|覆土(?:厚度|深度)?|管顶覆土)(?:不小于|不大于|不低于|不超过|约|为|达|控制在|一般|宜|应)?[^。;;\n|]{0,10}?([\d,,]+(?:\.\d+)?)\s*(mm|cm|米|m)(?![a-zA-Z0-9²³])/gu)){let d=Number((c[1]||"").replace(/[,,]/gu,""));if(!Number.isFinite(d))continue;let e=c[2];if(("mm"===e?d/1e3:"cm"===e?d/100:d)<=10)continue;let f=c.index??0,g=f>0&&/[,,、]/u.test(a[f-1])?1:0;b.push({start:f-g,end:f+c[0].length,detail:`埋深/覆土槽位数值删除:${c[0].trim()}`})}if(0===b.length)return{markdown:a,fixedCount:0,details:[]};let c=a;for(let a of[...b].sort((a,b)=>b.start-a.start))c=`${c.slice(0,a.start)}${c.slice(a.end)}`;return{markdown:c=c.replace(/,,/gu,",").replace(/,;/gu,";").replace(/,。/gu,"。").replace(/,、/gu,"、").replace(/、,/gu,"、").replace(/;,/gu,";").replace(/。,/gu,"。"),fixedCount:b.length,details:b.map(a=>a.detail)}}function C(a){let b=(0,e.LZ)(a);if(0===b.length)return{markdown:a,fixedCount:0,details:[]};let c=a.split(/\r?\n/u),d=[];for(let a of b){let b=a.parts.filter(b=>!a.uncovered.includes(b));if(0===b.length)continue;let e=c[a.lineIndex];if(void 0===e)continue;let f=/^(\s*#{3,4}\s+)(.*?)\s*$/u.exec(e);if(!f)continue;let g=/^([\d.]+[\s\u00a0]+)/u.exec(f[2]),h=`${b.join("、")}工程`;c[a.lineIndex]=`${f[1]}${g?g[1]:""}${h}`,d.push(`标题工程类别覆盖修正:${a.title} → ${g?g[1]:""}${h}`)}return 0===d.length?{markdown:a,fixedCount:0,details:[]}:{markdown:c.join("\n"),fixedCount:d.length,details:d}}function D(a){return a.split(/\r?\n/u).map(a=>{let b=a.trim();return/^#{1,6}\s/u.test(b)||/^\s*\|/u.test(b)||!e.k6.test(a)&&!e.mt.test(a)?a:a.split(/(?<=[。;;])\s*/u).filter(a=>!!(0,e.Bn)(a)||!(e.k6.test(a)||e.mt.test(a))).join("")}).join("\n")}function E(a,b){if(void 0===b||b<=0)return{markdown:a,fixedCount:0,details:[]};let c=a,e=new Set;return(c=c.replace(/养护[^。;;\n|]{0,16}?([一二两三四五六七八九十]+|\d{1,2})\s*年/gu,(a,c)=>{let f=(0,d.a0)(c);return void 0===f||f===b||f<=0?a:(e.add(`${c}年`),a.replace(c,String(b)))}))===a?{markdown:a,fixedCount:0,details:[]}:{markdown:c,fixedCount:1,details:[`绿化养护期统一:${[...e].join("/")}→${b}年(以工程量清单养护期为准)`]}}function F(a){let b=a.split(/\r?\n/u),c=new Set,d=[],f=(0,e.MC)(a),g=a=>(a[0]||"").trim(),h=(a,b)=>(0,e.xX)(a,b);for(let a of f){let b=a.dataRows;if(!(b.length<4))for(let e=Math.floor(b.length/2);e<=Math.ceil(b.length/2);e+=1){let f=b.slice(0,e),i=b.slice(e);if(f.length<2||i.length<2)continue;let j=0,k=-1;for(let a of i){let b=g(a);if(b){for(let c=k+1;c<f.length;c+=1)if(g(f[c])===b&&h(a,f[c])>=.5){j+=1,k=c;break}}}if(j/i.length<.8)continue;let l=a.startLine+2+e;for(let b=l;b<=a.endLine;b+=1)c.add(b);d.push(`第 ${a.startLine+1}~${a.endLine+1} 行表格删除 ${i.length} 行重复数据行`);break}}return 0===c.size?{markdown:a,removedCount:0,details:d}:{markdown:b.filter((a,b)=>!c.has(b)).join("\n"),removedCount:c.size,details:d}}function G(a){let b=(0,e.MC)(a);if(b.length<2)return{markdown:a,removedCount:0};let c=a.split(/\r?\n/u),d=new Set;for(let a=0;a<b.length;a+=1)for(let c=a+1;c<b.length;c+=1){let f=b[a],g=b[c];if(d.has(f.startLine)||d.has(g.startLine))continue;let h=f.header.length>0&&f.header.length===g.header.length&&f.header.every((a,b)=>a===g.header[b]),i=(0,e.xX)(f.header,g.header),j=(0,e.xX)(f.firstCol,g.firstCol),k=(0,e.xX)(f.dataCells,g.dataCells),l=Math.max((0,e.HW)((0,e.sg)(f.dataCells),(0,e.sg)(g.dataCells)),(0,e.HW)((0,e.sg)(g.dataCells),(0,e.sg)(f.dataCells)));if(!(h&&k>=.6)&&!(i>=.7&&j>=.6)&&!(j>=.6&&l>=.6))continue;let[m,n]=f.bodyChars>=g.bodyChars?[f,g]:[g,f];for(let a=n.startLine;a<=n.endLine;a+=1)d.add(a)}return 0===d.size?{markdown:a,removedCount:0}:{markdown:c.filter((a,b)=>!d.has(b)).join("\n"),removedCount:d.size,removedLineNumbers:[...d].sort((a,b)=>a-b)}}function H(a){let b=G(a.map(a=>a.content).join("\n\n"));if(0===b.removedCount)return{removedCount:0,chapterFixed:0};let c=new Set(b.removedLineNumbers||[]),d=0,e=0,f=0;for(let b=0;b<a.length;b+=1){let g=a[b],h=g.content.split("\n"),i=new Set;for(let a=0;a<h.length;a+=1)c.has(d+a)&&i.add(a);i.size>0&&(g.content=h.filter((a,b)=>!i.has(b)).join("\n"),e+=i.size,f+=1),d+=h.length,b<a.length-1&&(d+=1)}return{removedCount:e,chapterFixed:f}}function I(a){let b=a.split(/\r?\n/u),c=new Set,d=new Set,f=[],g=[],h=()=>{let a=(0,e.Jt)(f.join(""));a&&(c.has(a)?g.forEach(a=>d.add(a)):c.add(a)),f=[],g=[]};return(b.forEach((a,b)=>{let c=a.trim();if(!c||/^#{1,6}\s/u.test(c)||/^\s*\|/u.test(c))return void h();if(/^[-*•]\s/u.test(c)){h(),f=[c],g=[b],h();return}f.push(c),g.push(b)}),h(),0===d.size)?{markdown:a,removedCount:0}:{markdown:b.filter((a,b)=>!d.has(b)).join("\n"),removedCount:d.size}}function J(a,b){if(0===b.length)return{markdown:a,fixedCount:0,details:[]};let c=[...b].sort((a,b)=>a.start-b.start||a.end-b.end),d="",e=0,f=0,g=[];for(let b of c)b.start<e||b.end<=b.start||(d+=a.slice(e,b.start)+b.replacement,e=b.end,f+=1,g.push(b.detail));return{markdown:d+=a.slice(e),fixedCount:f,details:[...new Set(g)].slice(0,8)}}function K(a,b){let c=a,f=0,g=[],h=function(a){if(!a)return{nodeAuthorities:[],crossSectionAuthorities:{},codeAuthorities:{}};let b=[];for(let c of a.byDomain.get("schedule")??[])c.label.startsWith("里程碑:")&&"number"==typeof c.value&&!(c.value<=0)&&b.push({node:c.label.slice(4),offset:`第${c.value}日`});let c={},d=[...a.byDomain.get("equipment")??[],...a.byDomain.get("quantity")??[]];for(let[a,b]of Object.entries(e.tH)){let e=d.find(a=>b.test(a.label)||a.anchors.some(a=>b.test(a)));e&&"number"==typeof e.value&&e.value>0&&(c[a]=e.value)}for(let b of[{key:"villageCount",domain:"redline",label:"自然村数量"},{key:"slackDays",domain:"schedule",label:"机动工期"},{key:"scheduleDays",domain:"contract",label:"总工期"}]){let d=(a.byDomain.get(b.domain)??[]).find(a=>a.label===b.label&&"number"==typeof a.value);d&&"number"==typeof d.value&&d.value>0&&(c[b.key]=d.value)}let f={};for(let b of a.byDomain.get("spec")??[])"string"==typeof b.value&&b.value&&(f[b.anchors[0]??b.label]=b.value);let g=(a.byDomain.get("labor")??[]).find(a=>"劳动力峰值"===a.label);return{nodeAuthorities:b,crossSectionAuthorities:c,codeAuthorities:f,laborPeakAuthority:g&&"number"==typeof g.value&&g.value>0?g.value:void 0}}(b?.authorityIndex),i={...h.crossSectionAuthorities};b?.scheduleAuthority!==void 0&&b.scheduleAuthority>0&&(i.scheduleDays=b.scheduleAuthority),b?.assemblyRateAuthority!==void 0&&b.assemblyRateAuthority>0&&(i.prefabRatio=b.assemblyRateAuthority);let l=b?.laborPeakAuthority??h.laborPeakAuthority,m=b?.quantityAnchors??[];for(let a of[a=>(function(a,b=[]){if(0===b.length)return{markdown:a,fixedCount:0,details:[]};let c=[];for(let d of b){if(d.start<0||d.end<=d.start||d.end>a.length)continue;let b=Number(a.slice(d.start,d.end).replace(/,/gu,""));!Number.isFinite(b)||Math.abs(b-d.value)>1e-6||c.push({start:d.start,end:d.end,replacement:String(d.authorityValue),detail:`${d.name} ${d.value}${d.unit}→${d.authorityValue}${d.unit}(以工程量清单汇总值为准)`})}return J(a,c)})(a,m),a=>(function(a,b){let c=void 0!==b&&b>0?b:(0,d.QW)(a);if(void 0===c)return{markdown:a,fixedCount:0,details:[]};let f=[],g=b=>{for(let g of a.matchAll(b)){let b=Number(g[1].replace(/[,,]/gu,""));if(!Number.isFinite(b)||b<=0)continue;let h=g.index+g[0].indexOf(g[1]),i=a.lastIndexOf("\n",g.index)+1,j=a.indexOf("\n",g.index);-1===j&&(j=a.length),/^\s*\|.*\|\s*$/u.test(a.slice(i,j))||"peak"!==(0,e.Zi)(a,h,i).group||(0,d.rx)(a,h)||/人(?:以内|以下|之内)/u.test(a.slice(h+g[1].length,h+g[1].length+8))&&/控制/u.test(a.slice(Math.max(0,h-16),h))||b!==c&&f.push({start:h,end:h+g[1].length,replacement:String(c),detail:`劳动力峰值 ${b}人→${c}人(以分阶段投入明细表为准)`})}};for(let b of(g(d.Dp),g(e.X6),a.matchAll(/(?:高峰期|高峰|峰值)[^。;;\n]{0,16}?控制(?:在|为|到)?(?:约)?\s*([\d,]+)\s*人(?:以内|以下|之内)?/gu))){let a=Number(b[1].replace(/[,,]/gu,""));if(!Number.isFinite(a)||a<=0||a>=c)continue;let d=b.index+b[0].indexOf(b[1]);f.push({start:d,end:d+b[1].length,replacement:String(c),detail:`劳动力控制上限 ${a}人→${c}人(与分阶段投入明细表峰值自洽)`})}return J(a,f)})(a,l),a=>(function(a,b){let c=a,d=[],f=b?.scheduleAuthority;if(void 0!==f&&f>0){let a=[...c.matchAll(/(?:开工令下发后|开工后)第(\d{1,3})[日天]/gu)].map(a=>Number(a[1])),b=a.length>0?Math.max(...a):0;if(b>0&&b!==f){let a=f/b,e=[];for(let b of c.matchAll(/(?:开工令下发后|开工后)第(\d{1,3})[日天]/gu)){let c=Math.max(1,Math.round(Number(b[1])*a)),d=b.index+b[0].indexOf(b[1]);e.push({start:d,end:d+b[1].length,replacement:String(c),detail:`节点日期 ${b[1]}日→${c}日(总工期${f}日历天体系缩放)`})}for(let b of c.matchAll(/第(\d{2,3})日(?=[^。;;\n]{0,8}竣工验收)/gu)){let c=Math.max(1,Math.round(Number(b[1])*a));e.push({start:b.index,end:b.index+b[0].length,replacement:`第${c}日`,detail:`竣工验收节点 ${b[1]}日→${c}日(总工期${f}日历天体系缩放)`})}for(let b of c.matchAll(/(竣工验收(?:合格)?[^。;;\n]{0,8}?[((])第(\d{2,3})日([))])/gu)){let c=Math.max(1,Math.round(Number(b[2])*a));e.push({start:b.index,end:b.index+b[0].length,replacement:`${b[1]}第${c}日${b[3]}`,detail:`竣工验收节点 ${b[2]}日→${c}日(总工期${f}日历天体系缩放)`})}if(e.length>0){let a=J(c,e);c=a.markdown,d.push(...a.details.slice(0,8));let b=/^(\|[^|]*\|)\s*开工令下发后第(\d+)日\s*\|\s*开工令下发后第(\d+)日\s*\|\s*(\d+)\s*日\s*(\|.*)$/u,f=c.split(/\r?\n/u),g=0,h=0;for(let a=0;a<f.length;a+=1){let c=f[a].match(b);if(!c){g=0;continue}let d=Number(c[3]),e=g>0?g+1:Number(c[2]),i=Math.max(d,e+1),j=i-e+1;(e!==Number(c[2])||i!==d||j!==Number(c[4]))&&(f[a]=`${c[1]} 开工令下发后第${e}日 | 开工令下发后第${i}日 | ${j}日 ${c[5]}`,h+=1),g=i}h>0&&(c=f.join("\n"),d.push(`三列进度表链式重算 ${h} 行(开始/持续列与缩放后结束列自洽)`))}}}let g=c.split(/\r?\n/u),h=/^\|.+\|$/u,i=[],j=0;for(let a of g)i.push({start:j,end:j+a.length}),j+=a.length+1;let k=a=>{let b=[];return/清理|预验收|收尾/u.test(a)&&b.push("cleanup"),/竣工验收/u.test(a)&&b.push("completion"),/装饰|幕墙/u.test(a)&&b.push("decoration"),/机电/u.test(a)&&b.push("mep"),/二次|ALC|墙板|砌体/u.test(a)&&b.push("secondary"),/主体|封顶/u.test(a)&&b.push("topping"),/土方|基坑|基础|支护/u.test(a)&&b.push("excavation"),b},l=a=>(a.split("|")[1]||"").trim(),m=a=>{let b;for(let c of a.matchAll(/第(\d{1,3})[日天]/gu)){let d=a.slice(Math.max(0,(c.index??0)-8),c.index??0);/(?:合格|封顶|移交|完成|进场|退场)后$/u.test(d)||(b={value:Number(c[1]),start:(c.index??0)+c[0].indexOf(c[1]),end:(c.index??0)+c[0].lastIndexOf(c[1])+c[1].length})}return b},n=new Map,o=[];for(let a=0;a<g.length;a+=1){if(!h.test(g[a].trim()))continue;let b=a;for(;a<g.length&&h.test(g[a].trim());)a+=1;let c=a,d=g.slice(Math.max(0,b-6),b).join("\n");if(/总进度计划|施工总进度|总进度安排|总工期控制|总工期/u.test(d)){for(let a=b;a<c;a+=1){let b=l(g[a]),c=m(g[a]);if(!(!c||/---/u.test(b)))for(let a of k(b)){let b=n.get(a);(void 0===b||c.value>b)&&n.set(a,c.value)}}o.push({start:i[b].start,end:i[c-1].end})}}for(let a of b?.nodeAuthorities??[]){let b=a.offset.match(/第(\d{1,3})[日天]/u);if(!b)continue;let c=Number(b[1]);if(!Number.isFinite(c)||c<1||c>3e3)continue;let d=e.ae.find(b=>b.re.test(a.node))?.key;if(void 0===d)continue;let f=n.get(d);void 0!==f&&f!==c&&(o.length=0),n.set(d,c)}if(0===n.size)return{markdown:c,fixedCount:+(d.length>0),details:d};let p=[],q=a=>!o.some(b=>a>=b.start&&a<=b.end);for(let a=0;a<g.length;a+=1){if(!h.test(g[a].trim())||!q(i[a].start))continue;let b=l(g[a]),c=m(g[a]);if(!c||/---/u.test(b))continue;let d=k(b).map(a=>n.get(a)).find(a=>void 0!==a);if(void 0===d||c.value===d)continue;let f=e.ae.find(a=>k(b).includes(a.key))?.label||b.slice(0,12);p.push({start:i[a].start+c.start,end:i[a].start+c.end,replacement:String(d),detail:`表格节点“${f}”${c.value}日→${d}日(以总进度计划/总工期控制表为准)`})}let r=(a,b,c,d)=>{let f=e.ae.find(b=>b.re.test(a))?.key;if(void 0===f||!Number.isFinite(b)||b<1||b>3e3)return;let g=n.get(f);void 0!==g&&b!==g&&q(c)&&p.push({start:c,end:d,replacement:String(g),detail:`节点“${e.ae.find(a=>a.key===f)?.label||f}”工期 ${b}日→${g}日(以总进度计划表为准)`})};for(let a of c.matchAll(/第(\d{2,3})日(?:(?![))→。;;\n,、]).){0,14}?完成(?:(?![((→。;;\n,、]).){0,12}?(基坑支护及土方外运|装饰装修及幕墙|机电安装及智能化调试|室外工程及竣工验收|地下结构出正负零|主体结构封顶|正负零|封顶)/gu)){let b=a.index+a[0].indexOf(a[1]);r(a[2],Number(a[1]),b,b+a[1].length)}for(let a of c.matchAll(/(竣工验收)(?:(?!(?:后|第\d{2,3}[日天]|,|、|→)).){0,10}?第(\d{2,3})[日天]/gu)){let b=a.index+a[0].indexOf(a[2]);r(a[1],Number(a[2]),b,b+a[2].length)}for(let a of c.matchAll(/(基坑支护|正负零|封顶|装饰装修|机电安装|竣工验收)(?:(?!(?:第\d{2,3}[日天]|,|、)).){0,8}?完成[^。;;\n]{0,10}?第(\d{2,3})[日天]/gu)){let b=a.index+a[0].indexOf(a[2]);r(a[1],Number(a[2]),b,b+a[2].length)}for(let a of c.matchAll(/(主体(?:结构)?封顶)(?!后)(?:(?!(?:第\d{2,3}[日天]|,|、|完成|\||[。;;\n])).){0,20}?第(\d{2,3})日/gu)){let b=a.index+a[0].indexOf(a[2]);r(a[1],Number(a[2]),b,b+a[2].length)}let s=J(c,p);return{markdown:s.markdown,fixedCount:s.fixedCount+ +(d.length>0),details:[...d,...s.details].slice(0,12)}})(a,{scheduleAuthority:b?.scheduleAuthority,nodeAuthorities:h.nodeAuthorities}),a=>(function(a,b,c){let d=[];for(let c of e._F){if("number"!==c.kind)continue;let f=new Set,g=[],h=[];for(let b of c.patterns)for(let d of a.matchAll(b)){let b=d[0].slice(0,40);if(e.we.test(b)||/按不少于|不少于|至少|不低于/u.test(b))continue;if("scheduleDays"===c.key){let c=b.indexOf(String(d[1]));if(c>=0&&/(?:阶段|第\d+日|至第|共|集中)/u.test(a.slice(Math.max(0,(d.index||0)+c-16),(d.index||0)+c)))continue}let i=a.lastIndexOf("\n",d.index)+1,j=a.indexOf("\n",d.index);-1===j&&(j=a.length);let k=a.slice(i,j);if(e.ZN.test(k))continue;let l=Number(d[1]);if(!Number.isFinite(l)||l<=0)continue;let m=(0,e.Rw)(a,d.index||0,b,i);/^\s*\|/u.test(k)?(f.add(l),h.push({value:l,group:m})):g.push({value:l,group:m})}let i=b?.[c.key],j=void 0!==i&&i>0?i:1===f.size?[...f][0]:void 0;if(void 0!==j&&[...g.filter(a=>""===a.group),...void 0!==i?h:[]].some(a=>a.value!==j))for(let b of c.patterns)for(let f of a.matchAll(b)){let b=f[0].slice(0,40);if(e.we.test(b))continue;let g=a.lastIndexOf("\n",f.index)+1,h=a.indexOf("\n",f.index);-1===h&&(h=a.length);let k=a.slice(g,h);if(e.ZN.test(k)||/^\s*\|/u.test(k)&&void 0===i)continue;let l=Number(f[1]);if(!Number.isFinite(l)||l<=0||!/^\s*\|/u.test(k)&&""!==(0,e.Rw)(a,f.index||0,b,g)||l===j)continue;let m=f.index+f[0].indexOf(f[1]),n=void 0!==i&&i>0?"scheduleDays"===c.key?"以绑定资料计划工期为准":"以绑定资料锁定口径为准":"以表格口径为准";d.push({start:m,end:m+f[1].length,replacement:String(j),detail:`${c.label} ${l}${c.unit}→${j}${c.unit}(${n})`})}}for(let b of e._F){if("code"!==b.kind)continue;let f=c?.[b.key];if(!f)continue;let g=[];for(let c of b.patterns)for(let b of a.matchAll(c)){let c=b[0].slice(0,40);if(e.we.test(c))continue;let d=a.lastIndexOf("\n",b.index)+1,h=a.indexOf("\n",b.index);-1===h&&(h=a.length);let i=a.slice(d,h);if(e.ZN.test(i)||/按不少于|不少于|至少|不低于/u.test(c)||!/^\s*\|/u.test(i)&&""!==(0,e.Rw)(a,b.index||0,"",d)||b[1]===f)continue;let j=b.index+b[0].indexOf(b[1]);g.push({start:j,end:j+b[1].length,raw:c})}for(let c of g)d.push({start:c.start,end:c.end,replacement:f,detail:`${b.label} ${a.slice(c.start,c.end)}→${f}(以工程量清单锁定口径为准)`})}return J(a,d)})(a,i,h.codeAuthorities),a=>(function(a,b){if("slope"!==b)return{markdown:a,fixedCount:0,details:[]};let c=0,e=0,f=a.split(/\r?\n/u).map(a=>{let b=a.trim();return/^#{1,6}\s/u.test(b)||/^\s*\|/u.test(b)||!d.re.test(a)?a:a.split(/(?<=[。;;])/u).map(a=>{if(!d.re.test(a))return a;if(!d.mO.test(a))return c+=1,"";let b=/([。;;])$/u.exec(a)?.[1],f=a.split(/[,、]/u).filter(a=>!k.test(a)).join(",");for(let[a,c]of(void 0===b||/[。;;]$/u.test(f)||(f+=b),j))f=f.replace(a,c);return e+=1,f}).join("")});return 0===c&&0===e?{markdown:a,fixedCount:0,details:[]}:{markdown:f.join("\n"),fixedCount:c+e,details:[`支护体系确定性裁决(图纸/地质槽位:放坡喷锚类):删除桩族句 ${c} 句、改写混句 ${e} 句`]}})(a,b?.supportAuthority),a=>(function(a){let b=0,c=[];return{markdown:a.replace(/第(\d{1,4})订(?=[))])/gu,(a,d)=>(b+=1,c.push(`法规文号残缺:第${d}订→第${d}号`),`第${d}号`)),fixedCount:b,details:c}})(a),a=>(function(a){let b=0,c=[];return{markdown:a.replace(/(?<=[\u4e00-\u9fa5])(?<!第)(?<!,)(\d{4,6})(?=主?\s*要?\s*工程量(?!清单))/gu,a=>(b+=1,c.length<12&&c.push(`误入数字粘连清洗:删除“${a}”并补逗号`),",")),fixedCount:b,details:c}})(a),a=>(function(a,b){if(!b||b<=0)return{markdown:a,fixedCount:0,details:[]};let c=0,d=[];return{markdown:a.replace(/第(\d{1,3})日[ \t\u00a0]*(至|~|~)[ \t\u00a0]*第(\d{4,6})[ \t\u00a0]*日/gu,(a,e,f,g)=>{let h=Number(e),i=Number(g);return h>b||i<=b?a:(c+=1,d.length<12&&d.push(`日区间超限截断:“${a.replace(/\s+/gu,"")}”→“第${e}日${f}第${b}日”`),`第${e}日${f}第${b}日`)}),fixedCount:c,details:d}})(a,b?.scheduleAuthority)]){let b=a(c);b.markdown!==c&&(c=b.markdown,f+=b.fixedCount,g.push(...b.details))}return{markdown:c,fixedCount:f,details:g.slice(0,12)}}function L(a){let b=(a=a.replace(/[。;!?]{2,}/gu,a=>a[0]??"").replace(/,(?=[。;!?])/gu,"")).split(/(?<=[。!?;\n])/u),c=[],d=0,e=[];for(let a of b){let b=a.replace(/\s+/gu,"");if(b.length>=20&&!/^[|#>]/.test(a.trimStart())&&e[e.length-1]?.replace(/\s+/gu,"")===b){d+=1,c.push(`相邻整句重复折叠:“${b.slice(0,24)}”`);continue}e.push(a)}return{markdown:e.map(a=>{let b=a.trimStart();if(/^[|#]/.test(b))return a;let e=a,f=!0,g=0;for(;f&&g<20;){f=!1,g+=1;for(let a=16;a>=4;a-=1){for(let b=0;b+2*a<=e.length;b+=1){let g=e.slice(b,b+a);if((/[0-9]/.test(g)||/[\u4e00-\u9fa5]/.test(g))&&e.slice(b+a,b+2*a)===g){e=e.slice(0,b+a)+e.slice(b+2*a),f=!0,d+=1,c.push(`相邻重复短语折叠:“${g.slice(0,24)}”`);break}}if(f)break}if(f)continue;for(let a=20;a>=9;a-=1){for(let b=0;b+a<=e.length;b+=1){let g=e.slice(b,b+a);if(!/[\u4e00-\u9fa5]/.test(g[0]||""))continue;let h=/[0-9]/.test(g);if(!h&&a<12||h&&(/\d$/.test(g)||/[|→\-—]/.test(g)))continue;let i=e.indexOf(g);if(i!==b||-1===e.indexOf(g,i+1))continue;let j=0,k=e.indexOf(g,i+1);for(;-1!==k;)e=e.slice(0,k)+e.slice(k+a),j+=1,k=e.indexOf(g,k);if(j>0){f=!0,d+=j,c.push(`隔位重复短语折叠:“${g.slice(0,24)}”\xd7${j}`);break}}if(f)break}if(f)continue;let a="kW|kVA|MPa|㎡|m\xb2|m\xb3|mm|cm|%",b=RegExp(`(\\d+(?:\\.\\d+)?)(?:${a})(?=\\s*\\d+(?:\\.\\d+)?(?:${a}))`,"gu").exec(e);if(b){let g=b.index+b[0].length,h=e.slice(g).match(RegExp(`^\\s*(\\d+(?:\\.\\d+)?)(?:${a})`));h&&(e=e.slice(0,g)+e.slice(g+h[0].length),f=!0,d+=1,c.push(`数值单位粘连折叠:“${b[0]}${h[0].trim()}”→“${b[0]}”`))}if(f)continue;let h=e;(e=e.replace(/[,,]{2,}/gu,",").replace(/[。;!?]{2,}/gu,a=>a[0]).replace(/,(?=[。;!?])/gu,""))!==h&&(f=!0,c.push("残留重复标点归一"))}return e}).join(""),fixedCount:d,details:c.slice(0,8)}}function M(a,b){let c=[];if(b?.areaSummary)for(let d of a.matchAll(/\|\s*按施工图设计文件确定\s*\|/gu))c.push({start:d.index+1,end:d.index+d[0].length-1,replacement:` ${b.areaSummary} `,detail:`工程概况一览表建设规模套话→“${b.areaSummary}”`});if(b?.scheduleDays!==void 0&&b.scheduleDays>0)for(let d of a.matchAll(/\|\s*按合同约定工期执行\s*\|/gu))c.push({start:d.index+1,end:d.index+d[0].length-1,replacement:` ${b.scheduleDays}个日历天 `,detail:`工程概况一览表工期套话→“${b.scheduleDays}个日历天”`});if(0===c.length)return{markdown:a,fixedCount:0,details:[]};let d=J(a,c);return{markdown:d.markdown,fixedCount:d.fixedCount,details:d.details}}function N(a){let b=a.match(/(### 6\.1\s+施工部署与施工流水组织[\s\S]*?)(?=### 6\.2|## 第[六七]章|$)/u);if(!b)return{markdown:a,fixedCount:0,details:[]};let c=b[0],d=["三检","样板引路","隐蔽验收","见证取样","试块养护","分部分项报验"],e=d.filter(a=>c.includes(a)).length;if(e>=3)return{markdown:a,fixedCount:0,details:[]};let f=`
225
218
  质量保障体系与安全文明管理同频运行:项目部实行“三检制”(自检、互检、交接检),每道工序经班组自检、质量员复检合格后报监理单位验收;推行样板引路制度,主体结构、装配式构件安装、ALC墙板安装、幕墙安装等主要分项工程在大面积施工前先做样板,经建设、监理单位验收确认后方可展开;隐蔽工程(钢筋、防水、管线预埋等)覆盖前由质量员组织隐蔽验收并留存影像记录;原材料进场按见证取样要求送检,混凝土试块按规范留置并落实标养与同条件养护;分部分项工程验收严格执行报验程序,验收资料与工程进度同步归档,确保“合格”质量标准与“确保黄山杯”创优目标逐级落实。`,g=(b.index??0)+c.length;return{markdown:a.slice(0,g)+f+a.slice(g),fixedCount:1,details:[`6.1 施工部署块补全质量保障协同段(核心术语 ${d.length-e}/${d.length} 缺失)`]}}let O=[/农民工工资专用账户|工资专用账户|农民工工资/u,/劳务用工|劳务管理|实名制|工资支付/u,/农民工|劳务/u,/工资/u];function P(a){if((0,f.SQ)(a))return{markdown:a,fixedCount:0,details:[]};let b=a.split("\n");for(let a of O)for(let c=0;c<b.length;c+=1){let d=b[c];if(/^\s*[#|<>]|^\s*[-*·]/u.test(d)||!a.test(d))continue;let e="项目部按规定为作业人员办理工伤保险,参保信息纳入实名制管理,发生工伤事故时按法定程序申报处理。";return b[c]=/[。;;]$/u.test(d.trim())?`${d}${e}`:`${d}。${e}`,{markdown:b.join("\n"),fixedCount:1,details:["劳务管理段落补写工伤保险缴纳表述"]}}return{markdown:a,fixedCount:0,details:[]}}function Q(a){let b=a,c=0,d=[];for(let a of[{from:/施工过程中如涉及危险性较大的分部分项工程[^。;;\n]*?(?:未经审批不得实施|后方可实施|方可实施)/gu,to:"危险性较大的分部分项工程按住房和城乡建设部令第37号与建办质〔2018〕31号规定逐项辨识、分级管控:凡达到危大工程判定线的分项,施工前编制专项施工方案,由技术负责人审核签字后报监理审批;超过一定规模的危大工程专项方案组织专家论证,未经审批不得实施",detail:"危大「如涉及」假设表述改写为逐项辨识分级管控"},{from:/发现[^。;;\n]{0,18}?(?:缺项|矛盾|缺失|遗漏)[^。;;\n]{0,24}?(?:时|后)在?\d+小时(?:内)?[^。;;\n]{0,10}?(?:补测|补正|补救|补录|补记)/gu,to:"记录经复核确认完整、数据准确后归档保存",detail:"踏勘补测类负面假设改写为复核确认归档"},{from:/确保[^。;;\n]{0,20}?与(?:本)?施工组织设计的?一致性/gu,to:"确认现场条件与施工组织设计相符",detail:"现场条件一致性两可暗示改写为确认相符"},{from:/本工程不允许分包[^。;;\n]{0,40}?组织实施/gu,to:"本工程全部施工任务由我公司项目部自行组织实施,严禁违法分包、转包及挂靠行为",detail:"「不允许分包」短板暗示改写为自主组织正向表述"},{from:/针对踏勘中发现的与设计图纸不一致或设计未明确的事项[^。;;\n]{0,60}?按以下[口经]径处理/gu,to:"项目部对照施工图与现场条件逐项复核,按以下程序处理",detail:"「设计图纸不一致」负面假设改写为对照复核程序"},{from:/杜绝施工过程中以工程量组价缺失为由提出变更申请/gu,to:"开工前完成工程量与清单核对,施工过程中严格按合同约定计量计价",detail:"「组价缺失」短板暴露改写为开工前核对闭环"},{from:/涉及危险性较大的分部分项工程,我公司将依据([^。;;\n]{0,80}?),在施工前单独编制专项施工方案并履行审批程序。/gu,to:"本工程危险性较大的分部分项工程管理执行$1规定:施工前编制专项施工方案,履行审批程序后实施。",detail:"危大「涉及」假设句式改写为管理执行闭环"},{from:/上述参数在后续各分项施工方案中逐项落位执行。?/gu,to:"上述参数作为全文统一控制基准,各分项施工方案均按此执行。",detail:"「后续落位」延迟承诺改写为统一控制基准"},{from:/补疑文件对施工内容作出以下明确修正:([^。\n]{0,200}?)。上述修正内容已纳入本施工组织设计对应分项方案,施工过程中不再另行变更。?/gu,to:"招标文件补疑明确:$1。上述内容已纳入本施工组织设计对应分项方案并统一执行。",detail:"「补疑修正不再变更」负面暗示改写为统一执行"},{from:/项目部按《建筑施工企业、工程项目安全生产管理机构设置及安全生产管理人员配备办法》(建质规〔2025〕3号)配备专职安全生产管理人员,公司分管安全负责人每月带班检查不得少于两次/gu,to:"项目部严格执行《建筑施工企业、工程项目安全生产管理机构设置及安全生产管理人员配备办法》(建质规〔2025〕3号),专职安全生产管理人员按标准配足配齐,公司分管安全负责人每月带班检查不少于两次并留存检查记录",detail:"安全人员配备与带班检查短板暗示改写为配足配齐正向表述"},{from:/项目部在开工令下发后第(\d+)日亮化及附属设施安装完成后,随即启动竣工清理与验收移交程序,确保开工令下发后第(\d+)日完成全部验收移交工作/gu,to:"亮化及附属设施安装于开工令下发后第$1日完成,竣工清理与验收移交按计划组织,开工令下发后第$2日全部验收移交工作完成",detail:"竣工验收赶工暗示改写为按计划组织正向表述"},{from:/隐蔽工程在施工过程中已按(\d+)小时提前通知要求完成验收,竣工阶段不再重复检验,但须将全部隐蔽验收影像资料纳入竣工资料归档/gu,to:"隐蔽工程按$1小时提前通知要求组织验收,验收合格后方可进入下道工序,全部隐蔽验收影像资料纳入竣工资料归档",detail:"「竣工阶段不再重复检验」自伤暗示改写为验收闭环正向表述"},{from:/本施工组织设计的编制边界为:本项目位于[^,。;;\n]{2,40},以补疑澄清文件对清单及图纸的修正口径为优先执行依据。?/gu,to:"本施工组织设计编制依据包括招标文件、补疑澄清文件、施工图及工程量清单,正文数据口径与补疑澄清文件修正口径保持一致。",detail:"编制边界两可暗示改写为编制依据一致性正向表述"},{from:/施工组织设计覆盖从开工令下发至竣工验收合格后移交保修的全过程管理,不包含招标范围以外的工程内容。?/gu,to:"施工组织设计覆盖开工令下发至竣工验收移交保修的全过程管理,全过程管理内容与招标范围一致。",detail:"「不包含招标范围以外」短板暗示改写为覆盖范围一致性表述"},{from:/面层混凝土弯拉强度达到设计强度且填缝完成前不得开放交通,由试验员按每检验批留置试块并送检,强度报告归档闭环。?/gu,to:"面层混凝土达到设计强度且填缝完成后开放交通,试验员按每检验批留置试块送检,强度报告归档形成质量闭环。",detail:"「不得开放交通」负面表述改写为达到条件后开放交通正向表述"},{from:/本项目以成熟可靠的常规工艺为主,未采用(?:行业认定的)?新(?:技术|材料|工艺|设备)(?:、新(?:技术|材料|工艺|设备)){1,3}(?:或新(?:技术|材料|工艺|设备))?[^。;;\n]{0,20}?。?/gu,to:"本项目工艺选择以成熟可靠为原则,全部采用经工程实践验证的成熟工艺、常规材料和标准化设备,确保各分项施工质量稳定可控。",detail:"「未采用新技术」短板自曝改写为成熟工艺正向表述"},{from:/本工程不进行分包,全部施工内容由我方自行组织完成/gu,to:"本工程全部施工任务由我公司项目部自行组织实施,严禁违法分包、转包及挂靠行为",detail:"「本工程不进行分包」否定式自述改写为自主组织正向表述"},{from:/(?:亮化与)?收尾阶段安排\s*\d+\s*个日历天[^。\n]{0,60}?项目经理组织各分组施工员进行内部预验收[^。\n]{0,80}?竣工验收。?/gu,to:"收尾阶段按总进度计划组织实施,项目经理组织内部预验收,预验收问题清单当日下发、限时整改、复查销项后申请正式竣工验收",detail:"「收尾阶段安排N个日历天」赶工暗示改写为按计划组织正向表述"}]){let e=[...b.matchAll(a.from)];0!==e.length&&(b=b.replace(a.from,a.to),c+=e.length,d.push(`${a.detail} ${e.length} 处`))}return{markdown:b,fixedCount:c,details:d}}let R={基坑支护与降水工程:"基坑支护与降水工程:基坑开挖深度达到判定线的区段按基坑支护与降水工程辨识,支护与降水方案经审批后实施。",高大模板支撑工程:"高大模板支撑工程:模板支撑搭设高度或荷载达到判定线的部位按高大模板支撑工程辨识,编制专项施工方案并组织验收。",脚手架工程:"脚手架工程:脚手架搭设高度达到判定线的部位按脚手架工程辨识,搭设与拆除执行专项施工方案。",起重吊装及安装拆卸工程:"起重吊装及安装拆卸工程:管道吊装、构件吊装等吊装作业按起重吊装及安装拆卸工程辨识,吊装专项方案经技术负责人审核后实施。",吊篮作业工程:"吊篮作业工程:外墙作业采用吊篮的区段按吊篮作业工程辨识,吊篮安拆验收合格后投入使用。",拆除工程:"拆除工程:既有建筑物、构筑物及设施拆除作业按拆除工程辨识,拆除前编制专项拆除方案并交底后实施。"};function S(a){let b=h.I.filter(b=>b.applicable(a));if(0===b.length)return{markdown:a,fixedCount:0,details:[]};let c=(0,h.xb)(a);if(!c)return{markdown:a,fixedCount:0,details:[]};let d=b.filter(a=>!a.aliases.some(a=>c.includes(a)));if(0===d.length)return{markdown:a,fixedCount:0,details:[]};let e=a.split(/\r?\n/u),f=e.findIndex(a=>/危大/u.test(a)&&/^#{2,4}\s/u.test(a.trim()));if(f<0){for(let a=e.length-1;a>=0;a-=1)if(/危大/u.test(e[a])){f=a;break}}if(f<0)return{markdown:a,fixedCount:0,details:[]};let g=d.map(a=>R[a.name]??"").filter(Boolean);return 0===g.length?{markdown:a,fixedCount:0,details:[]}:(e.splice(f+1,0,...g),{markdown:e.join("\n"),fixedCount:g.length,details:[`危大辨识清单补写:${d.map(a=>a.name).join("、")}`]})}let T={"施工工地周边100%围挡":"施工工地周边100%围挡:施工现场沿用地红线设置连续封闭围挡,围挡立面保持整洁完好。","物料堆放100%覆盖":"物料堆放100%覆盖:易产生扬尘的砂石、水泥等散体材料堆场采用密目网全覆盖。","出入车辆100%冲洗":"出入车辆100%冲洗:出入口设置车辆冲洗设施,车辆驶离工地前冲洗干净后方可上路。","施工现场地面100%硬化":"施工现场地面100%硬化:施工便道、材料加工区及堆场地面全部硬化处理。","拆迁工地100%湿法作业":"拆迁工地100%湿法作业:拆除作业配备雾炮机同步喷淋降尘,全程湿法作业。","渣土车辆100%密闭运输":"渣土车辆100%密闭运输:渣土运输车辆加盖密闭篷布,装载高度不超过车厢挡板。"};async function U(a){if(!/扬尘|环保|文明施工|绿色施工/u.test(a))return{markdown:a,fixedCount:0,details:[]};let b=[...new Set(a.split(/\r?\n/u).flatMap(a=>{let b=a.trim();return!b||/^#{1,6}\s/u.test(b)||/^\s*\|/u.test(b)||!/围挡|覆盖|堆放|冲洗|硬化|湿法|密闭|渣土|扬尘|降尘/u.test(b)?[]:b.split(/(?<=[。!?!?;;])/u).map(a=>a.trim()).filter(a=>a.length>=8&&a.length<=120)}))],c=await (0,e.CZ)(e.No.map(a=>({key:a.name,text:a.query})),b),d=/(?:本项目|本工程|该工程|该项目|本标段|本施工项目)[^。;;\n]{0,30}(?:无拆迁|不涉及拆迁|无房屋拆除|无拆除)/u.test(a),f=e.No.filter(a=>!c.get(a.name)&&!(0,e.vq)(a.name,b)).filter(a=>!("拆迁工地100%湿法作业"===a.name&&d)).map(a=>a.name);if(0===f.length)return{markdown:a,fixedCount:0,details:[]};let g=a.split(/\r?\n/u),h=g.findIndex(a=>!/^\s*\|/u.test(a)&&!/^#{1,6}\s/u.test(a.trim())&&/六个百分百|100%围挡|扬尘治理/u.test(a)),i=h>=0?h+1:-1;if(i<0){let a=[];for(let b=0;b<g.length;b+=1)/^#{1,6}\s/u.test(g[b].trim())&&a.push({index:b,text:g[b]});let b=[...a].reverse().find(a=>/扬尘|降尘|防尘|六个百分百/u.test(a.text))??[...a].reverse().find(a=>/环保|文明施工|绿色施工/u.test(a.text));if(i=g.length,b){for(let a=b.index+1;a<g.length;a+=1)if(/^#{1,6}\s/u.test(g[a].trim())){i=a;break}}}let j=f.map(a=>T[a]??"").filter(Boolean);return g.splice(i,0,...j),{markdown:g.join("\n"),fixedCount:j.length,details:[`扬尘六个百分百补写:${f.join("、")}`]}}let V=[{from:/全文唯一劳动力峰值口径/gu,to:"全文劳动力峰值基准",detail:"劳动力峰值口径"},{from:/统一控制口径/gu,to:"统一控制基准",detail:"统一控制口径"},{from:/按以下口径处理/gu,to:"按以下程序处理",detail:"按以下口径处理"},{from:/拆除工程工作包/gu,to:"拆除工程",detail:"拆除工程工作包"},{from:/按工作包逐项说明/gu,to:"按专业工程逐项说明",detail:"按工作包逐项说明"}];function W(a){let b=a,c=0,d=[];for(let a of V){let e=[...b.matchAll(a.from)];0!==e.length&&(b=b.replace(a.from,a.to),c+=e.length,d.push(`${a.detail} ${e.length} 处`))}return{markdown:b,fixedCount:c,details:d}}function X(a){let b=a.split(/\r?\n/u),c=0,d=/^\s*\|(?:\s*:?-{3,}:?\s*\|)+\s*$/u,e=/^\s*\|.+\|\s*$/u;for(let a=0;a<b.length;a+=1){let f=b[a].trim();if(!d.test(f)||a>0&&e.test(b[a-1].trim())||a+1>=b.length||!e.test(b[a+1].trim()))continue;let g=f.split("|").filter(a=>""!==a.trim()).length;if(g<2)continue;let h=`| 项目 | 内容 |${" 备注 |".repeat(Math.max(0,g-2))}`;b.splice(a,0,h),c+=1,a+=1}return{markdown:b.join("\n"),fixedCount:c,details:c>0?[`无表头表格补齐表头 ${c} 处`]:[]}}let Y=[{from:/钢板桩或型钢支撑支护/gu,sides:[{text:"钢板桩支护",keyword:/钢板桩/},{text:"型钢支撑支护",keyword:/型钢/}],detail:"钢板桩型钢两可归一为钢板桩"},{from:/钢板桩或木挡板支护/gu,sides:[{text:"钢板桩支护",keyword:/钢板桩/},{text:"木挡板支护",keyword:/木挡板|挡板/}],detail:"沟槽支护两可归一为钢板桩支护"},{from:/放坡或钢板桩支护/gu,sides:[{text:"1:0.5放坡加钢板桩支护",keyword:/放坡|坡率/},{text:"钢板桩支护",keyword:/钢板桩|排桩/}],detail:"放坡钢板桩两可归一为组合支护"},{from:/打桩机打入或混凝土基础固定/gu,sides:[{text:"打桩机打入",keyword:/打入|打桩/},{text:"混凝土基础固定",keyword:/混凝土基础|现浇|基础固定/}],detail:"护栏立柱安装两可归一为打桩机打入"},{from:/放坡或加设挡板支护/gu,sides:[{text:"放坡支护",keyword:/放坡|坡率/},{text:"挡板支护",keyword:/挡板|钢板桩/}],detail:"沟槽支护两可归一为放坡支护"},{from:/放坡或挡板支护/gu,sides:[{text:"放坡支护",keyword:/放坡|坡率/},{text:"挡板支护",keyword:/挡板|钢板桩/}],detail:"沟槽支护两可归一为放坡支护"},{from:/放坡或支护/gu,sides:[{text:"放坡支护",keyword:/放坡|坡率/},{text:"挡板支护",keyword:/挡板|钢板桩/}],detail:"放坡支护两可归一"}];function Z(a,b){let c=a,d=0,f=[];for(let a of Y){let e=[...c.matchAll(a.from)];if(0===e.length)continue;let g=b?.supportForm&&a.sides[1].keyword.test(b.supportForm)?a.sides[1]:a.sides[0];c=c.replace(a.from,g.text),d+=e.length,f.push(`${a.detail} ${e.length} 处`)}if(b?.decisionLock?.length){let a=[];for(let d of c.matchAll(/([一-龥]{2,12})或([一-龥]{2,12})/gu)){let c=(0,i.m4)(d[1],d[2]);if(!c)continue;let e=b.decisionLock.find(a=>a.id===c.id);if(!e||0===e.values.length)continue;let f=(0,i.nR)(c,d[1]);if(!f||f.end!==d[1].length)continue;let g=(0,i.nR)(c,d[2]);if(!g||0!==g.index)continue;let h=c.options.find(a=>e.values.includes(a.value)&&(a.aliases.test(d[1])||a.aliases.test(d[2]))),j=h?.value??e.values[0];a.push({start:(d.index??0)+f.index,end:(d.index??0)+d[1].length+1+g.end,target:j,detail:`“${d[1]}或${d[2]}”→“${j}”(${c.label})`})}for(let b of a.reverse())c=c.slice(0,b.start)+b.target+c.slice(b.end);a.length>0&&(d+=a.length,f.push(`决策项两可归一 ${a.length} 处:${a.map(a=>a.detail).join("、")}`))}let g=(0,e.Fr)(c);if(g.length>0){let a=g[0].message.replace(/^关键设计决策两可表述:/u,"").replace(/ 以并列\/悬置形态表述.*$/u,"");f.push(`两可表述缺口待复核:${a}`)}return{markdown:c,fixedCount:d,details:f}}let $=[{from:/,将报公共资源交易监督管理部门处理/gu,to:",由招标人按招标文件规定程序处理",detail:"公共资源交易监督管理"},{from:/按设计要求(?!目录|清单|索引|汇总)/gu,to:"按施工图设计文件",detail:"按设计要求留白改写"}],_=[{from:/详见设计图纸(?!目录|清单|索引|汇总)/gu,to:"详见施工图设计文件",detail:"数据行「详见设计图纸」留白"},{from:/按设计图纸(?!目录|清单|索引|汇总)/gu,to:"按施工图设计文件",detail:"数据行「按设计图纸」留白"},{from:/按图纸(?!目录|清单|索引|汇总)/gu,to:"按施工图设计文件",detail:"数据行「按图纸」留白"},{from:/见图纸(?!目录|清单|索引|汇总)/gu,to:"见施工图设计文件",detail:"数据行「(详)见图纸」留白"}];function aa(a){let b=a,c=0,d=[];for(let a of $){let e=[...b.matchAll(a.from)];0!==e.length&&(b=b.replace(a.from,a.to),c+=e.length,d.push(`${a.detail} ${e.length} 处`))}let e=0,f=[];return b=b.split("\n").map(a=>{if(!/^\s*\|/u.test(a))return a;let b=a;for(let a of _){let c=[...b.matchAll(a.from)];0!==c.length&&(b=b.replace(a.from,a.to),e+=c.length,f.push(`${a.detail} ${c.length} 处`))}return b}).join("\n"),e>0&&(c+=e,d.push(...f)),{markdown:b,fixedCount:c,details:d}}let ab=/^##\s+目录\s*$([\s\S]*?)(?=\n<div class="page-break"><\/div>|\n##\s+)/mu,ac=/^##\s+(第[一二三四五六七八九十百千万\d]+章)\s+(.+)$/gmu,ad=/^###\s+(\d+\.\d+)\s+(.+)$/gmu,ae={一:1,二:2,三:3,四:4,五:5,六:6,七:7,八:8,九:9,十:10};function af(a){let b=ab.exec(a);if(!b)return{markdown:a,fixedCount:0,details:[]};let c=[...a.matchAll(ac)].map(a=>({ordinal:function(a){let b=a.replace(/^第|章$/gu,"");return/^\d+$/.test(b)?Number(b):void 0!==ae[b]?ae[b]:2===b.length&&"十"===b[0]?10+(ae[b[1]??""]??0):void 0}(a[1]||""),heading:a[1]||"",title:a[2]?.trim()||""})).filter(a=>void 0!==a.ordinal&&a.title),d=[...a.matchAll(ad)].map(a=>({number:a[1]||"",major:Number((a[1]||"0").split(".")[0]),title:(a[2]||"").trim()}));if(0===c.length||0===d.length)return{markdown:a,fixedCount:0,details:[]};let e=[];for(let a of c)for(let b of(e.push(`${a.heading} ${a.title}`),d.filter(b=>b.major===a.ordinal)))e.push(` ${b.number} ${b.title}`);let f=`## 目录
226
219
 
227
220
  ${e.join("\n")}`;return b[0]===f?{markdown:a,fixedCount:0,details:[]}:{markdown:a.slice(0,b.index)+f+a.slice(b.index+b[0].length),fixedCount:1,details:["目录按正文 H2/H3 实际结构重建"]}}function ag(a){let b=a.split(/(\n\s*\n)/u),c=0,d=[];return{markdown:b.map(a=>{if(!a||!/[。!?!?]/u.test(a))return a;let b=new Set,f=!1,g=a.split(/\n/u).map(a=>{let g=a.trim();if(!g||/^#{1,6}\s/u.test(g)||g.startsWith("|"))return a;let h=a.split(/(?<=[。!?!?])/u),i=h.filter(a=>{let f=a.trim().replace(/\s+/gu,"");return f.length<e.jy||([...b].some(a=>a===f||a.length>f.length&&a.length-f.length<=e.jy&&a.endsWith(f))?(c+=1,d.push(f.slice(0,24)),!1):(b.add(f),!0))});return i.length!==h.length?(f=!0,i.join("")):a});return f?g.join("\n"):a}).join(""),fixedCount:c,details:d}}function ah(a){let b=(0,e.GJ)(a);if(0===b.length)return{markdown:a,fixedCount:0,details:[]};let c=[],d=a;for(let a of[...b].reverse()){let b=d.slice(a.start,a.end),e=/第\d{1,3}日(?:至|到|~|~|—|-)/u.exec(b);e&&(d=d.slice(0,a.start)+d.slice(a.start+e[0].length),c.push(b))}return{markdown:d,fixedCount:c.length,details:c}}function ai(a){let b=(0,e.TG)(a);if(0===b.length)return{markdown:a,fixedCount:0,details:[]};let c=a.split("\n"),d=a=>a.replace(/^\d+(?:\.\d+)*[..]?\s*/u,"").replace(/[\s::、。,,;;/|—-]/gu,"").replace(/工程$/u,""),g=new Set(c.filter(a=>/^###\s/u.test(a.trim())).map(a=>(0,f.Sw)(a.replace(/^###\s+/u,"").trim()))),h=new Set(c.filter(a=>/^###\s/u.test(a.trim())).map(a=>d(a.replace(/^###\s+/u,"").trim()))),i=new Set,j=[],k=b=>a.slice(0,b).split("\n").length-1,l=[],m=[];for(let a of b){let b=k(a.index),c=a.raw.replace(/((?:\d+|[一二三四五六七八九十]+))$/u,"");h.has(d(c))?l.push({line:b,raw:a.raw}):m.push({line:b,raw:a.raw})}for(let{line:a,raw:b}of l)i.add(a),j.push(`合并拆半小节:${b}`);let n=new Set;for(let{line:a,raw:b}of m){let d=[];for(let b=a+1;b<c.length&&!/^#{2,3}\s/u.test(c[b]);b+=1){let a=/^####\s+(.+)$/u.exec(c[b].trim());a&&d.push((0,f.Ld)(a[1].trim()))}if(0===d.length)continue;let e=new Map;for(let a of d)e.set(a,(e.get(a)??0)+1);let h=[...e.entries()].reduce((a,b)=>b[1]>a[1]?b:a)[0],i=b.replace(/(?:((?:\d+|[一二三四五六七八九十]+)))+$/u,"").replace(/工程$/u,""),k=`${i}${h}`,l=(0,f.Sw)(k);g.has(l)||n.has(l)||(n.add(l),c[a]=c[a].replace(/^(###\s+).+$/u,`$1${k}`),j.push(`防撞名重命名:${b} → ${k}`))}return{markdown:c.filter((a,b)=>!i.has(b)).join("\n"),fixedCount:j.length,details:j}}},64753:(a,b,c)=>{c.d(b,{Iu:()=>i,Mz:()=>n,UG:()=>m,hW:()=>p,jX:()=>h,t7:()=>l,xs:()=>o});var d=c(70933),e=c(1218),f=c(22157),g=c(87635);async function h(a){let b=[],c=new Set(a.scopedFilePaths),d=await Promise.all(g.xs.map(async b=>((0,f.Te)(a.signal),(await a.manager.search(a.projectRoot,b,{scope:"project",filters:{filePaths: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,g.qq)(`${a.sectionTitle||""}
@@ -230,7 +223,7 @@ ${b.content}`),content:b.content,roleId:a.fileRoleByPath.get(b.filePath),process
230
223
  ${e.content||""}`,h=(0,g.qq)(f);if(h<=0)continue;let i=d.file?.relativePath||c;b.push({chapterId:"project-basic",filePath:i,score:1+h,content:e.content,roleId:a.fileRoleByPath.get(i),processingType:a.fileProcessingByPath.get(i),sectionTitle:e.sectionTitle,source:"pinned-evidence"})}}let h=new Set;return b.sort((a,b)=>b.score-a.score).filter(a=>{let b=`${a.filePath}|${a.sectionTitle||""}|${(0,e.de)(a.content).slice(0,180)}`;return!h.has(b)&&(h.add(b),!0)})}function i(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 j(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 k(a,b){let c=`${b.sectionTitle||""}
231
224
  ${b.filePath}
232
225
  ${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 l(a){return`${a.sectionTitle||""}${a.content}`.slice(0,600)}function m(a,b,c,e){let f=b.map(b=>{let e=(0,d.A1)(b,a.requiredFacts)*j(a,b.processingType)+k(a,b),f=c.semantic?c.semantic.similarity(c.semantic.queryText,l(b)):0;return{...b,score:.5*e+10*f}});return(0,d.QR)(f,c,e)}function n(a,b,c){if(c<=0||b.length<=c)return b;let e=b.map(b=>({item:b,lexical:(0,d.A1)(b,a.requiredFacts)*j(a,b.processingType)+k(a,b)}));return e.sort((a,b)=>b.lexical-a.lexical),e.slice(0,c).map(a=>a.item)}function o(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 p(a){if((0,f.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},limit:20,weights:i(b),generationMode:!0});return(0,d.QR)(c.results.filter(b=>a.scopedFilePaths.includes(b.filePath)).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,{Ti:()=>n,_H:()=>m,re:()=>l});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;function k(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 l(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=k(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 m(a,b){let c=[],l=new Set(b.composition.map(a=>a.trade)),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;c.push(e),d=e+b.length}return c},n=(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)&&[...l].some(a=>a.length>b.length&&a.includes(g))){d=e+b.length;continue}c.push(e),d=e+b.length}return c},o=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),p=[];for(let b of o){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),k=0;for(let a of l)for(let b of n(j,a)){let c=j.slice(b+a.length,b+a.length+12),e=h.exec(c);e&&(!e[1]||d.test(e[1]))&&(k+=Number(e[2]))}k>0&&k===f.total&&p.push({start:g,end:i})}}let q=a=>p.some(b=>a>=b.start&&a<b.end);for(let f of b.composition)for(let b of n(a,f.trade)){if(q(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 m(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 m(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 m(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,l=h.indexOf(";",i),m=h.indexOf(";",i),n=h.indexOf("。",i),o=Math.min(-1===l?h.length:l,-1===m?h.length:m,-1===n?h.length:n);if(!a.slice(j,e+o).includes(d.name))continue;let p=b+d.spec.length,q=a.slice(p,p+16),r=g.exec(q);if(!r||k(r[2])!==d.family)continue;let s=Number(r[1]);if(s===d.quantity)continue;let t=p+r[0].indexOf(r[1]);c.push({kind:"material",label:`材料拆分 ${d.name}(${d.spec})`,start:t,end:t+r[1].length,actual:s,expected:d.quantity,message:`材料规格拆分数量与蓝图权威不一致:${d.name}(${d.spec})正文 ${s}${d.unit},蓝图权威 ${d.quantity}${d.unit}`,suggestion:"同名多规格材料的拆分数量必须与清单逐项一致,不得自行分配。"})}return c}function n(a,b){if(!b)return{markdown:a,fixedCount:0,details:[],residualCount:0};let c=m(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=m(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,{M8:()=>m,Xp:()=>q,a0:()=>l,dn:()=>r,hM:()=>k,mI:()=>t,xb:()=>p});var d=c(37047),e=c(41991),f=c(70208);let g=["对与评标活动有关的工作人员的纪律要求","评标委员会成员与投标人接触的限制","评标纪律与廉洁从业承诺要求","评审争议处理与投标澄清配合程序","评审结果确认与中标公示流程","评标办法与分值构成说明","异常低价评审与计算方式说明","清单计量与报价口径约定","投标文件实质性响应要求","投标保证金缴纳与退还程序","开标程序与投标文件递交截止时间","评标期间行为管控与资料闭环","预付款与进度款支付比例约定","履约担保与保证金缴纳退还约定","价格波动与合同价款调整约定","暂列金额与暂估价使用约定","税费计取与发票结算约定","违约责任与罚款赔偿条款"],h=["劳动力配置计划与高峰期人数安排","施工质量保证措施与验收标准","安全生产管理与教育培训要求","施工进度计划与关键线路安排","材料设备采购进场计划与检验要求","施工现场文明施工与环境保护管理","劳动纪律与班组作业管理制度","施工机械设备配置与维护保养计划","农民工工资支付保障与劳务实名制管理","材料采购质量证明与进场验收管理","工期承诺与进度考核奖惩管理"],i=/评标|投标|行贿|打招呼|递条子|廉洁|串标|围标|弄虚作假|干扰评标|纪律|澄清|中标|报价|清单计量|评审|保证金|开标|递交|争议|异常低价|评标基准价|预付款|进度款|担保|价格波动|材料调差|暂列金额|暂估价|计税|税金|发票|违约/u;function j(a){let b=a.sectionTitle?.trim()||"",c=(a.content||"").replace(/\s+/gu," ").slice(0,400);return b?`${b}。${c}`:c}function k(a){let b=a.sectionTitle?.trim()||a.content.replace(/\s+/gu,"").slice(0,60);return`${a.filePath}::${b}`}async function l(a,b){if(0===a.length)return{safe:[],excluded:[]};let c=a.filter(a=>i.test(j(a)));if(0===c.length)return{safe:[...a],excluded:[]};let e=c.map(j),f=await (0,d.Mv)(e,[...g],b),k=await (0,d.Mv)(e,[...h],b),l=new Set;for(let a of c){let b=j(a),c=Math.max(...g.map(a=>f(b,a))),d=Math.max(...h.map(a=>k(b,a)));c>=.6&&c>d&&l.add(a)}return{safe:a.filter(a=>!l.has(a)),excluded:[...l]}}async function m(a){return(0,e.A)({prototypes:[...g],negativePrototypes:[...h],threshold:.6,embedDocuments:a})}function n(a){return a.replace(/[\s\p{P}\p{S}]+/gu,"").toLowerCase()}let o=/^(?:我公司|本公司|我方|投标人|供应商|承包人)(?:就|对)[^,。;]{0,22}(?:均属|属实|真实有效|承担|负责|无异议|为准)$/u;function p(a){let b=a.trim().replace(/\s+/gu,"");if(!b||(0,f.mq)(b)||o.test(b))return!0;let c=n(b);if(g.some(a=>n(a)===c))return!0;let d=b.replace(/农民工工资保证金|工资保证金/gu,""),e=/评标|投标|开标|中标|评审|保证金|串标|围标|廉洁|询标|递交/u.test(d),h=/纪律|监督|争议|澄清|程序|行为|管控|限制|接触|公示|承诺|响应|办法/u.test(b);return!!(e&&h||/异常低价|评标基准价/u.test(b)||/电子保函|保函|投标保证金|履约担保|履约保证金|保证金(?:的)?(?:缴纳|退还|提交|方式)/u.test(b)&&!/农民工|工资|专用账户|实名|考勤|劳资/u.test(b)||/暂列金额|暂估价|材料调差/u.test(b)||/预付款(?:支付|比例|约定|申请|保函)|进度款(?:支付|申请|计量|约定)|履约担保/u.test(b)||/价格波动(?:调整|约定)|违约金(?:条款|约定)|计税|税金(?:计取|结算)|发票(?:开具|结算)/u.test(b))||q(b)}function q(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))||!!/营业执照|资质证书|安全生产许可证|资格预审|资格审查|资质审查|财务状况|业绩证明|业绩要求|银行资信|审计报告|信用记录|信用评价|不良行为记录|联合体投标|联合体协议/u.test(b)&&!/施工|技术|方案|措施|管理|控制|验收|工艺|流程|计划|组织|进度|质量|工期|文明|绿色|环保|节能|材料|设备|机械|人员|劳务|检验|检测|试验|保证|落实|制度/u.test(b)}function r(a){let b=a.trim().replace(/\s+/gu,"");return!!b&&!!/投标人|投标方|承包人资格|资格要求|资格审查|资格预审|资质要求|资质条件|资质等级|资格条件|财务状况|业绩要求|业绩证明|信用要求|联合体/u.test(b)&&/营业执照|资质证书|安全生产许可证|级及以上资质|财务状况|财务报告|审计报告|银行资信|业绩证明|类似业绩|信用记录|信用评价|不良行为记录|投标保证金|履约保证金/u.test(b)}async function s(a){let b=a.sections.filter(a=>a?.trim());if(0===b.length)return[];let c=b.filter(a=>!p(a)),e=c.filter(a=>i.test(a));if(0===e.length)return c;let f=`${a.chapterTitle} ${a.chapterPurpose||""}`.trim(),j=await (0,d.Mv)(e,[...g],a.embedDocuments),k=await (0,d.Mv)(e,f?[f]:[],a.embedDocuments),l=await (0,d.Mv)(e,[...h],a.embedDocuments),m=new Set;for(let a of e){let b=Math.max(...g.map(b=>j(a,b))),c=f?k(a,f):0,d=Math.max(...h.map(b=>l(a,b)));b>=.6&&b>c&&b>d&&m.add(a)}return c.filter(a=>!m.has(a))}async function t(a,b){return Promise.all(a.map(async a=>({...a,sections:await s({sections:a.sections||[],chapterTitle:a.title,chapterPurpose:a.purpose,embedDocuments:b})})))}},73186:(a,b,c)=>{c.d(b,{Su:()=>i,U2:()=>k,Zq:()=>f,am:()=>j});var d=c(76760);function e(a){return d.resolve(a).replace(/\\/gu,"/").toLowerCase()}function f(a,b=[]){return{projectId:a,allowedFilePaths:[...new Set(b.filter(Boolean).map(e))]}}function g(a){return!!a?.allowedFilePaths.length}function h(a,b){if(!g(b))return!0;if(!a)return!1;let c=e(a);return b.allowedFilePaths.includes(c)}function i(a,b){return a.filter(a=>h(a.filePath,b))}function j(a,b){return a.filter(a=>h(a.sourceFile,b))}function k(a,b,c){if(!g(b))return;let d=a.filter(a=>!h(a.filePath,b));if(d.length>0){let a=d.slice(0,5).map(a=>a.filePath).join(";");throw Error(`EVIDENCE_SCOPE_VIOLATION:${c}:${a}`)}}},73859:(a,b,c)=>{c.d(b,{$i:()=>f,E1:()=>j,d2:()=>i,oC:()=>g,p4:()=>d,rF:()=>h});let d={id:"default_general_document",name:"通用文档",factFields:[{id:"document_identity",name:"对象名称",aliases:["项目名称","工程名称","文档名称","任务名称","招标项目名称","建设项目名称"],category:"identity",cardinality:"single",derivationPolicy:"source_only",usagePolicy:"must_use",confidencePolicy:{minForGeneration:.75,minForValidation:.85,allowPathOnly:!1},conflictPolicy:"strict"},{id:"schedule_requirement",name:"周期要求",aliases:["计划工期","工期","周期要求","进度节点要求","开工日期","竣工日期"],category:"schedule",cardinality:"single",derivationPolicy:"source_only",usagePolicy:"must_use",confidencePolicy:{minForGeneration:.7,minForValidation:.8,allowPathOnly:!1},conflictPolicy:"strict"},{id:"quality_requirement",name:"质量要求",aliases:["质量要求","质量标准","验收要求","评价标准"],category:"quality",cardinality:"multiple",derivationPolicy:"source_only",usagePolicy:"use_if_relevant",confidencePolicy:{minForGeneration:.65,minForValidation:.75,allowPathOnly:!1},conflictPolicy:"allow_multiple"},{id:"safety_requirement",name:"安全合规要求",aliases:["安全要求","安全合规要求","风险控制要求","合规要求"],category:"safety",cardinality:"multiple",derivationPolicy:"source_only",usagePolicy:"use_if_relevant",confidencePolicy:{minForGeneration:.65,minForValidation:.75,allowPathOnly:!1},conflictPolicy:"allow_multiple"},{id:"technical_parameter",name:"技术参数",aliases:["技术参数","参数规格范围","规格","型号","尺寸","标准编号","材料设备"],category:"technical",cardinality:"multiple",derivationPolicy:"source_only",usagePolicy:"must_use",confidencePolicy:{minForGeneration:.7,minForValidation:.8,allowPathOnly:!1},conflictPolicy:"allow_multiple"},{id:"resource_plan",name:"资源配置",aliases:["劳动力","机械","检测设备","应急物资","资源配置","人员配置"],category:"resource",cardinality:"multiple",derivationPolicy:"plan_inferable",usagePolicy:"use_if_relevant",confidencePolicy:{minForGeneration:.45,minForValidation:.55,allowPathOnly:!1},conflictPolicy:"allow_multiple"},{id:"commercial_data",name:"商务数据",aliases:["报价","单价","合价","综合单价","预留金","税率","金额","利润"],category:"commercial",cardinality:"multiple",derivationPolicy:"forbidden",usagePolicy:"do_not_use",confidencePolicy:{minForGeneration:1,minForValidation:1,allowPathOnly:!1},conflictPolicy:"ignore"},{id:"rule_requirement",name:"规则要求",aliases:["规则要求","变更说明","实施范围","对象范围","结构化数据范围"],category:"compliance",cardinality:"multiple",derivationPolicy:"source_only",usagePolicy:"use_if_relevant",confidencePolicy:{minForGeneration:.6,minForValidation:.7,allowPathOnly:!1},conflictPolicy:"allow_multiple"}],forbiddenValuePatterns:[/投标报价|报价明细|单价|合价|综合单价|预留金|暂列金额|税率|增值税|利润|结算/u],diagnosticValuePatterns:[/OCR|识别错误|乱码|无法确认|疑似|不确定|绑定片段|兜底|知识库|提示词|后台|文件路径|PDF|DWG|Excel/u,/^#+\s*/u,/^见(?:招标|投标人|前附|补疑|图纸|清单|文件|资料|公告|须知)/u],lowConfidenceValuePatterns:[/无法确认|疑似|不确定|需复核|文字模糊|语义断裂|识别错误|乱码/u]},e={...d,id:"construction_organization_design",name:"施工组织设计"};function f(a,b=""){let c=`${a?.id||""} ${a?.name||""} ${a?.category||""} ${a?.description||""} ${a?.outputTitle||""} ${b}`;return/施工组织设计|施工方案|危大工程|人、材、机|安全文明施工/u.test(c)?e:d}function g(a,b){if(b)return a.factFields.find(a=>a.name===b||a.aliases.some(a=>b.includes(a)||a.includes(b)))}function h(a,b){return a.forbiddenValuePatterns.some(a=>a.test(b))}function i(a,b){return a.diagnosticValuePatterns.some(a=>a.test(b))}function j(a,b){return a.lowConfidenceValuePatterns.some(a=>a.test(b))}},76193:(a,b,c)=>{c.d(b,{ll:()=>l,wF:()=>o,yT:()=>k}),c(51190),c(64406),c(10751);var d=c(93675);let e=new Set(["structure","table","fact_consistency","evidence_coverage","professional_chain","control_loop","format","style","scope"]),f=[{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:"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:"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:"internal-table-row-dup",kind:"deterministic",anchoredTo:"table-spam",giveUpOnFailure:!0},{id:"duplicate-basic-info-tables",kind:"deterministic",anchoredTo:"table-quality",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:"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:"empty-scoring-response",kind:"deterministic",anchoredTo:"requirements-coverage",giveUpOnFailure:!0},{id:"tender-meta-language",kind:"deterministic",anchoredTo:"formal-style",giveUpOnFailure:!0},{id:"forbidden-configuration",kind:"deterministic",anchoredTo:"formal-text-gate",giveUpOnFailure:!0},{id:"basis-regulation-region",kind:"deterministic",anchoredTo:"basis-regulations-coverage",authorities:["blueprint"],giveUpOnFailure:!0},{id:"work-injury-insurance",kind:"deterministic",anchoredTo:"local-adaptation-keyword",giveUpOnFailure:!0},{id:"duplicate-response-line",kind:"deterministic",anchoredTo:"duplicate-paragraph",giveUpOnFailure:!0},{id:"atlas-reference",kind:"deterministic",anchoredTo:"drawing-reference",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:"section-renumber",kind:"deterministic",anchoredTo:"section-numbering",giveUpOnFailure:!0}],g=[{id:"numeric-arbiter-concept",kind:"deterministic",anchoredTo:"parameter-concept-conflict",giveUpOnFailure:!0},{id:"numeric-arbiter-spec",kind:"deterministic",anchoredTo:"spec-location-mismatch",giveUpOnFailure:!0}],h=["source-enumeration","internal-terminology-anchor","fabricated-start-date","repeated-word","writer-missing-section","meta-discourse-declaration","formula-residue","finish-thickness","formal-placeholder","truncated-sentence"],i=[{id:"fact-landing",kind:"llm-patch",anchoredTo:"important-unplaced-facts",patchGuard:{detectors:[...h]},giveUpOnFailure:!0},{id:"table-repair",kind:"llm-patch",anchoredTo:"table-quality",patchGuard:{detectors:[...h]},giveUpOnFailure:!0},{id:"table-execution-repair",kind:"llm-patch",anchoredTo:"table-plan-execution",patchGuard:{detectors:[...h]},giveUpOnFailure:!0},{id:"templating-repair",kind:"llm-patch",anchoredTo:"templating-filler",patchGuard:{detectors:[...h]},giveUpOnFailure:!0},{id:"workpackage-skeleton-repair",kind:"llm-patch",anchoredTo:"workpackage-skeleton",patchGuard:{detectors:[...h]},giveUpOnFailure:!0},{id:"planned-section-repair",kind:"llm-patch",anchoredTo:"planned-section-completeness",patchGuard:{detectors:[...h]},giveUpOnFailure:!0},{id:"global-consistency-repair",kind:"llm-patch",anchoredTo:"global-consistency-review",patchGuard:{detectors:[...h]},giveUpOnFailure:!0}],j=new Set;function k(a,b){return j.add(a),b()}async function l(a,b){j.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 m=[{id:"spec-gate-rules",scope:"full-document",category:"structure"},{id:"auto-spec-validation",scope:"full-document",category:"structure"},{id:"fact-consistency",scope:"full-document",category:"fact_consistency"},{id:"project-contamination",scope:"full-document",category:"scope"},{id:"project-basic-placeholder",scope:"full-document",category:"format"},{id:"standard-final",scope:"full-document",category:"structure"},{id:"fact-coverage",scope:"full-document",category:"evidence_coverage"},{id:"page-target",scope:"full-document",category:"structure"},{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},{id:"critical-section-depth",scope:"chapter",category:"structure"},{id:"critical-section-fact-density",scope:"chapter",category:"evidence_coverage"},{id:"chapter-fact-density",scope:"chapter",category:"evidence_coverage"},{id:"construction-org-professional-audit",scope:"chapter",category:"professional_chain"},{id:"toc-consistency",scope:"full-document",category:"structure",deterministicSafe:!0},{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"},{id:"requirements-coverage",scope:"full-document",category:"evidence_coverage"},{id:"fabricated-start-date",scope:"full-document",category:"fact_consistency",deterministicSafe:!0},{id:"field-value-mismatch",scope:"full-document",category:"fact_consistency",deterministicSafe:!0},{id:"area-arithmetic",scope:"full-document",category:"fact_consistency",deterministicSafe:!0},{id:"resource-consistency",scope:"full-document",category:"fact_consistency",authorities:["laborPeak"]},{id:"node-schedule-consistency",scope:"full-document",category:"fact_consistency"},{id:"cross-section-numeric-conflict",scope:"full-document",category:"fact_consistency"},{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"},{id:"spec-location-mismatch",scope:"full-document",category:"fact_consistency"},{id:"blueprint-citation-consistency",scope:"full-document",category:"fact_consistency",authorities:["blueprint"]},{id:"cross-project-value-copy",scope:"full-document",category:"fact_consistency",authorities:["blueprint"]},{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"]},{id:"foundation-form-residue",scope:"full-document",category:"fact_consistency"},{id:"ambiguous-either-or",scope:"full-document",category:"fact_consistency",authorities:["supportSystem"]},{id:"excavation-depth-lock",scope:"full-document",category:"fact_consistency"},{id:"excavation-hazard-classification",scope:"full-document",category:"fact_consistency"},{id:"support-form-fact-consistency",scope:"full-document",category:"fact_consistency",authorities:["supportSystem"]},{id:"equipment-entry-timing",scope:"full-document",category:"fact_consistency"},{id:"fabricated-award",scope:"full-document",category:"fact_consistency"},{id:"bidder-qualification-section",scope:"full-document",category:"scope"},{id:"cross-chapter-duplicate-section",scope:"chapter",category:"structure"},{id:"basic-info-schedule-field",scope:"full-document",category:"fact_consistency"},{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"},{id:"support-system-conflict",scope:"full-document",category:"fact_consistency",authorities:["supportSystem"]},{id:"dangerous-list-consistency",scope:"full-document",category:"fact_consistency"},{id:"hazard-exclusion-contradiction",scope:"full-document",category:"fact_consistency"},{id:"six-hundred-percent-coverage",scope:"full-document",category:"evidence_coverage"},{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:"repeated-word",scope:"full-document",category:"style",deterministicSafe:!0},{id:"commercial-data-in-body",scope:"full-document",category:"scope"},{id:"overview-recap",scope:"full-document",category:"style"},{id:"closure-phrase-density-cap",scope:"full-document",category:"style"},{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"},{id:"dangerous-applicability",scope:"full-document",category:"evidence_coverage"},{id:"innovation-tech-coverage",scope:"full-document",category:"evidence_coverage"},{id:"instruction-like-heading",scope:"full-document",category:"structure"},{id:"formal-heading-hierarchy",scope:"full-document",category:"structure",deterministicSafe:!0},{id:"formal-content-integrity",scope:"full-document",category:"format",deterministicSafe:!0},{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:"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"},{id:"professional-score",scope:"chapter",category:"professional_chain"},{id:"generic-professional-content",scope:"chapter",category:"professional_chain"},{id:"management-measure-number",scope:"chapter",category:"professional_chain"},{id:"closed-loop-density",scope:"full-document",category:"control_loop"},{id:"cross-chapter-consistency",scope:"full-document",category:"fact_consistency"},{id:"process-spec-conflict",scope:"full-document",category:"fact_consistency"},{id:"evidence-usage-coverage",scope:"full-document",category:"evidence_coverage"},{id:"paragraph-generic",scope:"full-document",category:"style"},{id:"construction-org-generic-language",scope:"chapter",category:"style"},{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"},{id:"construction-org-chapter-data-coverage",scope:"chapter",category:"evidence_coverage"},{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"},{id:"construction-org-bonus-module",scope:"chapter",category:"professional_chain"},{id:"chapter-dependency",scope:"chapter",category:"professional_chain"},{id:"document-delivery-score",scope:"full-document",category:"professional_chain"},{id:"generated-fact-verification",scope:"full-document",category:"fact_consistency"},{id:"duplicate-basic-info",scope:"full-document",category:"structure"},{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"},{id:"precise-fact-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"},{id:"emergency-section-depth",scope:"full-document",category:"structure"},{id:"boq-row-trace",scope:"full-document",category:"evidence_coverage"},{id:"drawing-reference",scope:"full-document",category:"evidence_coverage"},{id:"web-evidence-leakage",scope:"full-document",category:"scope"},{id:"formal-placeholder",scope:"full-document",category:"format",deterministicSafe:!0},{id:"prompt-example-leak",scope:"full-document",category:"format"},{id:"degenerate-content",scope:"chapter",category:"style"},{id:"planned-auto-spec-gate",scope:"full-document",category:"structure"},{id:"bid-composition-body-table",scope:"full-document",category:"structure"},{id:"planned-structure",scope:"full-document",category:"structure"},{id:"prompt-document-rule",scope:"full-document",category:"format"},{id:"local-adaptation-keyword",scope:"full-document",category:"evidence_coverage"},{id:"boq-division-coverage",scope:"full-document",category:"evidence_coverage"},{id:"important-unplaced-facts",scope:"chapter",category:"evidence_coverage"},{id:"table-plan-execution",scope:"chapter",category:"table"},{id:"templating-filler",scope:"full-document",category:"style"},{id:"templating-difficulty",scope:"full-document",category:"professional_chain"},{id:"workpackage-skeleton",scope:"chapter",category:"structure"},{id:"planned-section-completeness",scope:"chapter",category:"structure"},{id:"global-consistency-review",scope:"full-document",category:"fact_consistency"},{id:"source-enumeration",scope:"full-document",category:"style",deterministicSafe:!0},{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:"block-structure-contract",scope:"chapter",category:"structure"},{id:"block-fact-density",scope:"chapter",category:"evidence_coverage"},{id:"block-templating",scope:"chapter",category:"style"},{id:"block-attribution-quantification",scope:"chapter",category:"professional_chain"},{id:"block-numeric-reconciliation",scope:"chapter",category:"fact_consistency"},{id:"block-format-constraints",scope:"chapter",category:"format"}];function n(a){return m.find(b=>b.id===a)}function o(){let a=[];for(let b of[...f,...g,...i]){let c=n(b.anchoredTo);if(!c){a.push(`修复器 ${b.id} 锚定检测器 ${b.anchoredTo} 未在注册表声明(检测定位=修复定位强制同源)`);continue}if(!function(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}(b.authorities,c.authorities)&&a.push(`修复器 ${b.id}(authorities=${JSON.stringify(b.authorities??[])})与锚定检测器 ${b.anchoredTo}(authorities=${JSON.stringify(c.authorities??[])})权威口径不一致`),"llm-patch"===b.kind&&!b.patchGuard){a.push(`LLM patch 修复器 ${b.id} 未声明 patchGuard(修复过程会重新引入已知坏内容,必须预检)`);continue}for(let c of b.patchGuard?.detectors??[]){let d=n(c);d?d.deterministicSafe||a.push(`修复器 ${b.id} patchGuard 引用检测器 ${c} 未标记 deterministicSafe(patchGuard 只收录零误伤确定性检测器)`):a.push(`修复器 ${b.id} patchGuard 引用检测器 ${c} 未在注册表声明`)}}for(let[b,c]of f.entries())f.slice(0,b).some(a=>a.id===c.id)&&a.push(`确定性修复器锚定声明重复:${c.id}`);let b=new Set(d.aW.map(a=>a.key));for(let c of b)f.some(a=>a.id===c)||a.push(`确定性修复器 ${c} 已接入 SURFACE_FIX_STEPS 但未在 DETERMINISTIC_FIXER_ANCHORS 声明锚定检测器`);for(let c of f)b.has(c.id)||a.push(`确定性修复器锚定声明 ${c.id} 无对应 SURFACE_FIX_STEPS 键(声明多余或键已改名)`);for(let[b,c]of g.entries())g.slice(0,b).some(a=>a.id===c.id)&&a.push(`数值裁决器修复器声明重复:${c.id}`);for(let b of m)b.category&&e.has(b.category)||a.push(`检测器 ${b.id} 声明了非法 category(当前=${b.category||"缺失"};合法值:${[...e].join("、")})`);if(a.length>0)throw Error(`检测器/修复器注册表一致性校验失败(${a.length} 项):
233
- ${a.map(a=>`- ${a}`).join("\n")}`)}},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}}},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,b)=>{if(c(a))return a;let d=a;for(let a of m)d.includes(a)&&(d=d.split(a).join(""));return d}).join("\n")}function m(a){let b=0,c=a=>a.replace(/(职责|责任|分工|任务|措施|要求|管理|控制|工作|专项|标准|管控|验收|培训|教育|巡检|检查)落位/gu,"$1落实").replace(/(作业面|平面|现场|位置|点位|布局|空间|场地|工序|区域|临时设施|堆场|通道|道路|设备|设施|材料|构件|管线|照明|灯具|站房|楼层|部位)落位/gu,"$1布置").replace(/落位/gu,"落实");return{markdown:a.split(/\r?\n/u).map(a=>{let d=/^(#{1,6}\s+)(.*)$/u.exec(a);if(d){let e=d[2];if(!h.test(e))return a;let f=c(e);return f===e?a:(b+=1,`${d[1]}${f}`)}if(a.includes("|")&&a.includes("落位")){let d=c(a);if(d!==a)return b+=1,d}return a}).join("\n"),fixedCount:b}}},87635:(a,b,c)=>{c.d(b,{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(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=/(?:黄山杯|鲁班奖|白玉兰杯|钱江杯|扬子杯|安济杯|长安杯|汾水杯|省优|市优|国优|优质工程|确保[^。;;|,、,\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=>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;if(a<b.length&&(0,g.VS)(b[a]||"")&&(0,g.vh)(b[a+1]||""))for(f.push(b[a]||"",b[a+1]||""),a+=2;a<b.length&&(0,g.VS)(b[a]||"");)f.push(b[a]||""),a+=1;d||(d=!0,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)}
226
+ ${a.map(a=>`- ${a}`).join("\n")}`)}},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}}},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,c=a=>a.replace(/(职责|责任|分工|任务|措施|要求|管理|控制|工作|专项|标准|管控|验收|培训|教育|巡检|检查)落位/gu,"$1落实").replace(/(作业面|平面|现场|位置|点位|布局|空间|场地|工序|区域|临时设施|堆场|通道|道路|设备|设施|材料|构件|管线|照明|灯具|站房|楼层|部位)落位/gu,"$1布置").replace(/落位/gu,"落实");return{markdown:a.split(/\r?\n/u).map(a=>{let d=/^(#{1,6}\s+)(.*)$/u.exec(a);if(d){let e=d[2];if(!h.test(e))return a;let f=c(e);return f===e?a:(b+=1,`${d[1]}${f}`)}if(a.includes("|")&&a.includes("落位")){let d=c(a);if(d!==a)return b+=1,d}return a}).join("\n"),fixedCount:b}}},87635:(a,b,c)=>{c.d(b,{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(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=/(?:黄山杯|鲁班奖|白玉兰杯|钱江杯|扬子杯|安济杯|长安杯|汾水杯|省优|市优|国优|优质工程|确保[^。;;|,、,\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=>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;if(a<b.length&&(0,g.VS)(b[a]||"")&&(0,g.vh)(b[a+1]||""))for(f.push(b[a]||"",b[a+1]||""),a+=2;a<b.length&&(0,g.VS)(b[a]||"");)f.push(b[a]||""),a+=1;d||(d=!0,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)}
234
227
 
235
228
  `;a=`${a.slice(0,e)}
236
229
  ${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()}