@customize-agent/server 4.13.2 → 4.14.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 (61) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +2 -2
  3. package/.next/prerender-manifest.json +3 -3
  4. package/.next/server/chunks/1001.js +6 -0
  5. package/.next/server/chunks/208.js +81 -33
  6. package/.next/server/chunks/2886.js +12 -12
  7. package/.next/server/chunks/5284.js +15 -13
  8. package/.next/server/chunks/6482.js +4 -63
  9. package/.next/server/chunks/9227.js +1 -1
  10. package/.next/server/pages/404.html +1 -1
  11. package/.next/server/pages/500.html +1 -1
  12. package/.next/server/pages/api/assets/generated/preview.js +1 -1
  13. package/.next/server/pages/api/assets/generated/preview.js.nft.json +1 -1
  14. package/.next/server/pages/api/assets/generated.js +1 -1
  15. package/.next/server/pages/api/assets/generated.js.nft.json +1 -1
  16. package/.next/server/pages/api/documents/chapter/regenerate.js +1 -1
  17. package/.next/server/pages/api/documents/chapter/regenerate.js.nft.json +1 -1
  18. package/.next/server/pages/api/documents/export.js +1 -1
  19. package/.next/server/pages/api/documents/export.js.nft.json +1 -1
  20. package/.next/server/pages/api/documents/generate.js +1 -1
  21. package/.next/server/pages/api/documents/generate.js.nft.json +1 -1
  22. package/.next/server/pages/api/documents/generated/[id].js +1 -1
  23. package/.next/server/pages/api/documents/generated/[id].js.nft.json +1 -1
  24. package/.next/server/pages/api/documents/generated.js +1 -1
  25. package/.next/server/pages/api/documents/generated.js.nft.json +1 -1
  26. package/.next/server/pages/api/documents/templates.js +1 -1
  27. package/.next/server/pages/api/documents/templates.js.nft.json +1 -1
  28. package/.next/server/pages/api/kb/files/reindex.js +1 -1
  29. package/.next/server/pages/api/kb/files/reindex.js.nft.json +1 -1
  30. package/.next/server/pages/api/kb/intelligence.js +1 -1
  31. package/.next/server/pages/api/kb/intelligence.js.nft.json +1 -1
  32. package/.next/server/pages/api/kb/reindex.js +1 -1
  33. package/.next/server/pages/api/kb/reindex.js.nft.json +1 -1
  34. package/.next/server/pages/api/kb/upload/complete.js +1 -1
  35. package/.next/server/pages/api/kb/upload/complete.js.nft.json +1 -1
  36. package/.next/server/pages/api/kb/upload.js +1 -1
  37. package/.next/server/pages/api/kb/upload.js.nft.json +1 -1
  38. package/.next/server/pages/api/prompt.js +1 -1
  39. package/.next/server/pages/api/prompt.js.nft.json +1 -1
  40. package/.next/server/pages/api/template-references.js +1 -1
  41. package/.next/server/pages/api/template-references.js.nft.json +1 -1
  42. package/.next/server/pages/asset-library.html +1 -1
  43. package/.next/server/pages/document-roles.html +1 -1
  44. package/.next/server/pages/documents.html +1 -1
  45. package/.next/server/pages/guide.html +1 -1
  46. package/.next/server/pages/index.html +1 -1
  47. package/.next/server/pages/knowledge/file-detail.html +1 -1
  48. package/.next/server/pages/knowledge/files.html +1 -1
  49. package/.next/server/pages/knowledge/manage.html +1 -1
  50. package/.next/server/pages/knowledge.html +1 -1
  51. package/.next/server/pages/models.html +1 -1
  52. package/.next/server/pages/overview.html +1 -1
  53. package/.next/server/pages/prompt.html +1 -1
  54. package/.next/server/pages/settings.html +1 -1
  55. package/.next/server/pages/system/logs.html +1 -1
  56. package/.next/server/pages/template-references.html +1 -1
  57. package/.next/server/pages-manifest.json +29 -29
  58. package/package.json +1 -1
  59. package/.next/server/chunks/5726.js +0 -9
  60. /package/.next/static/{WrIQbtiNtHbetwCZ0lstW → -eOxudpLDomlK_hyLr6b5}/_buildManifest.js +0 -0
  61. /package/.next/static/{WrIQbtiNtHbetwCZ0lstW → -eOxudpLDomlK_hyLr6b5}/_ssgManifest.js +0 -0
@@ -23,12 +23,12 @@ ${n}
23
23
 
24
24
  资料:
25
25
  ${l}`,{signal:e,maxTokens:1800,temperature:.1,diagnostics:f});return((0,A.Te)(e),o?.facts?.length)?{facts:o.facts.filter(a=>a.key&&a.value).map(a=>{let b=m.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,A.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 抽取 ${o.facts.length} 条事实`}]}:{facts:[],stages:g}}let ak=["投标保证金的金额、收款账户名称、开户行与账号","电子投标文件加密方式与解密方式","开标时间、开标地点与开标程序","评标委员会组成与评标办法","招标人联系人、联系电话、邮箱与地址","投标文件递交方式与递交截止时间","空白表格填写说明与上传下载指引","公共资源交易平台监督管理部门"],al=/签章|盖章|联系人|联系电话|电话|邮箱|解密方式|开标时间|开标地点|评标办法|评标委员会|投标保证金|保证金账户|电子交易系统|空白|填写|上传|下载|递交方式|递交截止|公共资源交易监督管理|监管部门|开评标程序|采购范围|是否|符合/u;async function am(a,b,c=l,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=n(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,A.lG)(a.value).trim()).filter(a=>al.test(a)))],g=await (0,S.Mv)(f,ak,d),h=a=>ak.some(b=>g(a,b)>=.6),i=[];for(let b of e){let d=a.filter(a=>a.key===b||a.fieldName===b||n(c,a.fieldName||a.key)?.name===b),e=new Map;for(let a of d){let b=function(a,b,c){let d=(0,A.lG)(a).trim();if(p(b,d)||o(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,af.K3)((0,A.lG)(d));return!f||f.length>80||!/[\d年月日%]|合格|一星|二星|三星|总价合同|单价合同|承台|框架|装配式/u.test(d)||al.test(d)&&c?.(d)?"":f}(a.value,c,h);b&&e.set(b,[...e.get(b)||[],a])}if(e.size>1){let a=[...e.values()].slice(0,4).map(a=>`${(0,A.lG)(a[0].value).slice(0,120)}(${[...new Set(a.map(a=>a.sourceFile))].slice(0,3).join("、")})`).join(" vs ");i.push(`事实冲突:${b} 存在多个来源值:${a}`)}}return i.slice(0,8)}function an(a){return(0,A.lG)(a).replace(/\s*[##]{1,6}\s*/gu,"")}function ao(a){return(0,A.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 ap=[{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 aq(a,b){let c=ao((0,A.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):"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):"project_investment_estimate"===a?c.length<=100&&/\d+(?:\.\d+)?\s*(?:万元|元)/u.test(c):"labor_peak"===a?c.length<=40&&/\d+(?:\.\d+)?\s*人/u.test(c):"assembly_rate"===a?c.length<=20&&/\d+(?:\.\d+)?\s*%/u.test(c):"foundation_support_form"===a?c.length<=60&&/支护|放坡|锚|桩|喷|开挖|护坡/u.test(c):"award_clause"===a?c.length<=120&&/\d+(?:\.\d+)?\s*万元/u.test(c)&&!/评标|保证金/u.test(c):c.length<=220)}function ar(a){let b=[],c=new Set;for(let d of a)for(let a of an((0,A.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=ao(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 ap){let f=e.pattern.exec(a),g=f?.[1]?.trim();if(!g||!aq(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)}function as(a,b=l){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,A.lG)(e.content).replace(/\s+/gu," ");for(let a of f.matchAll(ag._W)){let g=a[0].trim();if(!g||o(b,g))continue;let h=Math.max(0,(a.index||0)-40),i=Math.min(f.length,(a.index||0)+g.length+40),j=f.slice(h,i);if(p(b,j)||q(b,j))continue;let k=`${e.filePath}:${g}`;d.has(k)||(d.add(k),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)}function at(a){return`${a.key} ${a.fieldName||""} ${a.value} ${a.roleId} ${a.processingType||""} ${a.sourceFile}`}function au(a){return/合同估算价|合同估算价格|投资估算|估算价格|工程估算价|项目估算价|最高投标限价|招标控制价/u.test(a)}function av(a){let b=at(a);return!au(b)&&/投标保证金|发票类型|开标时间|公共资源交易监督管理|不良行为记录|投诉举报|资质投诉|投标承诺|违约金|中标服务费|交易平台|保证金账户|投标有效期|报价明细|投标报价|单价|合价|税率|增值税|利润|结算/u.test(b)}function aw(a){return(0,A.lG)(a).replace(/\s+/gu," ").trim()}function ax(a,b=[]){return[...new Set([a,...b,...a.split(/[\s、,。;;::/\\_-]+/u)].map(aw).filter(a=>a.length>=2))]}function ay(a,b,c){var d,e;let f=aw(c.label);if(!f||o(b,f)||p(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)}`),h=c.queries?.length?c.queries.map(aw).filter(Boolean):ax(f),i=a.find(a=>a.id===g||a.label===f);if(i){i.required=i.required||c.required,i.queries=[...new Set([...i.queries,...h])];return}a.push({...c,id:g,label:f,queries:h})}function az(a,b,c,d,e,f=[]){"do_not_use"!==c.usagePolicy&&"diagnostic_only"!==c.usagePolicy&&"forbidden"!==c.derivationPolicy&&ay(a,b,{label:c.name,category:c.category,required:e,source:d,fieldId:c.id,queries:ax(c.name,[...c.aliases,...f])})}function aA(a){let b=new Set;return a.filter(a=>{let c=`${a.sourceFile}:${a.key}:${a.value}`;return!b.has(c)&&(b.add(c),!0)})}function aB(a){let b=a.profile||l,c=a.excludedEvidenceKeys,d=aA([...a.factsModel.factIndex.parameterFacts,...a.factsModel.factIndex.tableFacts,...a.factsModel.factIndex.drawingFacts,...a.factsModel.factIndex.billFacts,...a.factsModel.factIndex.reliableFacts]);return a.needs.map(e=>{let f=aA(d.filter(a=>(function(a,b,c){let d=at(a);if(av(a)||o(c,d)||p(c,d))return!1;if(b.fieldId&&a.fieldId===b.fieldId||n(c,a.fieldName||a.key)?.id===b.fieldId||b.queries.filter(a=>a.length>=2).some(a=>d.includes(a)))return!0;let e=n(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)-(a.confidence||0)),g=(a.evidence||[]).filter(a=>!c?.has(Y(a))&&function(a,b,c){let d=`${a.filePath} ${a.roleId||""} ${a.processingType||""} ${a.sectionTitle||""} ${a.content}`;return!(o(c,d)||p(c,d))&&b.queries.some(a=>a.length>=2&&d.includes(a))}(a,e,b)),h=Math.max(0,...f.map(a=>a.confidence||0)),i=0===f.length&&0===g.length?"missing":h>0&&h<.58?"low_confidence":"satisfied";return{need:e,facts:f,evidence:g,status:i}})}function aC(a){return(0,A.lG)(a).replace(/\s+/gu," ").trim().slice(0,220)}async function aD(a,b=[],c=[],d,e=l){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)),h=a.filter(a=>{let b=`${a.key} ${a.fieldName||""} ${a.value}`;return ag.sv.test(b)&&(!o(e,b)||au(b))&&!p(e,b)}),i=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}`)),j=(function(a){let b=[];for(let c of a){let a=`${c.key||""}${c.fieldName||""}${c.fieldId||""}`,d=(0,A.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),k=function(a,b,c,d){let e=a.filter(a=>p(d,at(a))||q(d,at(a))),f=a.filter(a=>{let b=at(a);return a.confidence>=.58&&!av(a)&&!o(d,b)&&!p(d,b)&&!q(d,b)}),g=[...b.filter(a=>!av(a)),...f.filter(a=>ag.sv.test(at(a)))].filter((a,b,c)=>c.findIndex(b=>b.sourceFile===a.sourceFile&&b.value===a.value&&b.key===a.key)===b).slice(0,360),h=f.filter(a=>"table"===a.processingType||/table|sheet|表格|清单|明细|数据|参数行摘要/u.test(at(a))),i=f.filter(a=>"drawing"===a.processingType||/drawing|draw|dwg|图纸|设计|尺寸|标高|管径|做法/u.test(at(a)));return{reliableFacts:f.slice(0,500),parameterFacts:g,tableFacts:h.slice(0,240),drawingFacts:i.slice(0,240),billFacts:c.slice(0,240),diagnostics:e.slice(0,120)}}(a,h,i,e);return{project:j,schedule:f(["工期","开工","竣工","节点","周期"]),quality:f(["质量","验收"]),safety:f(["安全","风险"]),resources:f(["劳动力","材料","机械","设备","资源"]),tables:b,drawings:g("drawing"),bills:i,preciseFacts:h,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:k,missing:[...new Set(c)],conflicts:await am(a,d,e)}}function aE(a=!1){return{awardObjectives:[],specialQualityStandards:[],awardClauses:[],systematicBenchmarks:[],frontScheduleClauses:[],dateFabricationProhibited:!1,prohibitionNotes:[],extracted:a}}let aF={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}}}},pageLimit:{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}}},evaluationScheme:{type:"object",properties:{text:{type:"string",minLength:4,maxLength:400},coreTerms:{type:"array",maxItems:6,items:{type:"string",maxLength:24}},source:{type:"string",maxLength:80}}}}};function aG(a){if(a?.text&&!(a.text.trim().length<2))return{text:a.text.trim(),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 aH(a){if(!Array.isArray(a))return[];let b=new Set,c=[];for(let d of a){let a=aG(d);if(!a)continue;let e=a.text;b.has(e)||(b.add(e),c.push(a))}return c}async function aI(a,b={}){let c,d=aE(!1);if(!a||0===a.length)return d;let e=[],f=0,g=[];for(let b of a){if(!b.content||!b.content.trim())continue;let a=`【${b.filePath||"资料"}|${b.sectionTitle||"正文"}】
26
- ${an(b.content)}`;e.length>0&&f+a.length>4e4&&(g.push(e),e=[],f=0),e.push(a),f+=a.length}async function h(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),f=await (0,ad.bb)('你是招标文件“要求与标准”结构化提取器。\n从施工项目绑定资料(招标文件/合同条款/技术标准/检查规范等)中提取文本性评分项要求——这些是评标专家会核对文档是否响应、且影响否决与得分的实质要求。\n只提取资料中明确写出的要求,绝不臆造;资料没有该类别时输出空数组或缺省。\ncoreTerms 是用于在正文中核对该要求是否被响应的核心词(2-4 个),必须选最能代表该要求的专有名词/等级/体系名(如“黄山杯”“二星级”“六个百分百”),不要泛化词。\ndateFabricationProhibited:资料写明“以开工令为准/开工日期以监理开工令为准/不得自定开工日期”时为 true,否则 false。\nsystematicBenchmarks 提取体系化基准要求(如“扬尘治理六个百分百”“四节一环保”),单条零散要求放 prohibitionNotes。\nfrontScheduleClauses:从“投标人须知前附表/投标人须知”章节提取施工组织设计必须响应的实质条款——计划工期与质量要求、创优目标与奖惩(如“确保黄山杯,支付300万元”)、缺陷责任期与质保金、履约担保、工期延误赔偿、项目经理/关键人员要求、分包限制、装配式/绿色建筑/智慧工地等级、安全文明与扬尘要求、付款方式(影响资金安排)。只提取施组正文需要写入或必须遵守的条款;投标程序类条款(开标时间地点、保证金账户、投标文件递交/解密方式、评标委员会组成等纯程序信息)一律不提取。\npageLimit:资料含篇幅/编制要求(如“不超过 50 页”)时提取。\nevaluationScheme:从评标办法章节提取结构性评分信息——评标办法类型、分值构成(技术文件/商务文件/报价文件分值)、技术文件详细评审内容项(逐项列出)、评分档位线(一般/良好/优秀分值区间)。text 用“;”分隔罗列原文关键信息;资料无评标办法章节时省略。\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 "pageLimit": { "text": "...", "coreTerms": [], "source": "..." },\n "evaluationScheme": { "text": "...", "coreTerms": [], "source": "..." }\n}\n只返回 JSON。',c,{maxTokens:16e3,temperature:.1,signal:b.signal,diagnostics:b.diagnostics,schema:aF,taskKind:"structuredGeneration"});return f?{awardObjectives:aH(f.awardObjectives),specialQualityStandards:aH(f.specialQualityStandards),awardClauses:aH(f.awardClauses),greenBuildingGrade:aG(f.greenBuildingGrade),smartSiteGrade:aG(f.smartSiteGrade),assemblyRate:aG(f.assemblyRate),systematicBenchmarks:aH(f.systematicBenchmarks),frontScheduleClauses:aH(f.frontScheduleClauses).filter(a=>!(0,A.hh)(a.text)),dateFabricationProhibited:!0===f.dateFabricationProhibited,prohibitionNotes:aH(f.prohibitionNotes).filter(a=>!(0,A.hh)(a.text)),pageLimit:aG(f.pageLimit),evaluationScheme:aG(f.evaluationScheme),extracted:!0,sourceHash:e}:{...d,sourceHash:e}}for(let a of(e.length>0&&g.push(e),g)){let b=await h(a);c=c?function(a,b){let c,d,e,f,g,h,i,j,k,l;return{...a,awardObjectives:aR(a.awardObjectives,b.awardObjectives),specialQualityStandards:aR(a.specialQualityStandards,b.specialQualityStandards),awardClauses:aR(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:aR(a.systematicBenchmarks,b.systematicBenchmarks),frontScheduleClauses:aR(a.frontScheduleClauses,b.frontScheduleClauses),prohibitionNotes:aR(a.prohibitionNotes,b.prohibitionNotes),pageLimit:(i=a.pageLimit,j=b.pageLimit,i||j),evaluationScheme:(k=a.evaluationScheme,l=b.evaluationScheme,k||l),dateFabricationProhibited:a.dateFabricationProhibited||b.dateFabricationProhibited,extracted:a.extracted||b.extracted}}(c,b):b}return c||d}let aJ=["工程创优奖项申报要求:争创或确保获得市级、省级或国家级优质工程奖,含具体奖项名称","绿色建筑星级等级要求","智慧工地等级要求","装配式建筑装配率要求","特殊质量标准与质量要求条款","扬尘治理六个百分百要求","质量目标必须确保达到合格或优良标准的要求"],aK=/确保|争创|创优|获得.{0,10}[杯奖]|优质工程奖|绿色建筑|星级|智慧工地|装配率|装配式|六个百分百|四节一环保/u,aL=[...aJ,"计划工期与工期延误违约赔偿条款","质量目标必须达到合格或优良标准","安全文明施工与扬尘治理要求","项目经理与关键人员配置要求","分包与转包限制条款","材料设备采购与进场验收要求","付款方式与资金安排条款","缺陷责任期与质量保证金条款"],aM=/确保|争创|创优|优质工程奖|获得.{0,10}[杯奖]|鲁班奖|绿色建筑|星级|智慧工地|装配率|装配式|六个百分百|四节一环保|达到.{0,6}(合格|优良)|质量标准|验收标准|特殊要求|按最高标准执行|按计划|违约金|工期延误|计划工期|日历天|安全文明|文明施工|扬尘|实名制|劳资专管|承插型盘扣|钢板防护网|商品砼|预拌砂浆|见证取样|送样|项目经理|技术负责人|分包|转包|履约担保|质保金|缺陷责任期|施工组织方案|施工进度计划|专项施工方案|施工工艺|须达到|必须达到|不低于|不少于|不得超过|不得超出/u,aN=/盖单位章|签字或盖章|年月日|投标总价|汇总表|计日工表|综合单价分析|单价小计|未计价材料费|开标时间|开标地点|递交截止|投标截止|解密|电子交易系统|保证金账户|开户银行|投标保证金|异议|投诉|技术热线|评标委员会由.{0,10}人|评标委员会组成|资格审查|四库一平台|保函|担保机构|受益人|开立人|签字盖章|密封|正本.{0,4}副本|联合体|清标/u;async function aO(a){if(a.length<=1)return a;let b=a.map(a=>an(`${a.sectionTitle||""}
26
+ ${an(b.content)}`;e.length>0&&f+a.length>4e4&&(g.push(e),e=[],f=0),e.push(a),f+=a.length}async function h(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),f=await (0,ad.bb)([(0,v.y4)("你是招标文件“要求与标准”结构化提取器。"),'从施工项目绑定资料(招标文件/合同条款/技术标准/检查规范等)中提取文本性评分项要求——这些是评标专家会核对文档是否响应、且影响否决与得分的实质要求。\n只提取资料中明确写出的要求,绝不臆造;资料没有该类别时输出空数组或缺省。\ncoreTerms 是用于在正文中核对该要求是否被响应的核心词(2-4 个),必须选最能代表该要求的专有名词/等级/体系名(如“黄山杯”“二星级”“六个百分百”),不要泛化词。\ndateFabricationProhibited:资料写明“以开工令为准/开工日期以监理开工令为准/不得自定开工日期”时为 true,否则 false。\nsystematicBenchmarks 提取体系化基准要求(如“扬尘治理六个百分百”“四节一环保”),单条零散要求放 prohibitionNotes。\nfrontScheduleClauses:从“投标人须知前附表/投标人须知”章节提取施工组织设计必须响应的实质条款——计划工期与质量要求、创优目标与奖惩(如“确保黄山杯,支付300万元”)、缺陷责任期与质保金、履约担保、工期延误赔偿、项目经理/关键人员要求、分包限制、装配式/绿色建筑/智慧工地等级、安全文明与扬尘要求、付款方式(影响资金安排)。只提取施组正文需要写入或必须遵守的条款;投标程序类条款(开标时间地点、保证金账户、投标文件递交/解密方式、评标委员会组成等纯程序信息)一律不提取。\npageLimit:资料含篇幅/编制要求(如“不超过 50 页”)时提取。\nevaluationScheme:从评标办法章节提取结构性评分信息——评标办法类型、分值构成(技术文件/商务文件/报价文件分值)、技术文件详细评审内容项(逐项列出)、评分档位线(一般/良好/优秀分值区间)。text 用“;”分隔罗列原文关键信息;资料无评标办法章节时省略。\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 "pageLimit": { "text": "...", "coreTerms": [], "source": "..." },\n "evaluationScheme": { "text": "...", "coreTerms": [], "source": "..." }\n}\n只返回 JSON。'].join("\n"),c,{maxTokens:16e3,temperature:.1,signal:b.signal,diagnostics:b.diagnostics,schema:aF,taskKind:"structuredGeneration"});return f?{awardObjectives:aH(f.awardObjectives),specialQualityStandards:aH(f.specialQualityStandards),awardClauses:aH(f.awardClauses),greenBuildingGrade:aG(f.greenBuildingGrade),smartSiteGrade:aG(f.smartSiteGrade),assemblyRate:aG(f.assemblyRate),systematicBenchmarks:aH(f.systematicBenchmarks),frontScheduleClauses:aH(f.frontScheduleClauses).filter(a=>!(0,A.hh)(a.text)),dateFabricationProhibited:!0===f.dateFabricationProhibited,prohibitionNotes:aH(f.prohibitionNotes).filter(a=>!(0,A.hh)(a.text)),pageLimit:aG(f.pageLimit),evaluationScheme:aG(f.evaluationScheme),extracted:!0,sourceHash:e}:{...d,sourceHash:e}}for(let a of(e.length>0&&g.push(e),g)){let b=await h(a);c=c?function(a,b){let c,d,e,f,g,h,i,j,k,l;return{...a,awardObjectives:aR(a.awardObjectives,b.awardObjectives),specialQualityStandards:aR(a.specialQualityStandards,b.specialQualityStandards),awardClauses:aR(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:aR(a.systematicBenchmarks,b.systematicBenchmarks),frontScheduleClauses:aR(a.frontScheduleClauses,b.frontScheduleClauses),prohibitionNotes:aR(a.prohibitionNotes,b.prohibitionNotes),pageLimit:(i=a.pageLimit,j=b.pageLimit,i||j),evaluationScheme:(k=a.evaluationScheme,l=b.evaluationScheme,k||l),dateFabricationProhibited:a.dateFabricationProhibited||b.dateFabricationProhibited,extracted:a.extracted||b.extracted}}(c,b):b}return c||d}let aJ=["工程创优奖项申报要求:争创或确保获得市级、省级或国家级优质工程奖,含具体奖项名称","绿色建筑星级等级要求","智慧工地等级要求","装配式建筑装配率要求","特殊质量标准与质量要求条款","扬尘治理六个百分百要求","质量目标必须确保达到合格或优良标准的要求"],aK=/确保|争创|创优|获得.{0,10}[杯奖]|优质工程奖|绿色建筑|星级|智慧工地|装配率|装配式|六个百分百|四节一环保/u,aL=[...aJ,"计划工期与工期延误违约赔偿条款","质量目标必须达到合格或优良标准","安全文明施工与扬尘治理要求","项目经理与关键人员配置要求","分包与转包限制条款","材料设备采购与进场验收要求","付款方式与资金安排条款","缺陷责任期与质量保证金条款"],aM=/确保|争创|创优|优质工程奖|获得.{0,10}[杯奖]|鲁班奖|绿色建筑|星级|智慧工地|装配率|装配式|六个百分百|四节一环保|达到.{0,6}(合格|优良)|质量标准|验收标准|特殊要求|按最高标准执行|按计划|违约金|工期延误|计划工期|日历天|安全文明|文明施工|扬尘|实名制|劳资专管|承插型盘扣|钢板防护网|商品砼|预拌砂浆|见证取样|送样|项目经理|技术负责人|分包|转包|履约担保|质保金|缺陷责任期|施工组织方案|施工进度计划|专项施工方案|施工工艺|须达到|必须达到|不低于|不少于|不得超过|不得超出/u,aN=/盖单位章|签字或盖章|年月日|投标总价|汇总表|计日工表|综合单价分析|单价小计|未计价材料费|开标时间|开标地点|递交截止|投标截止|解密|电子交易系统|保证金账户|开户银行|投标保证金|异议|投诉|技术热线|评标委员会由.{0,10}人|评标委员会组成|资格审查|四库一平台|保函|担保机构|受益人|开立人|签字盖章|密封|正本.{0,4}副本|联合体|清标/u;async function aO(a){if(a.length<=1)return a;let b=a.map(a=>an(`${a.sectionTitle||""}
27
27
  ${a.content||""}`)),c=await (0,S.Mv)(aL,b),d=a.filter((a,d)=>{let e=b[d];return!!(aM.test(e)||Math.max(...aL.map(a=>c(a,e)))>=.45)||!aN.test(e)});return 0===d.length?a:d}async function aP(a){if(0===a.length)return[];let b=a.map(a=>an(`${a.sectionTitle||""}
28
28
  ${a.content||""}`)),c=await (0,S.Mv)(aJ,b),d=a.map((a,d)=>({item:a,text:b[d],score:Math.max(...aJ.map(a=>c(a,b[d])))})).filter(a=>a.score>=.5||aK.test(a.text)).sort((a,b)=>b.score-a.score),e=new Set,f=[];for(let a of d){let b=an(`${a.item.sectionTitle||""}
29
- ${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 aQ(a){return!a||0===a.awardObjectives.length||0===a.awardClauses.length||!a.greenBuildingGrade||!a.smartSiteGrade||!a.assemblyRate||0===a.systematicBenchmarks.length}function aR(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 aS(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||!!a.evaluationScheme)}function aT(a){let b=e.join(process.env.HOME||process.cwd(),".customize-agent","cache","document-workflow",(0,A.c6)(a||"default"));return ac.mkdirSync(b,{recursive:!0}),b}function aU(a){return a.map(a=>({filePath:a.filePath||"",sectionTitle:a.sectionTitle||"",contentHash:(0,A.c6)(a.content||"")})).sort((a,b)=>`${a.filePath}|${a.sectionTitle}`.localeCompare(`${b.filePath}|${b.sectionTitle}`))}function aV(a){return a.coreTerms.length>0?a.coreTerms.join(" "):a.text}function aW(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 aX={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}}}}}};async function aY(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=new Set;c.forEach((a,b)=>{(0,A.hh)(a.text)&&d.add(b)});let e=await (0,ad.bb)("你是招标文件要求项程序性/实质性分类器。\n对每个要求项判定其是否属于施工组织设计正文必须响应的实质要求:\n- 实质要求(responsive=true):创优目标与奖项、质量/工期/安全/环保目标、绿色建筑/智慧工地/装配式等级、扬尘治理、四节一环保、人员与分包要求、付款履约约束等施组需写入或遵守的条款\n- 程序性条款(responsive=false):开标时间地点、保证金账户、投标文件递交/解密方式、评标委员会组成、投标有效期等纯投标程序信息\n只输出 JSON,不得输出其他内容。",c.map((a,b)=>`${b+1}. [${a.kind}] ${a.text}`).join("\n"),{maxTokens:2e3,temperature:.1,signal:b.signal,diagnostics:b.diagnostics,schema:aX,taskKind:"structuredGeneration"});if(!e?.results?.length)return new Map(c.map((a,b)=>[b,!d.has(b)]));let f=new Map;for(let a of e.results)"number"==typeof a.index&&f.set(a.index,!1!==a.responsive);return new Map(c.map((a,b)=>[b,!d.has(b)&&(f.get(b)??!0)]))}let aZ={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 a$(a,b={}){let c=a.filter(a=>a.text.trim());if(0===c.length)return new Map;let d=await (0,ad.bb)('你是招标要求条款锚点关系判定器。\n对每条条款判定其锚点之间的关系:\n- alternative=true:条款锚点为"或/及/任选其一"关系(如"省级或国家级奖项""A、B、C任选"),满足任一锚点即算完整响应\n- alternative=false:条款锚点必须全部满足(并列承诺、金额与奖项共存条款),缺任一锚点即部分响应\n只输出 JSON,不得输出其他内容。',c.map((a,b)=>`${b+1}. 条款:${a.text}
29
+ ${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 aQ(a){return!a||0===a.awardObjectives.length||0===a.awardClauses.length||!a.greenBuildingGrade||!a.smartSiteGrade||!a.assemblyRate||0===a.systematicBenchmarks.length}function aR(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 aS(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||!!a.evaluationScheme)}function aT(a){let b=e.join(process.env.HOME||process.cwd(),".customize-agent","cache","document-workflow",(0,A.c6)(a||"default"));return ac.mkdirSync(b,{recursive:!0}),b}function aU(a){return a.map(a=>({filePath:a.filePath||"",sectionTitle:a.sectionTitle||"",contentHash:(0,A.c6)(a.content||"")})).sort((a,b)=>`${a.filePath}|${a.sectionTitle}`.localeCompare(`${b.filePath}|${b.sectionTitle}`))}function aV(a){return a.coreTerms.length>0?a.coreTerms.join(" "):a.text}function aW(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 aX={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}}}}}};async function aY(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=new Set;c.forEach((a,b)=>{(0,A.hh)(a.text)&&d.add(b)});let e=await (0,ad.bb)([(0,v.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:.1,signal:b.signal,diagnostics:b.diagnostics,schema:aX,taskKind:"structuredGeneration"});if(!e?.results?.length)return new Map(c.map((a,b)=>[b,!d.has(b)]));let f=new Map;for(let a of e.results)"number"==typeof a.index&&f.set(a.index,!1!==a.responsive);return new Map(c.map((a,b)=>[b,!d.has(b)&&(f.get(b)??!0)]))}let aZ={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 a$(a,b={}){let c=a.filter(a=>a.text.trim());if(0===c.length)return new Map;let d=await (0,ad.bb)([(0,v.y4)("你是招标要求条款锚点关系判定器。"),'对每条条款判定其锚点之间的关系:\n- alternative=true:条款锚点为"或/及/任选其一"关系(如"省级或国家级奖项""A、B、C任选"),满足任一锚点即算完整响应\n- alternative=false:条款锚点必须全部满足(并列承诺、金额与奖项共存条款),缺任一锚点即部分响应\n只输出 JSON,不得输出其他内容。'].join("\n"),c.map((a,b)=>`${b+1}. 条款:${a.text}
30
30
  未命中锚点:${a.missingAnchors.join("、")||"(无)"}`).join("\n"),{maxTokens:1e3,temperature:.1,signal:b.signal,diagnostics:b.diagnostics,schema:aZ,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 a_(a){let b=a;for(;;){let a=b.replace(/^(?:争创|争取|力争|争获|确保|获得|创建|力创|评为|荣获|标为|目标为|承诺|为)/u,"");if(a===b||!a)break;b=a}return b}async function a0(a,b,c){let d=[],e=aW(b);if(0===e.length)return d;let f=a.replace(/\s+/gu,""),g=a.split(/\n/u).filter(a=>/^#{2,4}\s/u.test(a.trim())).map(a=>a1(a)).filter(Boolean).slice(0,80),h=await aY(e.map(a=>({kind:a.kind,text:a.item.text})),{signal:c.signal,diagnostics:c.diagnostics}),i=c.bodyTexts&&c.bodyTexts.length>0?[...g,...c.bodyTexts]:g,j=[];for(let[a,{kind:b,item:g}]of e.entries()){if(!1===h.get(a))continue;let e=aV(g),k=0;for(let a of i){let b=c.semanticSimilarity(e,a);b>k&&(k=b)}if(k>=.6)continue;let l=function(a,b){let c=a.text.replace(/\s+/gu,""),d=new Set;for(let b of a.coreTerms){let a=b.replace(/\s+/gu,"");a.length>=2&&d.add(a)}for(let a of c.matchAll(/(?:\d+(?:\.\d+)?\s*(?:%|%|天|日|万元|亿元|元|米|m|M|mm|毫米|层|年|个|月|周|小时|分钟|项|处|台|套|辆|人|家|次|遍|道|吨|kPa|MPa))/giu))d.add(a[0].replace(/\s+/gu,""));for(let a of c.matchAll(/[\u4e00-\u9fa5]{2,6}[杯奖星]/gu)){let b=a_(a[0]);/^[\u4e00-\u9fa5]{2,7}$/u.test(b)&&d.add(b)}let e=[],f=[];for(let a of d)(b.includes(a)?e:f).push(a);return{total:d.size,hit:e,missing:f}}(g,f);if(!(l.total>0)||0!==l.missing.length){if(l.hit.length>0){j.push({item:g,kind:b,bestSimilarity:k,hit:l.hit,missing:l.missing});continue}d.push({level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"llm_repairable",message:`评分项要求未响应:${b}“${g.text}”在正文中零命中(最佳语义相似度 ${k.toFixed(2)})`,suggestion:`招标文件明确要求的${b}必须显性响应:在对应章节补写“${g.text}”及配套保证措施。`})}}if(j.length>0){let a=await a$(j.map(a=>({text:a.item.text,missingAnchors:a.missing})),{signal:c.signal,diagnostics:c.diagnostics});for(let[b,c]of j.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=a_(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 a1(a){return a.trim().replace(/^#{2,4}\s+/u,"").replace(/^\d+(?:\.\d+)*[\s、.]+/u,"").trim()}async function a2(a,b,c,d={}){let e=[];if(!a)return e;let f=b.map(a=>a1(a.title)).filter(Boolean);if(0===f.length)return e;let g=aW(a),h=await aY(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=aV(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 a3(a){if(!a)return[];let b=[];return 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("、")}`),a.frontScheduleClauses.length&&b.push(`前附表响应条款 ${a.frontScheduleClauses.length} 条:${a.frontScheduleClauses.map(a=>a.text).slice(0,8).join("、")}`),a.evaluationScheme&&b.push(`评标办法:${a.evaluationScheme.text.slice(0,80)}`),a.dateFabricationProhibited&&b.push("禁编日期:以开工令为准"),a.pageLimit&&b.push(`篇幅建议:${a.pageLimit.text}`),a.extracted||b.push("评分项要求未提取(无绑定资料或模型不可用),零响应检测跳过"),b}var a4=c(71001);async function a5(a){if(0===a.requirementSummary.length||0===a.chapters.length)return[];let b=a.chapters.map(a=>`【${(0,t.GQ)(a.title)}】
31
- ${(a.sections||[]).filter(Boolean).map(a=>`- ${a}`).join("\n")||"(本章暂无预设小节)"}`).join("\n\n"),c=await (0,ad.bb)('你是施工组织设计大纲校准专家。输入各章已有小节与招标评分项要求,只输出需要新增的小节。\n\n新增小节必须显性承接评分项要求(如"创优目标与奖惩承诺""绿色建筑等级达标专项""智慧工地实施""装配式专项施工方案"),只允许新增,不得修改或删除任何已有小节。\n\n只有当前章节结构确实缺少对应承接小节时才新增;已有小节已覆盖该要求时不要重复新增。\n\n新增小节标题必须具体、可直接成稿,控制在 16 个汉字以内;不得新增与评分项要求无关的小节,不得输出条款碎片(如"1委员会确定中")。\n\n只返回 JSON,不要返回 markdown。',`文档模板:${a.templateName}
31
+ ${(a.sections||[]).filter(Boolean).map(a=>`- ${a}`).join("\n")||"(本章暂无预设小节)"}`).join("\n\n"),c=await (0,ad.bb)((0,v.y4)('你是施工组织设计大纲校准专家。输入各章已有小节与招标评分项要求,只输出需要新增的小节。\n\n新增小节必须显性承接评分项要求(如"创优目标与奖惩承诺""绿色建筑等级达标专项""智慧工地实施""装配式专项施工方案"),只允许新增,不得修改或删除任何已有小节。\n\n只有当前章节结构确实缺少对应承接小节时才新增;已有小节已覆盖该要求时不要重复新增。\n\n新增小节标题必须具体、可直接成稿,控制在 16 个汉字以内;不得新增与评分项要求无关的小节,不得输出条款碎片(如"1委员会确定中")。\n\n只返回 JSON,不要返回 markdown。'),`文档模板:${a.templateName}
32
32
 
33
33
  招标评分项要求摘要(必须逐条在结构层显性承接):
34
34
  ${a.requirementSummary.map(a=>`- ${a}`).join("\n")}
@@ -39,18 +39,18 @@ ${b}
39
39
  请输出需要新增的小节;没有需要新增的章节不要出现在 additions 中,整体无新增则输出空数组。
40
40
 
41
41
  JSON 格式:{"additions":[{"chapterTitle":"章标题(必须与上方章节名一致)","sections":["新增小节标题"]}]}`,{maxTokens:2e3,temperature:.1,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,a4.nz)(b);if(!c)return -1;let d=a.findIndex(a=>(0,t.GQ)(a.title)===c||(0,a4.nz)(a.title)===c);return d>=0?d:a.findIndex(a=>{let b=(0,a4.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,a4.EN)((0,a4.nz)(String(a||"")));!(!b||(0,a4.tQ)(b,f.title)||(0,t.mq)(b)||(f.sections||[]).some(a=>(0,a4.kw)(a,b)))&&(g.some(a=>(0,a4.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}return d}let a6=["计划总工期为300日历天","合同工期为300日历天","施工总工期为300日历天","招标控制价为6000万元","合同估算价为6000万元","投资估算为6000万元","总建筑面积为28000平方米","总用地面积为15000平方米","总占地面积为15000平方米","建设规模为28000平方米"],a7=["专项应急演练4次","每日巡查2次","每周检查1次","每月安全培训2次","监理旁站24小时","三级安全教育培训20学时"];function a8(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 a9(){let a=(0,S.VN)(),[b,c]=await Promise.all([a.embedDocuments([...a6]),a.embedDocuments([...a7])]);if(b.length!==a6.length||c.length!==a7.length)throw Error(`本地语义模型锚点嵌入数量不一致:范围锚点 ${b.length}/${a6.length},计数锚点 ${c.length}/${a7.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=>a8(f,a))),h=Math.max(...c.map(a=>a8(f,a)));return h>=.62&&h>g?"other":g>=.6?"scope":"other"})}}}let ba={factuality:["本章关键数据以招标文件、工程量清单与施工图纸为依据","正文引用的工期、面积、金额与绑定资料口径一致","施工内容与项目实际工程范围对应而非通用模板描述"],structure:["内容按施工准备、工艺流程、施工方法、验收标准的顺序组织","章节内有清晰的工作阶段划分与工序步骤","段落之间有先后衔接与层次递进关系"],depth:["包含关键工序控制点、隐蔽工程验收与检验批划分","关键技术环节给出工艺参数与质量标准","针对本项目特点展开专业分析而非通用做法罗列"],executable:["明确责任主体、检查频次与记录台账要求","给出可执行的资源进场、调配与投入安排","措施可落地执行并配验收复核机制"],specificity:["结合本项目建设地点、工程规模与计划工期展开","引用本项目工程量数据支撑施工部署","措施针对本项目工程特点制定而非通用套话"],consistency:["章节间工期、质量、安全数据口径一致","本章内容与总进度计划、质量目标相互呼应","章节内前后表述无矛盾冲突"]},bb={schedule:["采用关键线路法编制进度计划,明确关键节点与动态纠偏措施","计划节点与资源投入相匹配,含穿插施工与资源保障安排"],quality:["材料进场验收与复验、隐蔽工程验收、质量问题整改与复验闭环","质量资料归档与检验批验收记录"],safety:["风险源辨识、临电消防管理、安全检查与隐患整改闭环","应急预案、应急物资与演练安排"],resource:["劳动力、材料、设备进场计划、验收、保管与调配","资源投入与进度节点相匹配"],construction:["施工准备、工艺流程、工序控制点与验收标准交底","施工方法与工艺参数明确具体"]},bc=["材料进场验收、工序控制点、隐蔽工程验收记录","检验批划分、技术交底、整改复查闭环","引用本项目工程量清单与设计图纸参数"],bd=["自检互检交接检、整改复查、资料归档","风险辨识、专项交底、现场检查、隐患整改、复查销项","计划分解、偏差识别、资源纠偏、节点复核"];function be(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 bf(){let a=(0,S.VN)(),b=[...Object.keys(ba).map(a=>[`dimension:${a}`,ba[a]]),...Object.keys(bb).map(a=>[`need:${a}`,bb[a]]),["concrete",[...bc]],["closedLoop",[...bd]]],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}
42
- ${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(ba)){let e=b.get(`dimension:${d}`)||[];c[d]=be(a,e)>=S.Eh}return c}(b,c),contentNeeds:function(a,b){let c={};for(let d of Object.keys(bb)){let e=b.get(`need:${d}`)||[];c[d]=be(a,e)>=S.Eh}return c}(b,c),concrete:be(b,c.get("concrete")||[])>=S.Eh,closedLoop:be(b,c.get("closedLoop")||[])>=S.Eh}}}}let bg=[{pattern:/概况|总体|理解|说明|编制/u,goal:"以项目资料已确认的事实卡片展开工程概况与总体理解,不得空泛概述",mustCover:["工程名称、建设地点、建设规模、计划工期、质量标准等资料已确认事实","现场条件与招标范围边界","编制依据与适用范围"]},{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:["危险源辨识与风险分级","危大工程清单与专项方案","安全交底与隐患排查闭环"]},{pattern:/资源|材料|设备|劳动力|人材机/u,goal:"说明资源配置依据、进场验收与保管调配",mustCover:["机械设备投入计划","分阶段劳动力计划","材料进场计划与验收"]},{pattern:/文明|绿色|环保|扬尘|噪声/u,goal:"覆盖扬尘噪声管控、四节一环保与智慧监测",mustCover:["扬尘噪声分时段管控","四节一环保措施","监测预警与台账"]},{pattern:/应急|预案/u,goal:"覆盖应急组织、物资储备与专项预案",mustCover:["应急组织架构","应急物资储备","专项预案与演练计划"]},{pattern:/竣工|验收|移交|保修/u,goal:"覆盖竣工清理、验收移交与保修响应",mustCover:["竣工清理与垃圾外运","缺陷修补与复查销项","验收移交与保修响应"]},{pattern:/工资|劳务|实名/u,goal:"覆盖劳务实名制与农民工工资保障闭环",mustCover:["劳务实名制管理","工资专用账户与银行代发","考勤与工资支付台账"]}];var bh=c(8667);async function bi(a){(0,A.Te)(a.signal);let b=[];if(0===a.scopedFilePaths.length)return b;let c=/资源|人|材|机|材料|设备|清单|工程量|BOQ|报价/u.test(a.chapter.title),d=(c?1.6:1)*(/[、,,与和及]/.test(a.chapter.title)?1.4:1),e=Math.ceil((a.highRisk?18:10)*d),f=Math.ceil((a.highRisk?24:14)*(c?1.4:1)),g=Math.ceil((a.highRisk?72:42)*d),h=Math.ceil((a.highRisk?72e3:42e3)*d),i=(a.requiredNeeds||[]).slice(0,8),j=(function(a,b=[]){let c=a.sections||[],d=[...a.requiredFacts,...b],e=(0,B.Cr)(c,a=>(0,B.Ox)(a),{maxItems:16,maxChars:1200},"retrieval-sections").selected,f=(0,B.Cr)(d,a=>(0,B.Ox)(a),{maxItems:16,maxChars:1200},"retrieval-facts").selected,g=/[、,,与和及]/.test(a.title),h=/资源|人|材|机|材料|设备|清单|工程量|BOQ|报价/u.test(a.title),i=/进度|工期|节点/u.test(a.title)?["合同工期","计划工期","日历天","开工","竣工","关键线路","进度计划","施工进度"]:/质量|验收/u.test(a.title)?["质量标准","验收规范","检验批","复验","合格","质量保证","隐蔽验收"]:/安全|危大|风险/u.test(a.title)?["安全措施","风险源","危大工程","应急","检查整改","安全防护","应急预案","基坑支护","基坑开挖","基坑底标高","坡率","支护形式","降水","开挖深度","高支模","专项方案"]:h?["工程量清单","项目特征","材料设备","规格型号","数量单位","劳动力","机械设备","进场计划","资源保障","主要材料","施工机具","材料供应","设备配置"]:/施工|方案|方法|技术|工艺/u.test(a.title)?["施工方法","工艺流程","技术标准","构造做法","控制要点","施工准备"]:["工程范围","施工方法","控制要点","验收要求"],j=g?[...i,...a.title.split(/[、,,与和及]+/u).map(a=>a.trim()).filter(a=>a.length>=4)]:i,k=[...new Set([a.title,...e,...f,...j].flatMap(a=>a.split(/[\s、,,。;;::()()《》【】\-/]+/u)).map(a=>a.trim()).filter(a=>a.length>=2))],l=(0,B.Cr)(k,a=>(0,B.Ox)(a),{maxItems:36,maxChars:1200},"retrieval-tokens").selected,m=g?a.title.split(/[、,,与和及]+/u).map(a=>a.trim()).filter(a=>a.length>=4).map(a=>`${a} ${e.slice(0,6).join(" ")} ${f.slice(0,4).join(" ")}`.trim()):[];return[...new Set([`${a.title} ${e.join(" ")}`.trim(),...f.map(b=>`${a.title} ${b}`.trim()),...e.map(b=>`${a.title} ${b} ${f.slice(0,6).join(" ")}`.trim()),`${a.title} ${j.join(" ")}`.trim(),...m,l.join(" ")].filter(Boolean))]})(a.chapter,a.requiredNeeds).slice(0,e),k=[...i.map(b=>`${a.chapter.title} ${b} ${(a.chapter.sections||[]).join(" ")}`.trim()).filter(a=>!j.includes(a)).map(a=>({text:a,boost:2,source:"required-fact-evidence"})),...j.map(a=>({text:a,boost:2.4,source:"deep-retrieval"}))];return b.push(...(await (0,A.l$)(k,async b=>{var c;(0,A.Te)(a.signal);let d=await a.manager.search(a.projectRoot,b.text,{scope:"project",filters:{filePaths:a.scopedFilePaths},limit:f,weights:{keyword:.62,vector:.32,rewrite:.9,hybridBonus:.28},generationMode:!0,disableReranker:!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,s.QR)(b.filter(a=>"required-fact-evidence"===a.source),{maxItems:Math.max(6,3*i.length),maxChars:18e3,preservePinned:!0}),...(0,s.QR)(b.filter(a=>"required-fact-evidence"!==a.source),{maxItems:g,maxChars:h,preservePinned:!0})]}var bj=c(80439),bk=c(46482),bl=c(79227),bm=c(2773),bn=c(92817),bo=c(3063);function bp(a){return(0,t.GQ)(a.replace(/\*+/gu,"")).replace(/^第[一二三四五六七八九十百千万\d]+[章节篇部分、..\s-]*/u,"").replace(/^\d+(?:\.\d+)*(?:[..、]|\s)+/u,"").replace(/^[-—–]\s*/u,"").replace(/[<>]/gu,"").replace(/[::。;;,.,]+$/gu,"").replace(/\s*[((][^()()]{0,40}[a-zA-Z]{3,}[^()()]{0,40}[))]\s*$/u,"").trim()}function bq(a,b){let c=bp(a);return!!(c.length<4||c.length>60||c===bp(b)||/^(?:目录|章节|大纲|要求|说明|注意|输出|格式|示例|占位|提示|概述|总体要求)$/u.test(c)||/如需|应由|大模型|提示词|上下文|OUTLINE|JSON|小节标题/u.test(c)||/(.)\1/u.test(c))}function br(a,b){let c=a=>{let b=new Set;for(let c=0;c<a.length-1;c+=1)b.add(a.slice(c,c+2));return b},d=c(b),e=[...c(a)];return 0===e.length?0:e.filter(a=>d.has(a)).length/e.length}function bs(a){return/工期|进度|节点|计划|纠偏|预警/u.test(a)?"工期进度":/质量|验收|三检|样板|隐蔽|复试|实测|通病/u.test(a)?"质量验收":/安全|危大|风险|隐患|应急|临边|洞口|消防|临电/u.test(a)?"安全风险":/文明|扬尘|噪声|绿色|废水|垃圾|环保|智慧/u.test(a)?"文明绿色":/劳务|工资|实名|银行|考勤|人员|岗位|组织|职责/u.test(a)?"组织劳务":/资源|材料|设备|机械|人材机|调配/u.test(a)?"资源保障":/施工|工艺|流程|顺序|穿插|部署|区段|流水/u.test(a)?"施工组织":"综合管理"}function bt(a){return/^(?:确保\s*)?[人材机](?:员|力|料|械|工)?\s*的保障体系与措施$/u.test(a)}function bu(a){let b=new Set,c=[];for(let d of a.sections||[]){let e=bp(d);if(!e||bq(e,a.title))continue;let f=e.replace(/\s+/gu,"");b.has(f)||(b.add(f),c.push(e))}return c}function bv(a,b){let c=a.replace(/\s+/gu,""),d=b.replace(/\s+/gu,"");return c===d||c.includes(d)||d.includes(c)}function bw(a,b,c){let d=new Map,e=[];for(let b of a){if(bt(b)){e.push(b);continue}let a=bs(b),c=d.get(a)||[];c.push(b),d.set(a,c)}let f=a=>{let b=[];for(let c of a){let a=b[b.length-1],d=a?a.sources[a.sources.length-1]:"";!(0,bo.tZ)(c)&&!bt(c)&&a&&(bv(c,d)||br(c,d)>=.75)?(a.sources.push(c),c.length>a.title.length&&(a.title=c)):b.push({title:c,sources:[c]})}return b},g=e.map(a=>({title:a,subPoints:[{title:a,sources:[a]}],facts:[],targetWords:1200}));for(let a of d.values()){let c=f(a);for(let a=0;a<c.length;a+=6){let d=c.slice(a,a+6);g.push({title:d[0].title||b,subPoints:d,facts:[],targetWords:1200})}}return bx(g,c),{blocks:g,coveredSections:a.slice(),fallbackSections:[],llmPlanned:!1}}function bx(a,b){for(let c=0;c<2&&a.length>0&&!(4e3>=Math.floor(b/a.length));c+=1){let b=a.reduce((a,b)=>b.subPoints.length>a.subPoints.length?b:a,a[0]);if(b.subPoints.length<2)break;let c=Math.ceil(b.subPoints.length/2);a.push({title:b.subPoints[c].title||b.title,subPoints:b.subPoints.slice(c),facts:[],targetWords:0}),b.subPoints=b.subPoints.slice(0,c)}let c=a.reduce((a,b)=>a+b.subPoints.length,0)||a.length;for(let d of a){let e=Math.floor(.75*Math.max(1200,Math.floor(b/Math.max(1,a.length)))+.25*b*(d.subPoints.length/c));d.targetWords=Math.min(4e3,Math.max(1200,e))}}let by={type:"object",required:["title","subPoints"],properties:{title:{type:"string",required:!0,minLength:2,maxLength:80},subPoints:{type:"array",required:!0,minItems:1,maxItems:6,items:{type:"object",required:!0,properties:{title:{type:"string",required:!0,minLength:2,maxLength:60},sources:{type:"array",required:!0,maxItems:8,items:{type:"string",maxLength:120}}}}},facts:{type:"array",maxItems:2,items:{type:"string",maxLength:100}}}};async function bz(a){let b=bu(a.chapter);if(b.length<=8)return;let c=await (0,S.Mv)(b,b,a.semanticEmbedder),d=function(a,b){let c=new Map,d=[];for(let b of a){if(bt(b)){d.push([b]);continue}let a=bs(b),e=c.get(a)||[];e.push(b),c.set(a,e)}let e=[];for(let a of c.values()){let c=[];for(let d of a){let a,e=-1;for(let f of c){if(f.length>=8)continue;let c=Math.max(...f.map(a=>b(d,a)));c>e&&(e=c,a=f)}a&&e>=.5?a.push(d):c.push([d])}e.push(...c)}return[...d,...e]}(b,c),e=Math.max(800,Math.floor(a.targetWords/Math.max(1,d.length))),f=async(b,c)=>{let d=function(a,b){let c=a.flatMap(a=>[a.slice(0,4),a.slice(-4)]).filter(a=>a.length>=2);return b.map(a=>({item:a,score:c.reduce((b,c)=>b+ +!!a.content.includes(c),0)})).sort((a,b)=>b.score-a.score).map(a=>a.item)}(b,a.evidence),f=(0,s.ks)((0,s.QO)(a.chapter,d)),g=["你是专业施工组织设计文档结构规划专家。","任务:把一个主题块内的输入细目重排为 H4 要点结构;语义相近、内容连贯的细目必须合并进同一个 H4 要点。","硬性规则:",`1. 合并决策:语义相近、内容连贯的输入细目必须合并进同一个 H4 要点;H4 要点标题必须重写为更概括、更专业的标题(16 字以内),不得直接照抄任一输入细目标题;每个 H4 要点的 sources 字段逐字列出它所覆盖的全部输入细目标题,不得改写、不得遗漏、不得重复映射。例外:含评标必查关键词的输入细目(${bo.Dr.join("/")}等)必须保留为独立 H4 要点,不得与其他细目合并吞并,其 H4 标题必须保留该关键词。`,`2. 合并依据:优先参考项目图谱与文档蓝图,把对应同一套工程对象/管理闭环的细目合并(如「三检制度」「样板引路」「隐蔽工程验收」同属质量管控闭环);不得把内容无关的细目强行合并。`,`3. 主题块标题必须具体、专业、能承载其要点(16 字以内),不得使用"目标与范围""资料依据""总体要求"等通用占位标题。`,`4. 数量约束:本主题块 1~6 个 H4 要点。`,"5. facts 字段:从绑定资料中摘取与本主题块直接相关的关键事实短句(每条 ≤60 字,0~2 条)。","6. 只返回 JSON,不要输出任何其他文字。",'JSON 格式:{"title":"主题块标题","subPoints":[{"title":"H4要点标题","sources":["输入细目原文"]}],"facts":["事实短句"]}'],h=[`文档模板:${a.template.name}`,`章节标题:${a.chapter.title}`,a.requirement?`用户要求:${a.requirement}`:"",a.graphContext?`项目图谱(本章定向):${a.graphContext}`:"",a.blueprintContext?`文档蓝图(本章任务卡与实施方案):${a.blueprintContext}`:"",a.projectContext?`上下文:${a.projectContext}`:"",a.roleContext?`角色要求:${a.roleContext}`:"",f?`真实绑定资料:${f}`:"",`输入细目清单(本主题块共 ${b.length} 条,必须全部覆盖,允许合并进同一 H4):${b.join("、")}`,`请输出 1 个主题块,1~6 个 H4 要点,确保所有输入细目被覆盖。`],i={},j={l0:g.join("\n").length,l2:(0,ad.CX)([`文档模板:${a.template.name}`,`章节标题:${a.chapter.title}`,a.requirement?`用户要求:${a.requirement}`:"",a.graphContext?`项目图谱(本章定向):${a.graphContext}`:"",a.blueprintContext?`文档蓝图(本章任务卡与实施方案):${a.blueprintContext}`:"",a.projectContext?`上下文:${a.projectContext}`:"",a.roleContext?`角色要求:${a.roleContext}`:""]),l3:(0,ad.CX)([f?`真实绑定资料:${f}`:"",`输入细目清单(本主题块共 ${b.length} 条,必须全部覆盖,允许合并进同一 H4):${b.join("、")}`,`请输出 1 个主题块,1~6 个 H4 要点,确保所有输入细目被覆盖。`])},k=await (0,ad.bb)(g.join("\n"),h.filter(Boolean).join("\n\n"),{maxTokens:4096,temperature:.1,signal:a.signal,diagnostics:a.diagnostics,schema:by,disableThinkingBoost:!0,outFailure:i,contextLayers:j});if(!k){let d=i.value?`第 ${c+1} 块未通过校验(${i.value})`:`第 ${c+1} 块 LLM 无响应`;return{blocks:bw(b,a.chapter.title,e).blocks,llmPlanned:!1,failure:d}}let l=function(a,b,c){let d=bp(a.title||"");if(!d||bq(d,c))return;let e=(a.subPoints||[]).map(a=>{let c=Array.isArray(a.sources)&&a.sources.length>0?a.sources:a.source?[a.source]:[],d=[];for(let a of c){let c=bp(a||"");!(c.length<4)&&b.some(a=>bv(c,a))&&(d.some(a=>bv(a,c))||d.push(c))}let e=bp(a.title||"");return!e||e.length<4?d.length>0?{title:d[0],sources:d}:void 0:{title:e&&!d.some(a=>bv(e,a))?e:d[0]||e,sources:d}}).filter(a=>!!a);if(0!==e.length)return{title:d,subPoints:e,facts:(a.facts||[]).map(a=>a.trim()).filter(Boolean),targetWords:1200}}(k,b,a.chapter.title);return l?{blocks:[l],llmPlanned:!0}:{blocks:bw(b,a.chapter.title,e).blocks,llmPlanned:!1,failure:`第 ${c+1} 块 LLM 结构无效(title/subPoints 缺失或未对齐)`}},g=await Promise.all(d.map((a,b)=>f(a,b))),h=g.flatMap(a=>a.blocks),i=g.map(a=>a.failure).filter(Boolean);return 0===h.length?{blocks:[],coveredSections:[],fallbackSections:[],llmPlanned:!1,llmFailure:i.join(";")||"未知原因"}:(bx(h,a.targetWords),{...function(a){let b=[],c=a.blocks.map(a=>({...a,subPoints:a.subPoints.map(a=>{let c=a.sources.filter(a=>!b.some(b=>bv(b,a))&&(b.push(a),!0));return{...a,sources:c}}).filter(a=>a.sources.length>0)}));return{...a,blocks:c}}(function(a,b){let c=[],d=[],e=b.map(a=>({...a,subPoints:[...a.subPoints]}));for(let b of a){let a,f;if(e.some(a=>(function(a,b){return!!bv(b.title,a)||b.subPoints.some(b=>b.sources.some(b=>bv(b,a))||bv(b.title,a))})(b,a))){c.push(b);continue}let g=-1;for(let c of e)for(let d of c.subPoints){let e=Math.max(br(b,d.title),...d.sources.map(a=>br(b,a)));e>g&&(g=e,a=d,f=c)}if((0,bo.tZ)(b)||bt(b)){let a=f||e[e.length-1];if(a){a.subPoints.push({title:b,sources:[b]}),d.push(b);continue}}a&&g>=.5?(a.sources.push(b),d.push(b)):f?(f.subPoints.push({title:b,sources:[b]}),d.push(b)):c.push(b)}return{blocks:e,coveredSections:c,fallbackSections:d,llmPlanned:b.length>0}}(b,h)),llmPlanned:g.some(a=>a.llmPlanned),llmFailure:i.length>0?`块级降级(${i.join(";")})`:void 0})}async function bA(a){let b=await bz(a).catch(a=>({blocks:[],coveredSections:[],fallbackSections:[],llmPlanned:!1,llmFailure:a instanceof Error?a.message:String(a)}))??{blocks:[],coveredSections:[],fallbackSections:[],llmPlanned:!1,llmFailure:"输入细目 ≤8 条,跳过 LLM 规划(设计行为)"};return b.blocks.length>0?b:{...bw(bu(a.chapter),a.chapter.title,a.targetWords),llmFailure:b.llmFailure||"LLM 调用异常"}}async function bB(a,b){let c=(0,v.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,bn.AI)(e,(0,bn.Ym)(e,a.chapter,a.evidence),b),i=(0,bn.uQ)(e,g,h);i&&d.push(`${e}:${i}`)}return d}function bC(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 bD(a){return"string"==typeof a?a:a&&"object"==typeof a&&"message"in a?String(a.message):JSON.stringify(a)}function bE(a){let b=Number(process.env[a]);return Number.isFinite(b)&&b>0?Math.ceil(b):0}async function bF(a){var b;(0,A.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}
42
+ ${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(ba)){let e=b.get(`dimension:${d}`)||[];c[d]=be(a,e)>=S.Eh}return c}(b,c),contentNeeds:function(a,b){let c={};for(let d of Object.keys(bb)){let e=b.get(`need:${d}`)||[];c[d]=be(a,e)>=S.Eh}return c}(b,c),concrete:be(b,c.get("concrete")||[])>=S.Eh,closedLoop:be(b,c.get("closedLoop")||[])>=S.Eh}}}}let bg=[{pattern:/概况|总体|理解|说明|编制/u,goal:"以项目资料已确认的事实卡片展开工程概况与总体理解,不得空泛概述",mustCover:["工程名称、建设地点、建设规模、计划工期、质量标准等资料已确认事实","现场条件与招标范围边界","编制依据与适用范围"]},{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:["危险源辨识与风险分级","危大工程清单与专项方案","安全交底与隐患排查闭环"]},{pattern:/资源|材料|设备|劳动力|人材机/u,goal:"说明资源配置依据、进场验收与保管调配",mustCover:["机械设备投入计划","分阶段劳动力计划","材料进场计划与验收"]},{pattern:/文明|绿色|环保|扬尘|噪声/u,goal:"覆盖扬尘噪声管控、四节一环保与智慧监测",mustCover:["扬尘噪声分时段管控","四节一环保措施","监测预警与台账"]},{pattern:/应急|预案/u,goal:"覆盖应急组织、物资储备与专项预案",mustCover:["应急组织架构","应急物资储备","专项预案与演练计划"]},{pattern:/竣工|验收|移交|保修/u,goal:"覆盖竣工清理、验收移交与保修响应",mustCover:["竣工清理与垃圾外运","缺陷修补与复查销项","验收移交与保修响应"]},{pattern:/工资|劳务|实名/u,goal:"覆盖劳务实名制与农民工工资保障闭环",mustCover:["劳务实名制管理","工资专用账户与银行代发","考勤与工资支付台账"]}];var bh=c(8667);async function bi(a){(0,A.Te)(a.signal);let b=[];if(0===a.scopedFilePaths.length)return b;let c=/资源|人|材|机|材料|设备|清单|工程量|BOQ|报价/u.test(a.chapter.title),d=(c?1.6:1)*(/[、,,与和及]/.test(a.chapter.title)?1.4:1),e=Math.ceil((a.highRisk?18:10)*d),f=Math.ceil((a.highRisk?24:14)*(c?1.4:1)),g=Math.ceil((a.highRisk?72:42)*d),h=Math.ceil((a.highRisk?72e3:42e3)*d),i=(a.requiredNeeds||[]).slice(0,8),j=(function(a,b=[]){let c=a.sections||[],d=[...a.requiredFacts,...b],e=(0,B.Cr)(c,a=>(0,B.Ox)(a),{maxItems:16,maxChars:1200},"retrieval-sections").selected,f=(0,B.Cr)(d,a=>(0,B.Ox)(a),{maxItems:16,maxChars:1200},"retrieval-facts").selected,g=/[、,,与和及]/.test(a.title),h=/资源|人|材|机|材料|设备|清单|工程量|BOQ|报价/u.test(a.title),i=/进度|工期|节点/u.test(a.title)?["合同工期","计划工期","日历天","开工","竣工","关键线路","进度计划","施工进度"]:/质量|验收/u.test(a.title)?["质量标准","验收规范","检验批","复验","合格","质量保证","隐蔽验收"]:/安全|危大|风险/u.test(a.title)?["安全措施","风险源","危大工程","应急","检查整改","安全防护","应急预案","基坑支护","基坑开挖","基坑底标高","坡率","支护形式","降水","开挖深度","高支模","专项方案"]:h?["工程量清单","项目特征","材料设备","规格型号","数量单位","劳动力","机械设备","进场计划","资源保障","主要材料","施工机具","材料供应","设备配置"]:/施工|方案|方法|技术|工艺/u.test(a.title)?["施工方法","工艺流程","技术标准","构造做法","控制要点","施工准备"]:["工程范围","施工方法","控制要点","验收要求"],j=g?[...i,...a.title.split(/[、,,与和及]+/u).map(a=>a.trim()).filter(a=>a.length>=4)]:i,k=[...new Set([a.title,...e,...f,...j].flatMap(a=>a.split(/[\s、,,。;;::()()《》【】\-/]+/u)).map(a=>a.trim()).filter(a=>a.length>=2))],l=(0,B.Cr)(k,a=>(0,B.Ox)(a),{maxItems:36,maxChars:1200},"retrieval-tokens").selected,m=g?a.title.split(/[、,,与和及]+/u).map(a=>a.trim()).filter(a=>a.length>=4).map(a=>`${a} ${e.slice(0,6).join(" ")} ${f.slice(0,4).join(" ")}`.trim()):[];return[...new Set([`${a.title} ${e.join(" ")}`.trim(),...f.map(b=>`${a.title} ${b}`.trim()),...e.map(b=>`${a.title} ${b} ${f.slice(0,6).join(" ")}`.trim()),`${a.title} ${j.join(" ")}`.trim(),...m,l.join(" ")].filter(Boolean))]})(a.chapter,a.requiredNeeds).slice(0,e),k=[...i.map(b=>`${a.chapter.title} ${b} ${(a.chapter.sections||[]).join(" ")}`.trim()).filter(a=>!j.includes(a)).map(a=>({text:a,boost:2,source:"required-fact-evidence"})),...j.map(a=>({text:a,boost:2.4,source:"deep-retrieval"}))];return b.push(...(await (0,A.l$)(k,async b=>{var c;(0,A.Te)(a.signal);let d=await a.manager.search(a.projectRoot,b.text,{scope:"project",filters:{filePaths:a.scopedFilePaths},limit:f,weights:{keyword:.62,vector:.32,rewrite:.9,hybridBonus:.28},generationMode:!0,disableReranker:!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,s.QR)(b.filter(a=>"required-fact-evidence"===a.source),{maxItems:Math.max(6,3*i.length),maxChars:18e3,preservePinned:!0}),...(0,s.QR)(b.filter(a=>"required-fact-evidence"!==a.source),{maxItems:g,maxChars:h,preservePinned:!0})]}var bj=c(80439),bk=c(46482),bl=c(79227),bm=c(2773),bn=c(92817),bo=c(3063);function bp(a){return(0,t.GQ)(a.replace(/\*+/gu,"")).replace(/^第[一二三四五六七八九十百千万\d]+[章节篇部分、..\s-]*/u,"").replace(/^\d+(?:\.\d+)*(?:[..、]|\s)+/u,"").replace(/^[-—–]\s*/u,"").replace(/[<>]/gu,"").replace(/[::。;;,.,]+$/gu,"").replace(/\s*[((][^()()]{0,40}[a-zA-Z]{3,}[^()()]{0,40}[))]\s*$/u,"").trim()}function bq(a,b){let c=bp(a);return!!(c.length<4||c.length>60||c===bp(b)||/^(?:目录|章节|大纲|要求|说明|注意|输出|格式|示例|占位|提示|概述|总体要求)$/u.test(c)||/如需|应由|大模型|提示词|上下文|OUTLINE|JSON|小节标题/u.test(c)||/(.)\1/u.test(c))}function br(a,b){let c=a=>{let b=new Set;for(let c=0;c<a.length-1;c+=1)b.add(a.slice(c,c+2));return b},d=c(b),e=[...c(a)];return 0===e.length?0:e.filter(a=>d.has(a)).length/e.length}function bs(a){return/工期|进度|节点|计划|纠偏|预警/u.test(a)?"工期进度":/质量|验收|三检|样板|隐蔽|复试|实测|通病/u.test(a)?"质量验收":/安全|危大|风险|隐患|应急|临边|洞口|消防|临电/u.test(a)?"安全风险":/文明|扬尘|噪声|绿色|废水|垃圾|环保|智慧/u.test(a)?"文明绿色":/劳务|工资|实名|银行|考勤|人员|岗位|组织|职责/u.test(a)?"组织劳务":/资源|材料|设备|机械|人材机|调配/u.test(a)?"资源保障":/施工|工艺|流程|顺序|穿插|部署|区段|流水/u.test(a)?"施工组织":"综合管理"}function bt(a){return/^(?:确保\s*)?[人材机](?:员|力|料|械|工)?\s*的保障体系与措施$/u.test(a)}function bu(a){let b=new Set,c=[];for(let d of a.sections||[]){let e=bp(d);if(!e||bq(e,a.title))continue;let f=e.replace(/\s+/gu,"");b.has(f)||(b.add(f),c.push(e))}return c}function bv(a,b){let c=a.replace(/\s+/gu,""),d=b.replace(/\s+/gu,"");return c===d||c.includes(d)||d.includes(c)}function bw(a,b,c){let d=new Map,e=[];for(let b of a){if(bt(b)){e.push(b);continue}let a=bs(b),c=d.get(a)||[];c.push(b),d.set(a,c)}let f=a=>{let b=[];for(let c of a){let a=b[b.length-1],d=a?a.sources[a.sources.length-1]:"";!(0,bo.tZ)(c)&&!bt(c)&&a&&(bv(c,d)||br(c,d)>=.75)?(a.sources.push(c),c.length>a.title.length&&(a.title=c)):b.push({title:c,sources:[c]})}return b},g=e.map(a=>({title:a,subPoints:[{title:a,sources:[a]}],facts:[],targetWords:1200}));for(let a of d.values()){let c=f(a);for(let a=0;a<c.length;a+=6){let d=c.slice(a,a+6);g.push({title:d[0].title||b,subPoints:d,facts:[],targetWords:1200})}}return bx(g,c),{blocks:g,coveredSections:a.slice(),fallbackSections:[],llmPlanned:!1}}function bx(a,b){for(let c=0;c<2&&a.length>0&&!(4e3>=Math.floor(b/a.length));c+=1){let b=a.reduce((a,b)=>b.subPoints.length>a.subPoints.length?b:a,a[0]);if(b.subPoints.length<2)break;let c=Math.ceil(b.subPoints.length/2);a.push({title:b.subPoints[c].title||b.title,subPoints:b.subPoints.slice(c),facts:[],targetWords:0}),b.subPoints=b.subPoints.slice(0,c)}let c=a.reduce((a,b)=>a+b.subPoints.length,0)||a.length;for(let d of a){let e=Math.floor(.75*Math.max(1200,Math.floor(b/Math.max(1,a.length)))+.25*b*(d.subPoints.length/c));d.targetWords=Math.min(4e3,Math.max(1200,e))}}let by={type:"object",required:["title","subPoints"],properties:{title:{type:"string",required:!0,minLength:2,maxLength:80},subPoints:{type:"array",required:!0,minItems:1,maxItems:6,items:{type:"object",required:!0,properties:{title:{type:"string",required:!0,minLength:2,maxLength:60},sources:{type:"array",required:!0,maxItems:8,items:{type:"string",maxLength:120}}}}},facts:{type:"array",maxItems:2,items:{type:"string",maxLength:100}}}};async function bz(a){let b=bu(a.chapter);if(b.length<=8)return;let c=await (0,S.Mv)(b,b,a.semanticEmbedder),d=function(a,b){let c=new Map,d=[];for(let b of a){if(bt(b)){d.push([b]);continue}let a=bs(b),e=c.get(a)||[];e.push(b),c.set(a,e)}let e=[];for(let a of c.values()){let c=[];for(let d of a){let a,e=-1;for(let f of c){if(f.length>=8)continue;let c=Math.max(...f.map(a=>b(d,a)));c>e&&(e=c,a=f)}a&&e>=.5?a.push(d):c.push([d])}e.push(...c)}return[...d,...e]}(b,c),e=Math.max(800,Math.floor(a.targetWords/Math.max(1,d.length))),f=async(b,c)=>{let d=function(a,b){let c=a.flatMap(a=>[a.slice(0,4),a.slice(-4)]).filter(a=>a.length>=2);return b.map(a=>({item:a,score:c.reduce((b,c)=>b+ +!!a.content.includes(c),0)})).sort((a,b)=>b.score-a.score).map(a=>a.item)}(b,a.evidence),f=(0,s.ks)((0,s.QO)(a.chapter,d),{maxChars:(0,s.Pc)(e,5e3,12e3),requiredFacts:a.chapter.requiredFacts,diagnostics:a.diagnostics}),g=[(0,v.y4)("你是专业施工组织设计文档结构规划专家。"),"任务:把一个主题块内的输入细目重排为 H4 要点结构;语义相近、内容连贯的细目必须合并进同一个 H4 要点。","硬性规则:",`1. 合并决策:语义相近、内容连贯的输入细目必须合并进同一个 H4 要点;H4 要点标题必须重写为更概括、更专业的标题(16 字以内),不得直接照抄任一输入细目标题;每个 H4 要点的 sources 字段逐字列出它所覆盖的全部输入细目标题,不得改写、不得遗漏、不得重复映射。例外:含评标必查关键词的输入细目(${bo.Dr.join("/")}等)必须保留为独立 H4 要点,不得与其他细目合并吞并,其 H4 标题必须保留该关键词。`,`2. 合并依据:优先参考项目图谱与文档蓝图,把对应同一套工程对象/管理闭环的细目合并(如「三检制度」「样板引路」「隐蔽工程验收」同属质量管控闭环);不得把内容无关的细目强行合并。`,`3. 主题块标题必须具体、专业、能承载其要点(16 字以内),不得使用"目标与范围""资料依据""总体要求"等通用占位标题。`,`4. 数量约束:本主题块 1~6 个 H4 要点。`,"5. facts 字段:从绑定资料中摘取与本主题块直接相关的关键事实短句(每条 ≤60 字,0~2 条)。","6. 只返回 JSON,不要输出任何其他文字。",'JSON 格式:{"title":"主题块标题","subPoints":[{"title":"H4要点标题","sources":["输入细目原文"]}],"facts":["事实短句"]}'],h=[`文档模板:${a.template.name}`,`章节标题:${a.chapter.title}`,a.requirement?`用户要求:${a.requirement}`:"",a.graphContext?`项目图谱(本章定向):${a.graphContext}`:"",a.blueprintContext?`文档蓝图(本章任务卡与实施方案):${a.blueprintContext}`:"",a.projectContext?`上下文:${a.projectContext}`:"",a.roleContext?`角色要求:${a.roleContext}`:"",f?`真实绑定资料:${f}`:"",`输入细目清单(本主题块共 ${b.length} 条,必须全部覆盖,允许合并进同一 H4):${b.join("、")}`,`请输出 1 个主题块,1~6 个 H4 要点,确保所有输入细目被覆盖。`],i={},j={l0:g.join("\n").length,l2:(0,ad.CX)([`文档模板:${a.template.name}`,`章节标题:${a.chapter.title}`,a.requirement?`用户要求:${a.requirement}`:"",a.graphContext?`项目图谱(本章定向):${a.graphContext}`:"",a.blueprintContext?`文档蓝图(本章任务卡与实施方案):${a.blueprintContext}`:"",a.projectContext?`上下文:${a.projectContext}`:"",a.roleContext?`角色要求:${a.roleContext}`:""]),l3:(0,ad.CX)([f?`真实绑定资料:${f}`:"",`输入细目清单(本主题块共 ${b.length} 条,必须全部覆盖,允许合并进同一 H4):${b.join("、")}`,`请输出 1 个主题块,1~6 个 H4 要点,确保所有输入细目被覆盖。`])},k=await (0,ad.bb)(g.join("\n"),h.filter(Boolean).join("\n\n"),{maxTokens:4096,temperature:.1,signal:a.signal,diagnostics:a.diagnostics,schema:by,disableThinkingBoost:!0,outFailure:i,contextLayers:j});if(!k){let d=i.value?`第 ${c+1} 块未通过校验(${i.value})`:`第 ${c+1} 块 LLM 无响应`;return{blocks:bw(b,a.chapter.title,e).blocks,llmPlanned:!1,failure:d}}let l=function(a,b,c){let d=bp(a.title||"");if(!d||bq(d,c))return;let e=(a.subPoints||[]).map(a=>{let c=Array.isArray(a.sources)&&a.sources.length>0?a.sources:a.source?[a.source]:[],d=[];for(let a of c){let c=bp(a||"");!(c.length<4)&&b.some(a=>bv(c,a))&&(d.some(a=>bv(a,c))||d.push(c))}let e=bp(a.title||"");return!e||e.length<4?d.length>0?{title:d[0],sources:d}:void 0:{title:e&&!d.some(a=>bv(e,a))?e:d[0]||e,sources:d}}).filter(a=>!!a);if(0!==e.length)return{title:d,subPoints:e,facts:(a.facts||[]).map(a=>a.trim()).filter(Boolean),targetWords:1200}}(k,b,a.chapter.title);return l?{blocks:[l],llmPlanned:!0}:{blocks:bw(b,a.chapter.title,e).blocks,llmPlanned:!1,failure:`第 ${c+1} 块 LLM 结构无效(title/subPoints 缺失或未对齐)`}},g=await Promise.all(d.map((a,b)=>f(a,b))),h=g.flatMap(a=>a.blocks),i=g.map(a=>a.failure).filter(Boolean);return 0===h.length?{blocks:[],coveredSections:[],fallbackSections:[],llmPlanned:!1,llmFailure:i.join(";")||"未知原因"}:(bx(h,a.targetWords),{...function(a){let b=[],c=a.blocks.map(a=>({...a,subPoints:a.subPoints.map(a=>{let c=a.sources.filter(a=>!b.some(b=>bv(b,a))&&(b.push(a),!0));return{...a,sources:c}}).filter(a=>a.sources.length>0)}));return{...a,blocks:c}}(function(a,b){let c=[],d=[],e=b.map(a=>({...a,subPoints:[...a.subPoints]}));for(let b of a){let a,f;if(e.some(a=>(function(a,b){return!!bv(b.title,a)||b.subPoints.some(b=>b.sources.some(b=>bv(b,a))||bv(b.title,a))})(b,a))){c.push(b);continue}let g=-1;for(let c of e)for(let d of c.subPoints){let e=Math.max(br(b,d.title),...d.sources.map(a=>br(b,a)));e>g&&(g=e,a=d,f=c)}if((0,bo.tZ)(b)||bt(b)){let a=f||e[e.length-1];if(a){a.subPoints.push({title:b,sources:[b]}),d.push(b);continue}}a&&g>=.5?(a.sources.push(b),d.push(b)):f?(f.subPoints.push({title:b,sources:[b]}),d.push(b)):c.push(b)}return{blocks:e,coveredSections:c,fallbackSections:d,llmPlanned:b.length>0}}(b,h)),llmPlanned:g.some(a=>a.llmPlanned),llmFailure:i.length>0?`块级降级(${i.join(";")})`:void 0})}async function bA(a){let b=await bz(a).catch(a=>({blocks:[],coveredSections:[],fallbackSections:[],llmPlanned:!1,llmFailure:a instanceof Error?a.message:String(a)}))??{blocks:[],coveredSections:[],fallbackSections:[],llmPlanned:!1,llmFailure:"输入细目 ≤8 条,跳过 LLM 规划(设计行为)"};return b.blocks.length>0?b:{...bw(bu(a.chapter),a.chapter.title,a.targetWords),llmFailure:b.llmFailure||"LLM 调用异常"}}async function bB(a,b){let c=(0,v.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,bn.AI)(e,(0,bn.Ym)(e,a.chapter,a.evidence),b),i=(0,bn.uQ)(e,g,h);i&&d.push(`${e}:${i}`)}return d}function bC(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 bD(a){return"string"==typeof a?a:a&&"object"==typeof a&&"message"in a?String(a.message):JSON.stringify(a)}function bE(a){let b=Number(process.env[a]);return Number.isFinite(b)&&b>0?Math.ceil(b):0}async function bF(a){var b;(0,A.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}
43
43
  数值口径清单:${c||"(未提取到总量口径数字)"}
44
44
  正文摘要:${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?bE("DOCUMENT_CHAPTER_REVIEW_MAX_CHUNKS")||Math.min(Math.max(2,Math.floor(a.totalChars/a.chapterCount/4e3)),b):"global"===a.phase?bE("DOCUMENT_GLOBAL_REVIEW_MAX_CHUNKS")||Math.min(4,b):bE("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"}),e=bC(c,16e3).map((a,b)=>`**第 ${b+1}/${bC(c,16e3).length} 部分**
45
45
 
46
- ${a}`).slice(0,d.chunks),f=(b=a.projectContext||"")?[...new Set(b.split("\n").map(a=>a.trim()).filter(Boolean).filter(a=>/\d/u.test(a)&&a.length<=500).slice(0,120).map(a=>a.length>240?`${a.slice(0,240)}…`:a))].join("\n").slice(0,8e3):"",g=["你是专业文档审查专家。检查跨章节数值一致性。每个章节都附带“数值口径清单”(从正文确定性提取的总量口径数字)。只报告确定性矛盾,两类:(1) 两章之间同一口径的数值互相矛盾;(2) 正文数值与项目上下文中的资料口径或裁决口径明确不符。每条冲突必须包含:章节名+冲突数值+正确口径(正确口径必须取自项目上下文中的资料或裁决,不得自行编造)。资料未提供某口径不构成冲突,不得报告;各章表述一致但资料未明确的字段不得报告;各章一致的表述不得报告。只返回 JSON。",f?`【资料口径基准(冲突判定基准:正确口径必须取自此处,不得自行编造)】
47
- ${f}`:""].join("\n\n"),h=[...new Set((await Promise.all(e.map(b=>(0,ad.bb)(g,`${a.promptTexts}
46
+ ${a}`).slice(0,d.chunks),f=(0,v.y4)("你是专业文档审查专家。检查跨章节数值一致性。每个章节都附带“数值口径清单”(从正文确定性提取的总量口径数字)。只报告确定性矛盾,两类:(1) 两章之间同一口径的数值互相矛盾;(2) 正文数值与项目上下文中的资料口径或裁决口径明确不符。每条冲突必须包含:章节名+冲突数值+正确口径(正确口径必须取自项目上下文中的资料或裁决,不得自行编造)。资料未提供某口径不构成冲突,不得报告;各章表述一致但资料未明确的字段不得报告;各章一致的表述不得报告。只返回 JSON。"),g=(b=a.projectContext||"")?[...new Set(b.split("\n").map(a=>a.trim()).filter(Boolean).filter(a=>/\d/u.test(a)&&a.length<=500).slice(0,120).map(a=>a.length>240?`${a.slice(0,240)}…`:a))].join("\n").slice(0,8e3):"",h=[f,g?`【资料口径基准(冲突判定基准:正确口径必须取自此处,不得自行编造)】
47
+ ${g}`:""].join("\n\n"),i=[...new Set((await Promise.all(e.map(b=>(0,ad.bb)(h,`${a.promptTexts}
48
48
 
49
49
  ${b}
50
50
 
51
- 返回 JSON:{"issues":[]}`,{maxTokens:1e3,temperature:.1,signal:a.signal,diagnostics:a.diagnostics,contextLayers:{l0:g.length,l1:(0,ad.CX)([a.promptTexts]),l3:(0,ad.CX)([b,'\n\n返回 JSON:{"issues":[]}'])}})))).flatMap(a=>Array.isArray(a?.issues)?a.issues:[]).map(bD).filter(Boolean))];return{issues:h,stage:(0,bj.X5)({type:"llm_review",roleId:"global-consistency-review",status:h.length>0?"failed":"success",message:h.length>0?`全局一致性审查完成:发现 ${h.length} 个跨章问题`:"全局一致性审查通过"},{subtitle:"全局一致性审查"})}}let bG=/安全|文明|质量|绿色施工|环保|扬尘|消防|应急|危大|风险|规范|标准|管理要求|施工工艺|技术措施|验收/u,bH=/项目名称|工程名称|建设地点|建设单位|招标人|发包人|建设规模|招标范围|合同工期|计划工期|质量标准|危大工程清单|工程量|材料规格|设备型号|图纸参数|报价|单价|利润|税率|合同金额|联系方式|品牌/u,bI=/报价|单价|合价|金额|利润|税率|增值税|招标控制价|最高投标限价|中标价|合同价|暂列金额/u,bJ=/联网增强|联网检索|网页资料|搜索结果|根据网页|互联网资料|在线资料|浏览器|搜索引擎/u,bK=["项目名称","工程名称","建设地点","建设单位","招标人","发包人","建设规模","招标范围","合同工期","计划工期","工程量","报价","单价"];function bL(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 bM(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=bL(a[1]||""),c=bL(a[2]||""),d=bL(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||bH.test(b)||bI.test(b)||bJ.test(b)||d.some(a=>a&&b.includes(a)))&&(0===c.length||c.some(b=>a.url.includes(b)))}).slice(0,b):[]}async function bN(a){if(!a.config.enabled||!function(a,b){let c=`${a} ${b.join(" ")}`;return!(!bG.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(bH,"")} 公开规范 通用要求`.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 bM(e,a.config.maxResultsPerQuery,a.config.trustedDomains,a.runtimeRules.forbiddenTerms||[],a.signal))){let e=function(a,b){let c=a;for(let a of bK)c=c.replace(RegExp(`${a}[^。;;
51
+ 返回 JSON:{"issues":[]}`,{maxTokens:1e3,temperature:.1,signal:a.signal,diagnostics:a.diagnostics,contextLayers:{l0:h.length,l1:(0,ad.CX)([a.promptTexts]),l3:(0,ad.CX)([b,'\n\n返回 JSON:{"issues":[]}'])}})))).flatMap(a=>Array.isArray(a?.issues)?a.issues:[]).map(bD).filter(Boolean))];return{issues:i,stage:(0,bj.X5)({type:"llm_review",roleId:"global-consistency-review",status:i.length>0?"failed":"success",message:i.length>0?`全局一致性审查完成:发现 ${i.length} 个跨章问题`:"全局一致性审查通过"},{subtitle:"全局一致性审查"})}}let bG=/安全|文明|质量|绿色施工|环保|扬尘|消防|应急|危大|风险|规范|标准|管理要求|施工工艺|技术措施|验收/u,bH=/项目名称|工程名称|建设地点|建设单位|招标人|发包人|建设规模|招标范围|合同工期|计划工期|质量标准|危大工程清单|工程量|材料规格|设备型号|图纸参数|报价|单价|利润|税率|合同金额|联系方式|品牌/u,bI=/报价|单价|合价|金额|利润|税率|增值税|招标控制价|最高投标限价|中标价|合同价|暂列金额/u,bJ=/联网增强|联网检索|网页资料|搜索结果|根据网页|互联网资料|在线资料|浏览器|搜索引擎/u,bK=["项目名称","工程名称","建设地点","建设单位","招标人","发包人","建设规模","招标范围","合同工期","计划工期","工程量","报价","单价"];function bL(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 bM(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=bL(a[1]||""),c=bL(a[2]||""),d=bL(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||bH.test(b)||bI.test(b)||bJ.test(b)||d.some(a=>a&&b.includes(a)))&&(0===c.length||c.some(b=>a.url.includes(b)))}).slice(0,b):[]}async function bN(a){if(!a.config.enabled||!function(a,b){let c=`${a} ${b.join(" ")}`;return!(!bG.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(bH,"")} 公开规范 通用要求`.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 bM(e,a.config.maxResultsPerQuery,a.config.trustedDomains,a.runtimeRules.forbiddenTerms||[],a.signal))){let e=function(a,b){let c=a;for(let a of bK)c=c.replace(RegExp(`${a}[^。;;
52
52
  ]{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(bI,"").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}
53
- ${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}}function bO(a){return e.resolve(a).replace(/\\/gu,"/").toLowerCase()}function bP(a,b=[]){return{projectId:a,allowedFilePaths:[...new Set(b.filter(Boolean).map(bO))]}}function bQ(a){return!!a?.allowedFilePaths.length}function bR(a,b){if(!bQ(b))return!0;if(!a)return!1;let c=bO(a);return b.allowedFilePaths.includes(c)}function bS(a,b){return a.filter(a=>bR(a.filePath,b))}function bT(a,b){return a.filter(a=>bR(a.sourceFile,b))}function bU(a,b,c){if(!bQ(b))return;let d=a.filter(a=>!bR(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}`)}}function bV(a){return/--|延期到|资料|附件|扫描|目录|汇总|打包|备份|\d{1,2}\.\d{1,2}/u.test(a)}function bW(a){return a.replace(/[((]\d+[))]/gu,"").replace(/副本|最终版|扫描件|定稿/gu,"").replace(/[\s,。,.;;::《》“”‘’()()_-]+/gu,"").toLowerCase()}function bX(a,b){let c=bW(b);if(!c||c.length<4)return!0;let d=bW(a);return!!d.includes(c)||c.length>=12&&d.includes(c.slice(0,Math.max(8,Math.floor(.72*c.length))))}function bY(a){return a.replace(/[((]\d+[))]/gu,"").replace(/副本|最终版|扫描件|定稿/gu,"").replace(/\s+/gu,"").replace(/[,。,.;;::《》“”‘’()()_-]/gu,"").toLowerCase()}function bZ(a,b){let c=a.trim();if(p(b,c)||o(b,c)||/签章|盖章|联系人|联系电话|电话|邮箱|解密|开标|评标|保证金|交易系统|空白|填写|上传|下载|递交|投标文件制作|电子服务系统|交易平台/u.test(c)||/\|/u.test(c)||/^#+\s*/u.test(c)||/见(?:招标公告|投标人须知|前附表|本项目|补疑)|资料参数行摘要|公共资源交易监督管理|开评标程序|监管部门|招标代理机构|监督管理部门|行政监督部门/u.test(c)||/是否|符合|采购范围|规定的投标截止时间|电子交易系统|投标人须知|招标文件正文/u.test(c)&&/\d{3,}/u.test(c)||/项目名称|工程名称/u.test(c)&&/项目编号|工程概况|建筑面积|本项目分为|现状建筑物|改造工程|标段/u.test(c)||/项目编号[::]|工程概况[::]|本项目分为|现状建筑物|总建筑面积|本次改造工程|清单编制说明/u.test(c))return"";let d=/\d+(?:\.\d+)?\s*(?:日历天|天|个月|月)/u.exec(c)?.[0],e=bY(d&&/工期|总工期|合同工期|计划工期|施工周期/u.test(c)?d:c);return!e||e.length>80?"":e}var b$=c(85016);let b_=/([\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,b0=["直径","厚度","宽度","长度","高度","深度","间距","距离","标高","偏差","数量","面积","体积","重量","压力","温度","强度","等级","坡度","规格","尺寸","层数","次数","跨度","半径"];async function b1(a){let b=function(a){let b=[];for(let c of a.split(/\r?\n/u)){let a=c.trim();if(!(/^#{1,6}\s/u.test(a)||/^\s*\|/u.test(a)))for(let c of a.matchAll(RegExp(b_.source,"gu"))){let a=(c[1]||"").trim(),d=Number(c[2]),e=(c[3]||"").trim(),f=`${a}${e}`.replace(/[\s,,、;;::]/gu,"");!(f.length<2)&&/[\u4e00-\u9fa5A-Za-z]{2,}/u.test(f)&&Number.isFinite(d)&&!(d<=0)&&(b0.some(a=>f.replace(/(?:mm|cm|m|MPa|kN|kV|kW|℃|元|万元|人|天|日|个|层|樘|处|套|台|t|吨)/gu,"").replace(/[\s,,、;;::()()]/gu,"")===a)||b.push({concept:f,value:d,raw:c[0]}))}}let c=new Set;return b.filter(a=>{let b=a.raw;return!c.has(b)&&(c.add(b),!0)}).slice(0,60)}(a);if(b.length<3)return[];let c=[...new Set(b.map(a=>a.concept))];if(c.length<2)return[];let d=await (0,S.VN)().embedDocuments(c);if(d.length!==c.length)throw Error(`本地语义模型嵌入数量不一致:期望 ${c.length} 条,实际 ${d.length} 条`);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 a of h.values()){if(a.length<2)continue;let b=[...new Set(a.map(a=>a.value))];if(b.length<2)continue;let c=Math.max(...b),d=Math.min(...b);if(!(c-d<=.02*c)&&!(c>20*d)&&!(a.filter(a=>/[、/](?:与)?\d/u.test(a.raw)).length>=2)&&(i.push(`“${a[0].concept}”出现多个口径:${[...new Set(a.map(a=>a.raw))].slice(0,3).join("、")}`),i.length>=4))break}return 0===i.length?[]:[{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`同一参数概念出现多口径数值冲突:${i.join(";")}`,suggestion:"以绑定资料(图纸/清单/规范)裁决口径为准统一数值表述:每个参数概念全文只保留一个口径数值,删除矛盾表述。"}]}let b2=["电梯","幕墙","智能化","消防","暖通","给排水","电气","燃气","人防","室外","园林","绿化","景观","钢结构","防水","保温","门窗","通风","空调","防雷","接地","动力","照明","拆除","加固","装修","装饰"];function b3(a){let b=[...new Set(a.flatMap(a=>b2.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}]}let b4=(a,b)=>{let c=b.exec(a);if(!c)return;let d=Number(c[1]);return Number.isFinite(d)&&d>0?d:void 0},b5=[{name:"基坑支护与降水工程",aliases:["基坑支护","基坑工程","降排水","降水井"],applicable:a=>{let b=b4(a,/(?:基坑)?开挖深度[约为达至]{0,3}(\d+(?:\.\d+)?)\s*m/u);return void 0!==b&&b>=3}},{name:"高大模板支撑工程",aliases:["高大模板","高支模","模板支撑体系","模板支撑"],applicable:a=>{let b=b4(a,/(?:模板)?支撑(?:体系)?(?:搭设)?高度[约为达至]{0,3}(\d+(?:\.\d+)?)\s*m/u),c=b4(a,/(?:施工(?:总)?荷载|集中线荷载)[约为达至]{0,3}(\d+(?:\.\d+)?)\s*kN/u);return void 0!==b&&b>=8||void 0!==c&&c>=10||/高支模|高大模板/u.test(a)}},{name:"脚手架工程",aliases:["脚手架","落地式钢管脚手架","悬挑式脚手架","悬挑脚手架"],applicable:a=>{let b=b4(a,/(?:落地式|悬挑式)?(?:钢管)?脚手架(?:搭设)?高度[约为达至]{0,3}(\d+(?:\.\d+)?)\s*m/u);return void 0!==b&&b>=15||/悬挑(?:式)?脚手架/u.test(a)}},{name:"起重吊装及安装拆卸工程",aliases:["起重吊装","塔吊","塔式起重机","汽车吊","履带吊","起重机械安拆","物料提升机","提升机","起重机械","吊装"],applicable:a=>/塔吊|塔式起重机|汽车吊|履带吊|吊车|起重机械|起重设备|起重机|卷扬机|物料提升机|提升机|电动葫芦|起重伤害|垂直运输|吊装/u.test(a)},{name:"吊篮作业工程",aliases:["吊篮","高处作业吊篮","电动吊篮"],applicable:a=>/吊篮/u.test(a)},{name:"拆除工程",aliases:["拆除工程","爆破拆除","机械拆除"],applicable:a=>/拆除工程|爆破拆除/u.test(a)}];function b6(a){let b=b5.filter(b=>b.applicable(a));if(0===b.length)return[];let c=function(a){let b=a.split(/\r?\n/u),c=[];return b.forEach((a,d)=>{/危大/u.test(a)&&c.push(...b.slice(Math.max(0,d-6),Math.min(b.length,d+7)))}),c.join("\n")}(a);if(!c)return[{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`正文出现危大工程适用前提(${b.map(a=>a.name).join("、")})但全文未编制危大工程辨识清单`,suggestion:"必须编制危大工程辨识清单:按建办质〔2018〕31号逐项辨识并标注分级,超过一定规模的专项施工方案需专家论证。"}];let d=b.filter(a=>!a.aliases.some(a=>c.includes(a)));return 0===d.length?[]:[{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`危大工程辨识清单遗漏适用项:${d.map(a=>a.name).join("、")}(正文已出现适用前提但辨识清单未列入)`,suggestion:"按建办质〔2018〕31号逐项辨识:将遗漏项补入危大工程辨识清单并标注分级,超过一定规模的专项施工方案需专家论证。"}]}let b7=/分[为成]?[^。;;,,\n]{0,12}阶段|共[分设]?[^。;;,,\n]{0,12}阶段|划[分]?为[^。;;,,\n]{0,12}阶段|[二三四五六七八九十]个阶段/u,b8={一:1,二:2,三:3,四:4,五:5,六:6,七:7,八:8,九:9};function b9(a){return/(\d+|[一二三四五六七八九十]+)\s*个?\s*阶段/u.exec(a)?.[1]??null}function ca(a){let b=a.map(b9).filter(a=>null!==a).map(a=>/^\d+$/u.test(a)?parseInt(a,10):/^[一二三四五六七八九十]+$/u.test(a)?"十"===a?10:1===a.length?b8[a]??null:a.startsWith("十")?10+(b8[a[1]]??0):a.endsWith("十")?(b8[a[0]]??0)*10:(b8[a[0]]??0)*10+(b8[a[2]]??0):null).filter(a=>null!==a);return 0===b.length?null:1===new Set(b).size?b[0]:null}async function cb(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=>a.length>=8&&a.length<=60&&b7.test(a)))];if(b.length<2)return[];let c=await (0,S.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(ca).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:"全文统一阶段划分口径:以总进度计划/施工部署章节的划分为唯一口径,其余章节划分句逐字对齐或删除。"}]}let cc=/应急预案|应急措施|应急响应|应急救援|突发事件|应急管理|应急物资|应急演练|应急组织|应急保障/u,cd=/应急|突发|救援|预案|抢险|疏散/u,ce=["应急预案的编制与响应流程","突发事件应急处置措施","应急救援组织体系与保障"],cf=["应急照明系统安装调试","应急电源配置与切换方案"],cg={organization:"应急管理领导小组、应急救援队伍的组织机构与职责分工",procedure:"应急处置程序、应急响应流程与应急演练安排",resource:"应急物资、应急器材设备的储备与保障措施"},ch=/应急物资|急救箱|灭火器|沙袋|发电机|水泵|对讲机|应急照明|应急灯|防护服|救援绳|救生衣|铁锹|编织袋|抽水泵|警示带|应急器材/u,ci=/配备|储备|保障|配置|数量|不少于|共计|套|具|个|台|把|只/u,cj=["应急物资储备清单与配备数量","应急救援器材的配置与保障"],ck=["应急照明灯具数量与回路设计","应急电源的电气系统设计"];async function cl(a){return(0,T.A)({prototypes:[...ce],negativePrototypes:[...cf],embedDocuments:a})}async function cm(a){return(0,T.A)({prototypes:[...cj],negativePrototypes:[...ck],embedDocuments:a})}async function cn(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=>!cc.test(a.title)&&cd.test(a.title)),f=await cl(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=>cc.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(cg),r=await (0,S.Mv)(p,q),s=a=>p.some(b=>r(b,a)>=S.Eh);s(cg.organization)||o.push("应急组织体系"),s(cg.procedure)||o.push("应急处置程序/演练");let t=await cm(b),u=l.join("。").split(/[。;;]/u).map(a=>a.trim()).filter(a=>ch.test(a)&&ci.test(a)),v=u.length>0?await t(u):[];return s(cg.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}let co={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 cp(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)}}}return[...new Set(b)].slice(0,200)}(a);if(c.length<2)return[];let d=await (0,ad.bb)("你是施工组织设计数据一致性审查器。\n给定全文含数值的句子/表格行清单(编号与内容),找出互相矛盾的数值对:\n- 同一口径必须一致而实际数值不同:劳动力峰值多处不一致、同一面积两处数字不同、总工期与分项工期冲突、同一节点日期两处不一致、表格合计与明细之和不等、人数\xd7工期与总工日不自洽;\n- 只报确定的矛盾(itemA 与 itemB 明确矛盾且置信度 ≥0.8),不得臆造;\n- 不同口径的数值不算矛盾:建筑面积 vs 占地面积、不同单位的表述;分阶段各期人数互比不算矛盾(各阶段人数不同是正常配置);\n- 但总量控制上限与分阶段峰值必须自洽:“高峰期总人数控制在X人/高峰总人数X人以内/控制在X人以下”与任何“高峰投入Y人/阶段高峰Y人/峰值Y人”(Y>X)构成矛盾,必须上报;\nitemA/itemB 必须是清单中真实出现的原文片段(逐字引用编号对应句子或表格行的关键片段,含数值)。\n只输出 JSON,不得输出其他内容。",c.map((a,b)=>`${b+1}. ${a}`).join("\n"),{maxTokens:2500,temperature:0,signal:b.signal,diagnostics:b.diagnostics,schema:co,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):[]}function cq(a){return{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`数据一致性矛盾(${a.kind}):${a.description}(原文 A:“${a.itemA.slice(0,60)}” ↔ 原文 B:“${a.itemB.slice(0,60)}”)`,suggestion:"全文数据必须一致:以绑定资料(图纸/清单/招标文件)为准选定唯一值,统一矛盾数值对,删除或修正其余矛盾表述。禁止将本缺陷描述与修复要求本身写入正文,输出仅限正文内容。"}}function cr(a){return[...new Set([...a.matchAll(/[\d,]+(?:\.\d+)?/gu)].map(a=>a[0].replace(/[,,]/gu,"")).filter(a=>a.length>=2))].sort((a,b)=>Number(a)-Number(b)).join("|")}async function cs(a,b,c={}){let d=await cp(a,c);if(0===d.length)return[];let e=new Set(d.map(a=>cr(cq(a).message)).filter(Boolean));return b.filter(a=>e.has(cr(a)))}var ct=c(1358);function cu(a){return(0,af.K3)(`${a.fieldName||a.key} ${(0,A.lG)(a.value)}`)}function cv(a){return[...a.project,...a.schedule,...a.quality,...a.safety,...a.resources,...a.preciseFacts,...a.bills,...a.drawings,...a.rules,...a.specifications].map(cu).join("\n")}function cw(a,b){let c=[{label:"工期",corpus:cv({...b,project:[],quality:[],safety:[],resources:[],preciseFacts:[],bills:[],drawings:[],rules:[],specifications:[]}),required:/工期|日历天|合同工期|计划工期/u},{label:"质量",corpus:cv({...b,project:[],schedule:[],safety:[],resources:[],preciseFacts:[],bills:[],drawings:[],rules:[],specifications:[]}),required:/质量目标|质量标准|验收|复验/u},{label:"安全",corpus:cv({...b,project:[],schedule:[],quality:[],resources:[],preciseFacts:[],bills:[],drawings:[],rules:[],specifications:[]}),required:/安全|文明|风险|应急/u},{label:"资源",corpus:cv({...b,project:[],schedule:[],quality:[],safety:[],preciseFacts:[],bills:[],drawings:[],rules:[],specifications:[]}),required:/资源|材料|设备|劳动力/u},{label:"工程量",corpus:cv({...b,project:[],schedule:[],quality:[],safety:[],resources:[],preciseFacts:[],drawings:[],rules:[],specifications:[]}),required:/工程量|清单|建筑面积|长度|吨|台|套|项/u}],d=(0,af.K3)(a.replace(/\s+/gu,"")),e=[];for(let b of c)b.required.test(a)&&0===[...new Set(b.corpus.split("\n").map(a=>a.replace(/\s+/gu,"").slice(0,24)).filter(Boolean))].filter(a=>a.length>=6&&d.includes(a)).length&&e.push({level:"warning",message:`证据使用覆盖率偏低:正文中未明显使用${b.label}相关事实`,suggestion:`请在相应章节中引用至少一项${b.label}事实,避免只写通用表述。`});return e}async function cx(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,w.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 cy(a,b){let c=[];if(!b)return c;let d=a.map(a=>`${a.title}
53
+ ${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}}function bO(a){return e.resolve(a).replace(/\\/gu,"/").toLowerCase()}function bP(a,b=[]){return{projectId:a,allowedFilePaths:[...new Set(b.filter(Boolean).map(bO))]}}function bQ(a){return!!a?.allowedFilePaths.length}function bR(a,b){if(!bQ(b))return!0;if(!a)return!1;let c=bO(a);return b.allowedFilePaths.includes(c)}function bS(a,b){return a.filter(a=>bR(a.filePath,b))}function bT(a,b){return a.filter(a=>bR(a.sourceFile,b))}function bU(a,b,c){if(!bQ(b))return;let d=a.filter(a=>!bR(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}`)}}function bV(a){return/--|延期到|资料|附件|扫描|目录|汇总|打包|备份|\d{1,2}\.\d{1,2}/u.test(a)}function bW(a){return a.replace(/[((]\d+[))]/gu,"").replace(/副本|最终版|扫描件|定稿/gu,"").replace(/[\s,。,.;;::《》“”‘’()()_-]+/gu,"").toLowerCase()}function bX(a,b){let c=bW(b);if(!c||c.length<4)return!0;let d=bW(a);return!!d.includes(c)||c.length>=12&&d.includes(c.slice(0,Math.max(8,Math.floor(.72*c.length))))}function bY(a){return a.replace(/[((]\d+[))]/gu,"").replace(/副本|最终版|扫描件|定稿/gu,"").replace(/\s+/gu,"").replace(/[,。,.;;::《》“”‘’()()_-]/gu,"").toLowerCase()}function bZ(a,b){let c=a.trim();if(p(b,c)||o(b,c)||/签章|盖章|联系人|联系电话|电话|邮箱|解密|开标|评标|保证金|交易系统|空白|填写|上传|下载|递交|投标文件制作|电子服务系统|交易平台/u.test(c)||/\|/u.test(c)||/^#+\s*/u.test(c)||/见(?:招标公告|投标人须知|前附表|本项目|补疑)|资料参数行摘要|公共资源交易监督管理|开评标程序|监管部门|招标代理机构|监督管理部门|行政监督部门/u.test(c)||/是否|符合|采购范围|规定的投标截止时间|电子交易系统|投标人须知|招标文件正文/u.test(c)&&/\d{3,}/u.test(c)||/项目名称|工程名称/u.test(c)&&/项目编号|工程概况|建筑面积|本项目分为|现状建筑物|改造工程|标段/u.test(c)||/项目编号[::]|工程概况[::]|本项目分为|现状建筑物|总建筑面积|本次改造工程|清单编制说明/u.test(c))return"";let d=/\d+(?:\.\d+)?\s*(?:日历天|天|个月|月)/u.exec(c)?.[0],e=bY(d&&/工期|总工期|合同工期|计划工期|施工周期/u.test(c)?d:c);return!e||e.length>80?"":e}var b$=c(85016);let b_=/([\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,b0=["直径","厚度","宽度","长度","高度","深度","间距","距离","标高","偏差","数量","面积","体积","重量","压力","温度","强度","等级","坡度","规格","尺寸","层数","次数","跨度","半径"];async function b1(a){let b=function(a){let b=[];for(let c of a.split(/\r?\n/u)){let a=c.trim();if(!(/^#{1,6}\s/u.test(a)||/^\s*\|/u.test(a)))for(let c of a.matchAll(RegExp(b_.source,"gu"))){let a=(c[1]||"").trim(),d=Number(c[2]),e=(c[3]||"").trim(),f=`${a}${e}`.replace(/[\s,,、;;::]/gu,"");!(f.length<2)&&/[\u4e00-\u9fa5A-Za-z]{2,}/u.test(f)&&Number.isFinite(d)&&!(d<=0)&&(b0.some(a=>f.replace(/(?:mm|cm|m|MPa|kN|kV|kW|℃|元|万元|人|天|日|个|层|樘|处|套|台|t|吨)/gu,"").replace(/[\s,,、;;::()()]/gu,"")===a)||b.push({concept:f,value:d,raw:c[0]}))}}let c=new Set;return b.filter(a=>{let b=a.raw;return!c.has(b)&&(c.add(b),!0)}).slice(0,60)}(a);if(b.length<3)return[];let c=[...new Set(b.map(a=>a.concept))];if(c.length<2)return[];let d=await (0,S.VN)().embedDocuments(c);if(d.length!==c.length)throw Error(`本地语义模型嵌入数量不一致:期望 ${c.length} 条,实际 ${d.length} 条`);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 a of h.values()){if(a.length<2)continue;let b=[...new Set(a.map(a=>a.value))];if(b.length<2)continue;let c=Math.max(...b),d=Math.min(...b);if(!(c-d<=.02*c)&&!(c>20*d)&&!(a.filter(a=>/[、/](?:与)?\d/u.test(a.raw)).length>=2)&&(i.push(`“${a[0].concept}”出现多个口径:${[...new Set(a.map(a=>a.raw))].slice(0,3).join("、")}`),i.length>=4))break}return 0===i.length?[]:[{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`同一参数概念出现多口径数值冲突:${i.join(";")}`,suggestion:"以绑定资料(图纸/清单/规范)裁决口径为准统一数值表述:每个参数概念全文只保留一个口径数值,删除矛盾表述。"}]}let b2=["电梯","幕墙","智能化","消防","暖通","给排水","电气","燃气","人防","室外","园林","绿化","景观","钢结构","防水","保温","门窗","通风","空调","防雷","接地","动力","照明","拆除","加固","装修","装饰"];function b3(a){let b=[...new Set(a.flatMap(a=>b2.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}]}let b4=(a,b)=>{let c=b.exec(a);if(!c)return;let d=Number(c[1]);return Number.isFinite(d)&&d>0?d:void 0},b5=[{name:"基坑支护与降水工程",aliases:["基坑支护","基坑工程","降排水","降水井"],applicable:a=>{let b=b4(a,/(?:基坑)?开挖深度[约为达至]{0,3}(\d+(?:\.\d+)?)\s*m/u);return void 0!==b&&b>=3}},{name:"高大模板支撑工程",aliases:["高大模板","高支模","模板支撑体系","模板支撑"],applicable:a=>{let b=b4(a,/(?:模板)?支撑(?:体系)?(?:搭设)?高度[约为达至]{0,3}(\d+(?:\.\d+)?)\s*m/u),c=b4(a,/(?:施工(?:总)?荷载|集中线荷载)[约为达至]{0,3}(\d+(?:\.\d+)?)\s*kN/u);return void 0!==b&&b>=8||void 0!==c&&c>=10||/高支模|高大模板/u.test(a)}},{name:"脚手架工程",aliases:["脚手架","落地式钢管脚手架","悬挑式脚手架","悬挑脚手架"],applicable:a=>{let b=b4(a,/(?:落地式|悬挑式)?(?:钢管)?脚手架(?:搭设)?高度[约为达至]{0,3}(\d+(?:\.\d+)?)\s*m/u);return void 0!==b&&b>=15||/悬挑(?:式)?脚手架/u.test(a)}},{name:"起重吊装及安装拆卸工程",aliases:["起重吊装","塔吊","塔式起重机","汽车吊","履带吊","起重机械安拆","物料提升机","提升机","起重机械","吊装"],applicable:a=>/塔吊|塔式起重机|汽车吊|履带吊|吊车|起重机械|起重设备|起重机|卷扬机|物料提升机|提升机|电动葫芦|起重伤害|垂直运输|吊装/u.test(a)},{name:"吊篮作业工程",aliases:["吊篮","高处作业吊篮","电动吊篮"],applicable:a=>/吊篮/u.test(a)},{name:"拆除工程",aliases:["拆除工程","爆破拆除","机械拆除"],applicable:a=>/拆除工程|爆破拆除/u.test(a)}];function b6(a){let b=b5.filter(b=>b.applicable(a));if(0===b.length)return[];let c=function(a){let b=a.split(/\r?\n/u),c=[];return b.forEach((a,d)=>{/危大/u.test(a)&&c.push(...b.slice(Math.max(0,d-6),Math.min(b.length,d+7)))}),c.join("\n")}(a);if(!c)return[{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`正文出现危大工程适用前提(${b.map(a=>a.name).join("、")})但全文未编制危大工程辨识清单`,suggestion:"必须编制危大工程辨识清单:按建办质〔2018〕31号逐项辨识并标注分级,超过一定规模的专项施工方案需专家论证。"}];let d=b.filter(a=>!a.aliases.some(a=>c.includes(a)));return 0===d.length?[]:[{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`危大工程辨识清单遗漏适用项:${d.map(a=>a.name).join("、")}(正文已出现适用前提但辨识清单未列入)`,suggestion:"按建办质〔2018〕31号逐项辨识:将遗漏项补入危大工程辨识清单并标注分级,超过一定规模的专项施工方案需专家论证。"}]}let b7=/分[为成]?[^。;;,,\n]{0,12}阶段|共[分设]?[^。;;,,\n]{0,12}阶段|划[分]?为[^。;;,,\n]{0,12}阶段|[二三四五六七八九十]个阶段/u,b8={一:1,二:2,三:3,四:4,五:5,六:6,七:7,八:8,九:9};function b9(a){return/(\d+|[一二三四五六七八九十]+)\s*个?\s*阶段/u.exec(a)?.[1]??null}function ca(a){let b=a.map(b9).filter(a=>null!==a).map(a=>/^\d+$/u.test(a)?parseInt(a,10):/^[一二三四五六七八九十]+$/u.test(a)?"十"===a?10:1===a.length?b8[a]??null:a.startsWith("十")?10+(b8[a[1]]??0):a.endsWith("十")?(b8[a[0]]??0)*10:(b8[a[0]]??0)*10+(b8[a[2]]??0):null).filter(a=>null!==a);return 0===b.length?null:1===new Set(b).size?b[0]:null}async function cb(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=>a.length>=8&&a.length<=60&&b7.test(a)))];if(b.length<2)return[];let c=await (0,S.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(ca).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:"全文统一阶段划分口径:以总进度计划/施工部署章节的划分为唯一口径,其余章节划分句逐字对齐或删除。"}]}let cc=/应急预案|应急措施|应急响应|应急救援|突发事件|应急管理|应急物资|应急演练|应急组织|应急保障/u,cd=/应急|突发|救援|预案|抢险|疏散/u,ce=["应急预案的编制与响应流程","突发事件应急处置措施","应急救援组织体系与保障"],cf=["应急照明系统安装调试","应急电源配置与切换方案"],cg={organization:"应急管理领导小组、应急救援队伍的组织机构与职责分工",procedure:"应急处置程序、应急响应流程与应急演练安排",resource:"应急物资、应急器材设备的储备与保障措施"},ch=/应急物资|急救箱|灭火器|沙袋|发电机|水泵|对讲机|应急照明|应急灯|防护服|救援绳|救生衣|铁锹|编织袋|抽水泵|警示带|应急器材/u,ci=/配备|储备|保障|配置|数量|不少于|共计|套|具|个|台|把|只/u,cj=["应急物资储备清单与配备数量","应急救援器材的配置与保障"],ck=["应急照明灯具数量与回路设计","应急电源的电气系统设计"];async function cl(a){return(0,T.A)({prototypes:[...ce],negativePrototypes:[...cf],embedDocuments:a})}async function cm(a){return(0,T.A)({prototypes:[...cj],negativePrototypes:[...ck],embedDocuments:a})}async function cn(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=>!cc.test(a.title)&&cd.test(a.title)),f=await cl(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=>cc.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(cg),r=await (0,S.Mv)(p,q),s=a=>p.some(b=>r(b,a)>=S.Eh);s(cg.organization)||o.push("应急组织体系"),s(cg.procedure)||o.push("应急处置程序/演练");let t=await cm(b),u=l.join("。").split(/[。;;]/u).map(a=>a.trim()).filter(a=>ch.test(a)&&ci.test(a)),v=u.length>0?await t(u):[];return s(cg.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}let co={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 cp(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)}}}return[...new Set(b)].slice(0,200)}(a);if(c.length<2)return[];let d=await (0,ad.bb)([(0,v.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:co,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):[]}function cq(a){return{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`数据一致性矛盾(${a.kind}):${a.description}(原文 A:“${a.itemA.slice(0,60)}” ↔ 原文 B:“${a.itemB.slice(0,60)}”)`,suggestion:"全文数据必须一致:以绑定资料(图纸/清单/招标文件)为准选定唯一值,统一矛盾数值对,删除或修正其余矛盾表述。禁止将本缺陷描述与修复要求本身写入正文,输出仅限正文内容。"}}function cr(a){return[...new Set([...a.matchAll(/[\d,]+(?:\.\d+)?/gu)].map(a=>a[0].replace(/[,,]/gu,"")).filter(a=>a.length>=2))].sort((a,b)=>Number(a)-Number(b)).join("|")}async function cs(a,b,c={}){let d=await cp(a,c);if(0===d.length)return[];let e=new Set(d.map(a=>cr(cq(a).message)).filter(Boolean));return b.filter(a=>e.has(cr(a)))}var ct=c(1358);function cu(a){return(0,af.K3)(`${a.fieldName||a.key} ${(0,A.lG)(a.value)}`)}function cv(a){return[...a.project,...a.schedule,...a.quality,...a.safety,...a.resources,...a.preciseFacts,...a.bills,...a.drawings,...a.rules,...a.specifications].map(cu).join("\n")}function cw(a,b){let c=[{label:"工期",corpus:cv({...b,project:[],quality:[],safety:[],resources:[],preciseFacts:[],bills:[],drawings:[],rules:[],specifications:[]}),required:/工期|日历天|合同工期|计划工期/u},{label:"质量",corpus:cv({...b,project:[],schedule:[],safety:[],resources:[],preciseFacts:[],bills:[],drawings:[],rules:[],specifications:[]}),required:/质量目标|质量标准|验收|复验/u},{label:"安全",corpus:cv({...b,project:[],schedule:[],quality:[],resources:[],preciseFacts:[],bills:[],drawings:[],rules:[],specifications:[]}),required:/安全|文明|风险|应急/u},{label:"资源",corpus:cv({...b,project:[],schedule:[],quality:[],safety:[],preciseFacts:[],bills:[],drawings:[],rules:[],specifications:[]}),required:/资源|材料|设备|劳动力/u},{label:"工程量",corpus:cv({...b,project:[],schedule:[],quality:[],safety:[],resources:[],preciseFacts:[],drawings:[],rules:[],specifications:[]}),required:/工程量|清单|建筑面积|长度|吨|台|套|项/u}],d=(0,af.K3)(a.replace(/\s+/gu,"")),e=[];for(let b of c)b.required.test(a)&&0===[...new Set(b.corpus.split("\n").map(a=>a.replace(/\s+/gu,"").slice(0,24)).filter(Boolean))].filter(a=>a.length>=6&&d.includes(a)).length&&e.push({level:"warning",message:`证据使用覆盖率偏低:正文中未明显使用${b.label}相关事实`,suggestion:`请在相应章节中引用至少一项${b.label}事实,避免只写通用表述。`});return e}async function cx(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,w.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 cy(a,b){let c=[];if(!b)return c;let d=a.map(a=>`${a.title}
54
54
  ${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 cz=[{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 cA(a){return a.replace(/[\s,。;;::|]/gu,"").trim()}let cB=/塔式起重机|履带吊|汽车吊|卷扬机|脚手架|扣件|钢管|模板|噪声|PM2\.5|PM10|TSP|扬尘在线监测|临电|消防|安全网|围挡|洗车台|沉淀池|雾炮/u,cC=/不使用|不采用|不配置|无需|未采用|不得使用|禁止使用/u;function cD(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(cA).filter(Boolean)}async function cE(a){let b=await (0,x.Z2)(a.markdown,a.factsModel,{scopeClassifier:a.factTokenScopeClassifier}),c=aW(a.tenderRequirements).map(({item:a})=>aV(a)),d=a.markdown.split(/\n/u).filter(a=>/^#{2,4}\s/u.test(a.trim())).map(a=>a1(a)).filter(Boolean).slice(0,80),e=(0,y.s3)(a.markdown),f=await (0,S.Mv)(c,[...d,...e]),g=await (0,S.Mv)(a.evaluationCriteriaItems||[],d),h=new Map((await Promise.all(a.chapters.map(async b=>[b.title,await a.professionalDepthClassifier.analyze(b.content)]))).filter(a=>!!a[1])),i=(0,y.t1)(a.markdown),j=await (0,S.Mv)(i.sentences,i.overviewBody?[i.overviewBody]:[]);return[...a.promptDocumentRules?.forbidToc?[]:[...(0,x.gN)(a.markdown),...(0,x.f8)(a.markdown)],...(0,x.kw)(a.markdown),...(0,x.wl)(a.markdown,a.evaluationCriteriaItems||[],{semanticSimilarity:g}),...await a0(a.markdown,a.tenderRequirements,{semanticSimilarity:f,bodyTexts:e}),...(0,y.cf)(a.markdown,a.factsModel),...(0,y.a8)(a.markdown,a.factsModel),...(0,y.u2)(a.markdown),...(0,y.rA)(a.markdown),...(0,y.Et)(a.markdown),...(0,y.H)(a.markdown),...(0,y.N$)(a.markdown),...(0,y.Fr)(a.markdown),...(0,y.bq)(a.markdown),...(0,y.hu)(a.markdown,a.factsModel,a.tenderRequirements),...(0,y.cT)(a.markdown),...(0,y.ub)(a.markdown),...(0,y.cl)(a.markdown),...(0,y.zP)(a.markdown),...await (0,y.r8)(a.markdown),...(0,y.vH)(a.markdown),...await (0,y.sn)(a.markdown),...await (0,y.YN)(a.markdown),...(0,y.y2)(a.markdown),...(0,y.Xc)(a.markdown),...await (0,y.mC)(a.markdown),...(0,y.l4)(a.markdown,{semanticSimilarity:j}),...(0,y.dF)(a.markdown),...await b1(a.markdown),...await (0,b$.WT)(a.markdown),...b3(a.chapters),...b6(a.markdown),...(0,x.Ef)(a.markdown,a.effectiveChapters||a.template.chapters||[]),...(0,x.K1)(a.markdown),...(0,x.Fv)(a.markdown),...(0,x.k0)(a.markdown),...(0,x.NS)(a.markdown),...(0,x.SN)(a.markdown),...(0,x.qK)(a.markdown,a.chapters),...(0,x.ji)(a.chapters,h),...(0,x.i0)(a.chapters,h),...(0,x.ST)(a.chapters,h),...(0,x.xX)(a.chapters,h),...await (0,x.Zu)(a.markdown),...await (0,x.qm)(a.markdown,a.factsModel,a.scopeConflicts,h),...await (0,x.hr)(a.markdown,a.factsModel),...cw(a.markdown,a.factsModel),...await cx(a.markdown,a.professionalDepthClassifier),...await (0,z.Fw)(a.chapters),...(0,z.Hl)(a.chapters),...(0,z.iX)({markdown:a.markdown,factsModel:a.factsModel,chapters:a.chapters}),...function(a,b){let c=[];if(!/施工组织设计|施工组织|施组|质量|安全|文明施工/u.test(a))return c;for(let d of cz){let e=cD(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=cA(d[1]||d[0]||"");!cC.test(a)&&a.length>=2&&a.length<=80&&c.push(a)}}return[...new Set(c)]})(a,d.patterns).filter(a=>!cB.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),...function(a,b){let c=[],d=cD(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,z.Av)(a.chapters,a.markdown),...(0,z.CS)(a.chapters,a.markdown),...(0,z.b7)(a.chapters),...cy(a.chapters,h),...function(a,b,c,d){let e={factuality:2*!(0,x.vY)(a,c).some(a=>"error"===a.level),structure:b.length>0&&b.every(b=>a.includes(b.title)&&(0,w.V7)(b.content)>=600)?2:1,depth:0===(0,x.i0)(b,d).length?2:1,executable:0===cy(b,d).length?2:1,evidence:0===cw(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,h),...b,...(0,x.iC)(a.markdown),...await (0,x.BV)(a.markdown),...(0,v.dh)(a.markdown),...(0,x.Ty)(a.chapters),...await (0,x.N1)(a.markdown,a.factsModel,a.chapters),...await (0,x.S2)(a.markdown,a.chapters,a.factsModel),...await cb(a.markdown),...await cn(a.markdown),...(0,ct.QP)((0,ct.JV)(a.markdown,a.factsModel)),...(0,x.yd)(a.markdown,a.factsModel),...function(a){let b=[];return bJ.test(a)&&b.push({level:"warning",message:"正文包含联网增强过程性表述",suggestion:"请删除联网检索、网页资料、搜索结果等过程性话术,改为正式交付语言。"}),b}(a.markdown),...(0,x.bM)(a.markdown),...(0,x.M$)(a.markdown,a.promptBindings),...(0,x.AC)(a.markdown,a.chapters),...(0,x.mR)(a.markdown,a.template),...(0,v.UG)(a.markdown,a.template),...await (0,v.Ed)(a.markdown,a.promptDocumentRules),...await (0,y.cJ)(a.markdown,a.factsModel)]}let cF={project:"项目基础事实",schedule:"工期与节点",quality:"质量目标与验收",safety:"安全文明要求",resources:"资源投入依据",quantities:"清单/图纸/工程量事实",rules:"规范规则与验收要求"};var cG=c(98632);async function cH(a){let b=await (0,cG.tf)({markdown:a.markdown,chapters:a.chapters,template:a.template,factTraces:a.factTraces,issues:a.issues,referenceCompleteBlocks:a.referenceCompleteBlocks,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 (0,cG.BH)(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?["已达到当前质量目标,建议保持事实口径和导出前复核。"]:["按招标评审口径补齐短板维度:章节与强制模块缺失补完整性、项目专属数据补针对性、危大闭环与强制制度补合规性、责任频次闭环句式补可落地性、表格层级与数据一致补规范性、清理空话禁用词与重复句式降雷同。","系统需优先修复阻断问题、扩大本地知识库检索、补抽结构化事实,并将未落位事实写入对应章节。"]}}var cI=c(28103),cJ=c(5726);function cK(a,b){return b<=0?100*(a>0):Math.min(120,a/b*100)}async function cL(a){var b,c;if(!a||a.trim().length<500)return;let d=(0,cI.aF)(a),e=(0,cJ.Ah)(d);if(!e)return;let f=await (0,cI.WT)(a),g=e.profile,h=Math.max(g.arrowChainCoverage,.08),i=[{key:"paramDensity",label:"参数密度",generated:f.paramDensity,reference:g.paramDensity,score:cK(f.paramDensity,.8*g.paramDensity),unit:"perKChars"},{key:"arrowChainCoverage",label:"工序链覆盖率",generated:f.arrowChainCoverage,reference:h,score:cK(f.arrowChainCoverage,h),unit:"percent"},{key:"duplicationRate",label:"段落重复率",generated:f.duplicationRate,reference:g.duplicationRate,score:(b=f.duplicationRate)<=(c=g.duplicationRate)?100:Math.max(0,Math.round(100-(b-c)*400)),unit:"percent"},{key:"tableCount",label:"表格数量",generated:f.tableCount,reference:g.tableCount,score:cK(f.tableCount,.6*g.tableCount),unit:"count"},{key:"sectionCount",label:"章节结构",generated:f.sectionCount,reference:g.sectionCount,score:f.sectionCount>=.4*g.sectionCount?100:cK(f.sectionCount,g.sectionCount),unit:"count"}].map(a=>({...a,score:Math.round(Math.min(120,a.score)),passed:a.score>=80})),j={paramDensity:.3,arrowChainCoverage:.2,duplicationRate:.2,tableCount:.15,sectionCount:.15},k=Math.round(Math.min(100,i.reduce((a,b)=>a+b.score*(j[b.key]||0),0)));return{projectType:d,referenceSourceCount:e.sourceCount,overallScore:k,items:i}}function cM(...a){return a.flat()}var cN=c(87942),cO=c(48161);function cP(a,b){try{ac.appendFileSync(e.join(function(){let a=e.join(cO.homedir(),".customize-agent","cache","document-workflow","case-log");return ac.mkdirSync(a,{recursive:!0}),a}(),a),`${JSON.stringify(b)}
55
55
  `,"utf-8")}catch{}}var cQ=c(28366);let cR=[{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:"award_clause",label:"创优奖惩条款",aliases:["创优奖惩","优质优价","创优目标","奖惩条款","创优奖项"],valueType:"award"}];function cS(a){return/^(见|详见|参见|按|以).{0,30}(招标公告|招标文件|投标人须知|前附表|合同|附件|图纸|清单|约定|规定|执行)/u.test(a)||/见招标公告|见投标人须知前附表|详见|按.*执行/u.test(a)}function cT(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(cS(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(!/支护|放坡|锚|桩|喷|开挖|护坡/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 cU(a,b){let c=ao(a.value),d=[],e=30,f=!1;(!c||c.length>260)&&(f=!0,e-=100,d.push("空值或过长")),/###|投标文件的编制|备选投标方案|投标将被否决|投标人提供|投标有效期|电子交易系统|公共资源交易监督管理部门|中标候选|评标委员会|实质性内容作出响应|招标人有权核查/u.test(c)&&(f=!0,e-=100,d.push("大段条款或 Markdown 噪声")),cR.some(a=>a.key!==b.key&&a.aliases.some(a=>c.includes(a)))&&(e-=45,d.push("包含其他字段名,疑似字段串位")),cS(c)&&(e-=35,d.push("引用型弱值"));let g=cT(c,b);return e+=g.score,d.push(g.reason),g.rejected&&(f=!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:f,reasons:d}}function cV(a){return function(a,b=cR){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 cR.find(c=>c.key===a.fieldId||c.aliases.some(a=>b.includes(a)))}(c);if(!a)continue;let d=(0,A.lG)(c.value);b.push(cU({fieldKey:a.key,label:a.label,value:d,sourceType:"structured_fact",sourceName:c.sourceFile||c.sourceRef?.sectionTitle||"structured_fact"},a))}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=cR.find(a=>a.aliases.some(a=>e.includes(a))||a.label===e);!h||!f||/内容|参数|资料未明确|系统暂未确认|暂未从知识库确认/u.test(f)||c.push(cU({fieldKey:h.key,label:h.label,value:f,sourceType:"generated_markdown",sourceName:g||b},h))}return c}(a.markdown||"")])}function cW(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 cX(a){let b=e.join(process.env.HOME||process.cwd(),".customize-agent","cache","document-workflow",(0,A.c6)(a||"default"));return ac.mkdirSync(b,{recursive:!0}),b}let cY=new Map;function cZ(a){let b=cY.get(a);return b||(b=RegExp(a,"u"),cY.set(a,b)),b}function c$(a,b=(0,cQ.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,A.lG)(c.value),g=function(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}(c.sourceFile,c.roleId);for(let h 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 cZ(j).test(e||"")&&cZ(k).test(i)?"amendment":cZ(l).test(i)?"threshold":cZ(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||""}|${h.scope}|${h.compareKey}`;e.has(a)||(e.add(a),f.push({...h,sourceFile:c.sourceFile,priority:g}))}}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 c_(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 c0(a,b){return b?.length?a.map(a=>{let c=function(a,b){let c=a;for(let{winnerNum:a,losers:d}of c_(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 c1(a,b){let c=c_(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})}var c2=c(32434),c3=c(22213);function c4(a,b){let c=a?.[b];return c&&c.length>0?c[0]:b}function c5(a,b){return 0>=(0,w.V7)(a.content)?"failed":"completed"}let c6=["项目名称 项目编号 招标人 项目概况与招标范围 建设地点 建设规模 计划工期 质量标准 合同估算价","计划工期 合同工期 总工期 日历天","合同估算价 合同估算价格 投资估算 最高投标限价 招标控制价","质量标准 质量目标 合格","建设地点 建设规模 招标范围"];function c7(a){let b=ao(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}async function c8(a){let b=[],c=new Set(a.scopedFilePaths),d=await Promise.all(c6.map(async b=>((0,A.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)&&c7(`${a.sectionTitle||""}
56
56
  ${a.content}`)>0).map(b=>({chapterId:"project-basic",filePath:b.filePath,score:Math.max(b.score,1)+c7(`${b.sectionTitle||""}
@@ -69,12 +69,12 @@ ${g}`:"",h?`【章节/格式提示词】
69
69
  ${h}`:""].filter(Boolean).join("\n\n"),promptDetails:f}}function dC(a){return ao(a).replace(/[\s,,.。::;;||()()《》<>【】"“”'‘’]/gu,"").split("[").join("").split("]").join("").toLowerCase()}function dD(a){return/工程造价|造价|报价|投标报价|报价明细|综合单价|单价|合价|金额|税率|增值税|利润|预留金|暂列金额|最高投标限价|招标控制价|合同估算价|合同估算价格|投资估算|估算价/u.test(a)}function dE(a){let b=da((0,A.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)||dD(b)||b.length>160?"":b}function dF(a,b,c={}){let d=b.filter(a=>{let b=`${a.key||""}${a.fieldName||""}${a.fieldId||""}`,c=(0,A.lG)(a.value);return!(dD(`${b}${c}`)||!dE(c)||/第\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))}),e=new Set,f=[];for(let b of d){let d=dE(b.value);if(!d)continue;let g=b.fieldName||b.key||b.fieldId||"资料事实",h=`${g}:${d}`;if(!e.has(h)&&(e.add(h),!function(a,b){let c=dC(a),d=dC(b);if(!d||d.length<2||c.includes(d))return!0;let e=b.match(/\d+(?:\.\d+)?\s*(?:日历天|天|个月|月|年|万元|元|平方米|㎡|m²|立方米|m³|米|m|mm|cm|台|套|人|项|%|MPa|kPa)?/giu)||[];return e.length>0&&e.some(a=>dC(a).length>=2&&c.includes(dC(a)))}(a,d)&&(f.push({fact:b,label:g,value:d}),c.maxItems&&f.length>=c.maxItems)))break}return f}function dG(a,b,c={}){return dF(a,b,{maxItems:c.maxIssues}).map(a=>({level:"warning",message:`已确认事实未在正文中落位:${a.label}=${a.value}`,suggestion:"请将该事实自然写入对应章节或小节,不得改变原始数值和单位。"}))}function dH(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 dI(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 dJ(a,b){let c=`${b.sectionTitle||""}
70
70
  ${b.filePath}
71
71
  ${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 dK(a){return`${a.sectionTitle||""}${a.content}`.slice(0,600)}function dL(a,b,c,d){let e=b.map(b=>{let d=(0,s.A1)(b,a.requiredFacts)*dI(a,b.processingType)+dJ(a,b),e=c.semantic?c.semantic.similarity(c.semantic.queryText,dK(b)):0;return{...b,score:.5*d+10*e}});return(0,s.QR)(e,c,d)}function dM(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 dN(a){if((0,A.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:dH(b),generationMode:!0});return(0,s.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})}function dO(a,b,c=12){if(0===b.length)return[];let d=b.slice(0,c).map(a=>e.basename(a)),f=b.length>c?` 等 ${b.length} 个文件`:"";return[`${a}:${d.join("、")}${f}`]}function dP(a,b,c){if(Number.isFinite(c)&&c>0)return Math.ceil(c);let d=new Set(b.filter(Boolean)),e=a.listFiles?.().filter(a=>0===d.size||d.has(a.relativePath)).reduce((a,b)=>a+Math.max(0,Math.ceil(Number(b.chunkCount)||0)),0)??0;return e>0?e:Math.max(1,d.size)}let dQ=[{pattern:/本小节围绕.+展开,结合绑定项目资料/u,label:"模板化开篇套话"},{pattern:/明确适用范围、控制目标、责任岗位与过程要求/u,label:"泛化目标罗列"},{pattern:/实施前应完成资料核对、技术交底和作业条件确认/u,label:"泛化前置条件"},{pattern:/交底覆盖率按\s*100%?\s*控制/u,label:"空泛交底承诺"},{pattern:/关键问题在\s*24\s*小时内形成整改责任/u,label:"空泛整改时限"},{pattern:/按施工准备→过程实施→检查验收→问题整改→资料归档的闭环组织/u,label:"通用闭环套话"},{pattern:/按作业条件确认→技术交底→过程实施→自检互检→整改复查/u,label:"通用流程套话"},{pattern:/依据本项目已确认资料中的项目边界/u,label:"资料依据套话"},{pattern:/执行日巡查、周复核和节点验收制度/u,label:"泛化巡查制度"},{pattern:/一般问题\s*7\s*日内闭环/u,label:"泛化整改时限"},{pattern:/由项目经理、技术负责人和专职安全员联合复核/u,label:"岗位名单堆砌"},{pattern:/确保与总体施工部署、工期计划和验收要求保持一致/u,label:"原则性呼应"},{pattern:/结合现场实际情况(?:,|,)?合理(?:组织|安排|布置|配置)/u,label:"结合实际套话"},{pattern:/严格(?:执行|落实|按照)国家(?:现行)?(?:有关)?(?:规范|标准|规程)/u,label:"规范泛引用"},{pattern:/做到(?:文明施工|安全生产|质量第一|安全第一)/u,label:"口号式承诺"},{pattern:/(?:确保|保证)工程(?:质量|安全|进度|文明施工)/u,label:"目标口号"},{pattern:/建立(?:健全)?(?:完善)?(?:的)?(?:管理)?体系(?:和|,)?(?:落实|确保|保证)/u,label:"体系空话"}],dR=RegExp(dQ.map(a=>`(?:${a.pattern.source})`).join("|"),"u"),dS=["本小节围绕以下内容展开并结合绑定项目资料","明确适用范围控制目标责任岗位与过程要求","实施前应完成资料核对技术交底和作业条件确认","交底覆盖率按100%控制","关键问题在24小时内形成整改责任","按施工准备过程实施检查验收问题整改资料归档的闭环组织","依据本项目已确认资料中的项目边界","执行日巡查周复核和节点验收制度","一般问题7日内闭环","由项目经理技术负责人和专职安全员联合复核","确保与总体施工部署工期计划和验收要求保持一致","结合现场实际情况合理组织安排","严格执行国家现行有关规范标准","做到文明施工安全生产质量第一","确保工程质量和安全进度","建立健全管理体系并落实相关制度"],dT=["每道工序完成后由质检员实测实量并记录数据","混凝土浇筑完成后每天洒水养护不少于两次","每周组织不少于一次的现场安全专项检查"];async function dU(a){return(0,T.A)({prototypes:[...dS],negativePrototypes:[...dT],lexicalHints:dR,embedDocuments:a})}let dV=[/主要分部分项工程施工方案/u,/主要施工方法/u,/主要施工内容/u,/施工方案/u],dW=/(?:建筑面积|面积|总建筑面积)[约]?\s*\d+(?:\.\d+)?\s*(?:㎡|m²)|计划工期\s*\d+|日历天|地上\s*\d+\s*层|框架结构|质量标准[::]?\s*合格/giu;function dX(a){let b=a.split("\n"),c=[],d="",e=[];for(let a of b){let b=/^#{3,4}\s+(.+)$/u.exec(a.trim());b?((d||e.length>0)&&c.push({heading:d,body:e.join("\n")}),d=b[1].trim(),e=[]):e.push(a)}return(d||e.length>0)&&c.push({heading:d,body:e.join("\n")}),c}function dY(a){let b=[],c=new Map;for(let b of a)for(let a of dX(b.content)){let d=a.heading||b.title;for(let e of a.body.replace(/^#{1,6}\s+.*$/gmu,"").replace(/^\s*\|.*\|\s*$/gmu,"").replace(/^\s*[-|]\s*$/gmu,"").replace(/^\s*\[.*?\]\(.*?\)\s*$/gmu,"").split(/\n{1,}/u).map(a=>a.trim()).filter(a=>a.length>=60&&a.length<=400&&!/^\s*[-*]\s+/u.test(a))){let a=e.replace(/[,。,.;;::、()()【】[\]《》“”"'`\s]/gu,"");if(a.length<60)continue;let f=c.get(a)||[];f.some(a=>a.chapter===b.title&&a.section===d)||f.push({chapter:b.title,section:d}),c.set(a,f)}}let d=new Set;for(let[a,e]of c){let c=e.filter((a,b,c)=>c.findIndex(b=>b.chapter===a.chapter&&b.section===a.section)===b);if(c.length<2)continue;let f=c.map(a=>`${a.chapter}::${a.section}`).sort().join("|");if(d.has(f))continue;d.add(f);let g=e[0],h=g?`(如:${g.section} 中「${a.slice(0,30)}…」)`:"";if(b.push({level:c.length>=3?"error":"warning",severity:c.length>=3?"blocker":"warning",message:`发现相同段落出现在 ${c.length} 个不同小节:${c.map(a=>a.section).slice(0,6).join("、")}${h}`,suggestion:"每个小节必须针对其标题写专属内容,不得复制粘贴相同段落;重复小节应合并或删除后重写。"}),b.length>=8)break}return b}async function dZ(a,b){let c=[],d=await dU(b);for(let b of a){let a=dX(b.content),e=[];for(let b of a){let a=b.body.split(/[。;;]/u).map(a=>a.trim()).filter(a=>a.length>=12);if(0===a.length)continue;let c=await d(a);a.forEach((a,b)=>{if(c[b])for(let{pattern:b,label:c}of dQ)b.test(a)&&!e.includes(c)&&e.push(c)})}e.length>=3?c.push({level:"error",severity:"blocker",message:`${b.title} 存在大量模板化空话(${e.slice(0,6).join("、")})`,suggestion:'删除"本小节围绕…展开""按100%控制"式套话,按"责任岗位+执行动作+量化标准+检查频次+整改时限"重写。'}):e.length>0&&c.push({level:"warning",severity:"warning",message:`${b.title} 存在模板化空话:${e.join("、")}`,suggestion:"替换为具体量化做法;同一小节不得重复出现套话段落。"})}return c}function d$(a){let b=[];for(let c of a)for(let a of dX(c.content)){if(!dV.some(b=>b.test(a.heading)||b.test(c.title)))continue;let d=new Set(a.body.match(ag.aX)||[]),e=new Set(a.body.match(dW)||[]),f=new Set(a.body.match(ag.LT)||[]),g=a.body.length;if(g<400)continue;let h=d.size/(g/1e3),i=/拆除|清理|清底|清运|弃置|运输|搬运/u.test(a.heading);if(0===d.size){if(f.size>=6){b.push({level:"warning",severity:"warning",message:`${c.title} / ${a.heading} 以设备配置参数为主:设备型号/容量参数 ${f.size} 项,工艺参数待补充`,suggestion:"设备清单型小节保留型号规格参数即可;如补充安装工艺(试验压力、坡度、间距、偏差),应同步写入工艺参数与验收节点。"});continue}if(i){b.push({level:"warning",severity:"warning",message:`${c.title} / ${a.heading} 以工程量与保护措施为主,建议补充拆除深度偏差、保护挑网宽度、警戒距离等参数`,suggestion:"拆除类作业补充拆除厚度偏差(mm)、防护挑网/安全网宽度(m)、警戒区距离(m)等安全与技术参数即可,不强制 mm/MPa 级工艺参数。"});continue}b.push({level:"error",severity:"blocker",message:`${c.title} / ${a.heading} 无工艺参数:全文只有概况性数字,缺乏 mm/MPa/间距/偏差/试验压力等工艺级参数`,suggestion:"必须写入工艺参数(如桩位偏差≤50mm、搭接宽度≥100mm、闭水试验48h),参数来自绑定资料或行业规范值。"})}else h<(i?.3:1.5)&&b.push({level:"warning",severity:"warning",message:`${c.title} / ${a.heading} 工艺参数密度偏低:每千字 ${d.size} 个工艺参数(概况数字 ${e.size} 个)`,suggestion:"增加工艺级参数落位;概况数字(面积、工期、层数)不能替代工艺参数。"})}return b}function d_(a){let b=[];for(let c of a)for(let a of dX(c.content)){if(!/主要分部分项工程施工方案|主要施工方法/u.test(a.heading))continue;let d=a.body.split(/^####\s+/gmu).slice(1).map(a=>a.trim()).filter(Boolean);if(0===d.length)continue;let e=d.filter(a=>{let b=/(?:施工)?(?:概况|范围)[::]\s*\S/u.test(a)||/工程量|范围/u.test(a),c=/(?:施工)?(?:流程|工序|顺序)[::]\s*\S/u.test(a)||/→/u.test(a),d=/(?:施工)?方法[::]\s*\S/u.test(a);return!b||!c||!d});e.length>0&&b.push({level:"warning",severity:"warning",message:`${c.title} / ${a.heading} 有 ${e.length}/${d.length} 个分部分项未按"概况/流程/方法"三段式展开`,suggestion:'参照"项目主要施工内容"工作包写法:概况=对象+工程量,流程=→工序链,方法=工艺参数+检测验收。'})}return b}async function d0(a,b="",c){return[...dY(a),...await dZ(a,c),...d$(a),...d_(a),...function(a,b=""){let c=[],d=(b||a.map(a=>a.content).join("\n\n")).split("\n"),e=0,f=0;for(;f<d.length;){let a=d[f].trim();if(!/^\|.+\|$/u.test(a)){f+=1;continue}let b=[];for(;f<d.length&&/^\|.+\|$/u.test(d[f].trim());)b.push(d[f].trim()),f+=1;if(b.length<3)continue;e+=1;let g=b[0].split("|").length-2,h=b.filter((a,b)=>0!==b&&a.replace(/\|/gu,"").replace(/[\s\-:]/gu,"").length>0),i=h.reduce((a,b)=>a+b.split("|").slice(1,-1).map(a=>a.trim()).filter(a=>""===a||"-"===a||"—"===a||"/"===a).length,0),j=h.length*Math.max(1,g);if(i>0&&i/Math.max(1,j)>=.4&&c.push({level:"warning",severity:"warning",message:`第 ${e} 个表格存在 ${i} 个空单元格(${h.length} 行),表格信息不完整`,suggestion:"表格每一列都必须填写,缺失字段应从资料补齐;无法确认的字段应删除该行而非留空。"}),c.length>=5)break}return c}(a,b)]}var d1=c(52922);function d2(a){return Math.max(0,Math.min(100,Math.round(a)))}async function d3(a){let b=await dZ(a),c=a.reduce((a,b)=>a+(b.content.match(/本小节围绕|交底覆盖率按100%|24小时内形成整改责任|按施工准备→过程实施→检查验收→问题整改→资料归档的闭环组织|按作业条件确认→技术交底→过程实施|依据本项目已确认资料中的项目边界/gu)||[]).length,0),d=await (0,d1.Bt)(a.map(a=>a.content).join("\n")),e=400*Math.max(0,d.ratio-.1);return{score:d2(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 d4(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=d2(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(ag.s2)||[]),d=new Set(b.match(/工程量|材料|设备|范围|流程|验收|检测|复试|调试|隐蔽|检验批|资料|记录|系统|部位|接口|规格|标准/gu)||[]),e=Math.max(1,b.length),f=c.size/(e/1e3);return{score:d2(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(ag.aX)||[]),d=Math.max(1,b.length),e=c.size/(d/1e3);return{score:d2(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=>a.trim()).filter(a=>""===a||"-"===a||"—"===a||"/"===a).length,0)&&(e+=1))}return{score:0===d?40:d2(e/d*100),detail:`表格 ${d} 个,其中字段完整 ${e} 个`}}(a,b),h=await d3(a),i=function(a){let b=dY(a);return{score:d2(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:d2(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=d2(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=[...dY(a),...await dZ(a),...d$(a),...d_(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 d5(a){var b;if(!("heavy"===(b=a.templating).level||b.vagueHitCount>0||b.difficultyHeavyTemplated))return{issues:[],reviewed:!1};let c=(0,d1.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("、")}`:""}`,`待复核正文(节选):
72
- ${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,ad.bb)('你是招标技术标评审专家。对施工组织设计做语义级复核,只报告确定性规则覆盖不到的语义问题。\n复核维度(按《施工组织设计全维度校验提示词》判定标尺):\n1. 重难点三级判定:识别精准性(是否点明本项目真实难点而非泛泛而谈)→ 归因合理性(是否说明难点成因/风险来源)→ 对策匹配度(对策是否针对该难点的成因,而非通用措施堆砌);\n2. 术语等效性:同一对象是否前后术语一致(如"砼"与"混凝土"混用需统一),是否出现词面不同但概念等效的双重标准表述;\n3. 四新技术升级价值:若正文声称采用四新技术,其价值表述是否停留在"提升效率"式套话,缺少可对标官方推广目录或替代落后工艺的实质说明。\n每条问题必须包含:问题所在内容简述+判定依据(对应上面哪条维度)+一句话改进建议。\n只报告真实存在的问题,正文无问题时返回空数组;不得编造问题。只返回 JSON。',d.join("\n\n"),{maxTokens:1200,temperature:.1,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}}}let d6={合规红线:"【合规红线定向修复】",内容质量:"【内容质量定向修复】",数据逻辑:"【数据逻辑一致性定向修复】",内容完整:"【内容完整性定向补写】",本地适配:"【属地适配定向修复】",模板化:"【模板化定向改写】",围串标残留:"【跨项目残留定向清理】"},d7={合规红线:"该章节正文存在触发废标或硬扣分的合规红线问题。请以局部 patch 方式修复:对照住建部37号令与招标文件实质性条款,将违规/缺失表述改为合规表述(如补写危大分级与审批流程、专家论证安排、实质响应内容),引用现行有效规范编号;不得删除其他合规内容。",内容质量:"该章节正文存在影响得分档位的内容质量问题。请以局部 patch 方式修复:将套话句改写为绑定本项目对象、动作、量化指标与验收闭环的具体表述(每句至少含一个本项目事实或工程对象);术语与清单特征对齐;措施按「具体动作+量化指标+验收标准」格式落地;评分项核心内容前移至小节开头。不得改动事实数据。",数据逻辑:"该章节正文存在前后矛盾或不可量化的数据逻辑问题。请以局部 patch 方式修复:以绑定资料(图纸/工程量清单/规范)为准统一唯一口径,删除矛盾数值;无法反查的数字改为定性表述,禁止编造;控制指标全部改写为可量化、可核查的表述。",内容完整:"该章节正文缺少评分点对应内容或关键要素不完整。请以局部 patch 方式补写缺失内容:内容必须绑定本项目事实与清单特征,按「具体动作+量化指标+验收标准」格式撰写,符合正文已有风格;不新增小节标题、不改动其他内容。",本地适配:"该章节正文缺少属地适配项。请以局部 patch 方式补写:属地创优目标(奖项名称以招标文件要求原文为准)、项目所在地气候专项措施、智慧工地对接项目所在地监管平台、危大属地管控要求等按缺陷描述逐项补齐,与项目实际规模相符,不得编造已获奖项或虚构平台名称。",模板化:"该章节正文被判定为模板化内容(通用表述占比超标/工艺与清单不匹配/通用句式残留)。请以局部 patch 方式改写:将通用表述替换为绑定本项目专属参数(部位、深度、高度、工程量、清单分项)的具体表述;删除“一般来说、通常情况下、按照规范施工”类通用句式;工艺名称逐字对齐清单项目特征。保持段落结构不变。",围串标残留:"该章节正文存在跨项目内容残留(其他项目名称/其他标段参数/其他城市地名/旧模板遗留)。请以局部 patch 方式清理:删除残留内容并改写为绑定本项目的对应表述;如残留内容无本项目对应物,直接删除相关句子。"},d8=[{field:"劳动力高峰人数",pattern:/(?:劳动力|用工)(?:高峰期|高峰|峰值)?[^。;\n\d]{0,18}(\d+(?:\.\d+)?)\s*人/gu},{field:"装配率",pattern:/(?:装配率|预制率)[^。;\n\d%]{0,12}(\d+(?:\.\d+)?)\s*%/gu},{field:"装配率",pattern:/(\d+(?:\.\d+)?)\s*%[^。;\n]{0,6}(?:装配率|预制率)/gu},{field:"支护形式",pattern:/(放坡|喷锚|土钉墙|灌注桩|排桩|地下连续墙|SMW工法桩|钢板桩|复合土钉墙)/gu,contextRequired:/支护|围护|基坑/u},{field:"总工期",pattern:/(?:总工期|计划工期|工期)[^。;\n\d]{0,10}(\d+)\s*(?:个)?(?:日历天|天)/gu},{field:"总建筑面积",pattern:/(?:总建筑面积|单体建筑面积|建筑面积)[^。;\n\d]{0,10}(\d+(?:\.\d+)?)\s*(?:㎡|平方米|m2|m²)/gu},{field:"质量标准",pattern:/质量(?:目标|标准)[^。;\n]{0,14}(合格|优良|省优|国优|市优|[\u4e00-\u9fa5]{2,6}(?:杯|奖))/gu,normalize:a=>a.replace(/^(?:确保|争创|争取|力争|获得|达到|争获|创建|力创|评为|荣获)/u,"")}],d9={否决级:0,高风险:1,中风险:2,低风险:3},ea={type:"object",required:["issues"],properties:{issues:{type:"array",required:!0,maxItems:12,items:{type:"object",required:!0,properties:{dimension:{type:"string",required:!0},location:{type:"string",required:!0},quote:{type:"string",required:!0,minLength:4},riskLevel:{type:"string",required:!0},basis:{type:"string",required:!0},description:{type:"string",required:!0}}}},templatingLevel:{type:"string"}}};function eb(a,b){let c=[],d=[],e=0;for(let f of a){let a=(0,w.V7)(f.content);d.length>0&&e+a>b&&(c.push(d),d=[],e=0),d.push(f),e+=a}return d.length>0&&c.push(d),c}function ec(a,b=9e3,c=7){let d=[];for(let c of a)d.push(...function(a,b){let c=a.content||"";if((0,w.V7)(c)<=b)return[a];let d=c.split(/\n(?=#{2,4}\s+\S)/u).filter(a=>a.trim().length>0),e=[];for(let a of d){if((0,w.V7)(a)<=b){e.push(a);continue}let c=a.split(/\n\n+/u).filter(a=>a.trim().length>0),d="";for(let a of c)d&&(0,w.V7)(d)+(0,w.V7)(a)>b?(e.push(d),d=a):d=d?`${d}
72
+ ${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,ad.bb)((0,v.y4)('你是招标技术标评审专家。对施工组织设计做语义级复核,只报告确定性规则覆盖不到的语义问题。\n复核维度(按《施工组织设计全维度校验提示词》判定标尺):\n1. 重难点三级判定:识别精准性(是否点明本项目真实难点而非泛泛而谈)→ 归因合理性(是否说明难点成因/风险来源)→ 对策匹配度(对策是否针对该难点的成因,而非通用措施堆砌);\n2. 术语等效性:同一对象是否前后术语一致(如"砼"与"混凝土"混用需统一),是否出现词面不同但概念等效的双重标准表述;\n3. 四新技术升级价值:若正文声称采用四新技术,其价值表述是否停留在"提升效率"式套话,缺少可对标官方推广目录或替代落后工艺的实质说明。\n每条问题必须包含:问题所在内容简述+判定依据(对应上面哪条维度)+一句话改进建议。\n只报告真实存在的问题,正文无问题时返回空数组;不得编造问题。只返回 JSON。'),d.join("\n\n"),{maxTokens:1200,temperature:.1,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}}}let d6={合规红线:"【合规红线定向修复】",内容质量:"【内容质量定向修复】",数据逻辑:"【数据逻辑一致性定向修复】",内容完整:"【内容完整性定向补写】",本地适配:"【属地适配定向修复】",模板化:"【模板化定向改写】",围串标残留:"【跨项目残留定向清理】"},d7={合规红线:"该章节正文存在触发废标或硬扣分的合规红线问题。请以局部 patch 方式修复:对照住建部37号令与招标文件实质性条款,将违规/缺失表述改为合规表述(如补写危大分级与审批流程、专家论证安排、实质响应内容),引用现行有效规范编号;不得删除其他合规内容。",内容质量:"该章节正文存在影响得分档位的内容质量问题。请以局部 patch 方式修复:将套话句改写为绑定本项目对象、动作、量化指标与验收闭环的具体表述(每句至少含一个本项目事实或工程对象);术语与清单特征对齐;措施按「具体动作+量化指标+验收标准」格式落地;评分项核心内容前移至小节开头。不得改动事实数据。",数据逻辑:"该章节正文存在前后矛盾或不可量化的数据逻辑问题。请以局部 patch 方式修复:以绑定资料(图纸/工程量清单/规范)为准统一唯一口径,删除矛盾数值;无法反查的数字改为定性表述,禁止编造;控制指标全部改写为可量化、可核查的表述。",内容完整:"该章节正文缺少评分点对应内容或关键要素不完整。请以局部 patch 方式补写缺失内容:内容必须绑定本项目事实与清单特征,按「具体动作+量化指标+验收标准」格式撰写,符合正文已有风格;不新增小节标题、不改动其他内容。",本地适配:"该章节正文缺少属地适配项。请以局部 patch 方式补写:属地创优目标(奖项名称以招标文件要求原文为准)、项目所在地气候专项措施、智慧工地对接项目所在地监管平台、危大属地管控要求等按缺陷描述逐项补齐,与项目实际规模相符,不得编造已获奖项或虚构平台名称。",模板化:"该章节正文被判定为模板化内容(通用表述占比超标/工艺与清单不匹配/通用句式残留)。请以局部 patch 方式改写:将通用表述替换为绑定本项目专属参数(部位、深度、高度、工程量、清单分项)的具体表述;删除“一般来说、通常情况下、按照规范施工”类通用句式;工艺名称逐字对齐清单项目特征。保持段落结构不变。",围串标残留:"该章节正文存在跨项目内容残留(其他项目名称/其他标段参数/其他城市地名/旧模板遗留)。请以局部 patch 方式清理:删除残留内容并改写为绑定本项目的对应表述;如残留内容无本项目对应物,直接删除相关句子。"},d8=[{field:"劳动力高峰人数",pattern:/(?:劳动力|用工)(?:高峰期|高峰|峰值)?[^。;\n\d]{0,18}(\d+(?:\.\d+)?)\s*人/gu},{field:"装配率",pattern:/(?:装配率|预制率)[^。;\n\d%]{0,12}(\d+(?:\.\d+)?)\s*%/gu},{field:"装配率",pattern:/(\d+(?:\.\d+)?)\s*%[^。;\n]{0,6}(?:装配率|预制率)/gu},{field:"支护形式",pattern:/(放坡|喷锚|土钉墙|灌注桩|排桩|地下连续墙|SMW工法桩|钢板桩|复合土钉墙)/gu,contextRequired:/支护|围护|基坑/u},{field:"总工期",pattern:/(?:总工期|计划工期|工期)[^。;\n\d]{0,10}(\d+)\s*(?:个)?(?:日历天|天)/gu},{field:"总建筑面积",pattern:/(?:总建筑面积|单体建筑面积|建筑面积)[^。;\n\d]{0,10}(\d+(?:\.\d+)?)\s*(?:㎡|平方米|m2|m²)/gu},{field:"质量标准",pattern:/质量(?:目标|标准)[^。;\n]{0,14}(合格|优良|省优|国优|市优|[\u4e00-\u9fa5]{2,6}(?:杯|奖))/gu,normalize:a=>a.replace(/^(?:确保|争创|争取|力争|获得|达到|争获|创建|力创|评为|荣获)/u,"")}],d9={否决级:0,高风险:1,中风险:2,低风险:3},ea={type:"object",required:["issues"],properties:{issues:{type:"array",required:!0,maxItems:12,items:{type:"object",required:!0,properties:{dimension:{type:"string",required:!0},location:{type:"string",required:!0},quote:{type:"string",required:!0,minLength:4},riskLevel:{type:"string",required:!0},basis:{type:"string",required:!0},description:{type:"string",required:!0}}}},templatingLevel:{type:"string"}}};function eb(a,b){let c=[],d=[],e=0;for(let f of a){let a=(0,w.V7)(f.content);d.length>0&&e+a>b&&(c.push(d),d=[],e=0),d.push(f),e+=a}return d.length>0&&c.push(d),c}function ec(a,b=9e3,c=7){let d=[];for(let c of a)d.push(...function(a,b){let c=a.content||"";if((0,w.V7)(c)<=b)return[a];let d=c.split(/\n(?=#{2,4}\s+\S)/u).filter(a=>a.trim().length>0),e=[];for(let a of d){if((0,w.V7)(a)<=b){e.push(a);continue}let c=a.split(/\n\n+/u).filter(a=>a.trim().length>0),d="";for(let a of c)d&&(0,w.V7)(d)+(0,w.V7)(a)>b?(e.push(d),d=a):d=d?`${d}
73
73
 
74
74
  ${a}`:a;d&&e.push(d)}let f=[],g="";for(let a of e)g&&(0,w.V7)(g)+(0,w.V7)(a)>b?(f.push(g),g=a):g=g?`${g}
75
75
 
76
76
  ${a}`:a;return(g&&f.push(g),f.length<=1)?[a]:f.map((b,c)=>({...a,title:`${a.title}(分段 ${c+1}/${f.length})`,content:b}))}(c,b));let e=eb(d,b);if(e.length>c){let a=d.reduce((a,b)=>a+(0,w.V7)(b.content),0),f=Math.max(b,Math.ceil(a/Math.max(1,c)));for(;e.length>c&&f<a;)e=eb(d,f=Math.min(a,Math.ceil(1.3*f)+1))}return e}function ed(a){return"否决级"===a||"高风险"===a||"低风险"===a?a:"中风险"}function ee(a){let b=new Set;return a.filter(a=>{let c=`${a.dimension}|${(a.quote||"").replace(/\s+/gu,"").slice(0,24)}`;return!b.has(c)&&(b.add(c),!0)})}async function ef(a,b,c,d){let e=a.map(a=>`### ${a.title}
77
- ${a.content}`).join("\n\n"),f=await (0,ad.bb)("你是对标合肥青天大模型的施工组织设计全维度专职校验专员,精通青天大模型全维度评审逻辑、扣分规则与模板化降档机制。\n仅对标书做客观合规校验与问题定位,不润色、不创作、不补充方案内容;所有判定均要有明确依据与原文佐证,不得主观臆断;只输出结构化问题清单 JSON。\n\n【对标依据(唯一校验标准,不得自行增减规则)】\n1. 国家规范:《危险性较大的分部分项工程安全管理规定》(住建部令第37号)及安徽省实施细则\n2. 本地规则:安徽省建筑施工扬尘治理六个百分百标准、安徽省危大工程管控细则、智慧工地监管要求\n3. 评审逻辑:青天大模型九大评审维度(形式格式、内容完整、合规红线、内容质量、数据逻辑、原创围串标、本地适配、语义匹配、模板化判定)\n4. 模板化判定规则:空话套话密集、无项目专属参数、工艺不匹配清单、跨项目内容残留、多模板拼接断裂,均判定为模板化内容,按严重程度触发扣分、整体降档;判定阈值:重度(通用表述占比≥40%)、中度(20%-40%)、轻度(<20%)\n5. 项目专属:招标文件实质性要求、评标办法评分细则、工程量清单项目特征、施工图纸核心参数\n\n【本评审轮维度范围(Markdown 正文层可判定维度)】\n一、内容完整性:评分点全覆盖——招标评分办法列出的打分点(如工期保证措施、质量通病防治)必须在正文找到对应章节或段落,不得遗漏;工程概况、施工部署、总平面布置、进度计划、主要施工方法、资源配置、质量保证、安全生产、文明环保、危大专项、应急预案、重难点、季节性施工等要素完整。\n二、合规红线(硬红线,可触发否决):\n 1. 实质性条款全响应:★号废标条款、实质性要求均有具体响应内容,不只用“满足、符合”\n 2. 危大工程识别准确:对照住建部37号令目录,无漏判、错判;超危大工程明确标注等级\n 3. 危大管理流程合规:一般危大明确“施工单位技术负责人+总监理工程师”审批;超危大明确专家论证安排\n 4. 强制性条文合规:所有施工工艺、安全措施符合国家规范强条,无违规表述\n 5. 规范依据有效:引用的规范、图集、标准均为现行有效版本,编号与名称准确\n 6. 工期质量目标合规:工期、质量、安全目标完全响应招标文件,无偏离\n三、内容质量(语义匹配,决定得分档位):\n 1. 核心章节无空话套话:施工方法、危大工程、质量安全等核心章节无无实质动作的套话表述\n 2. 专业术语全程统一:全文术语与招标文件、工程量清单原文一致,无近义词替换、自行简化\n 3. 工艺匹配项目实际:施工工艺对应清单项目特征,贴合本项目场景,非通用模板堆砌\n 4. 措施具象可落地:所有管理措施均为「具体动作+量化指标+验收标准」格式,可执行可核查\n 5. 重难点针对性强(三级判定):识别精准性(是否命中本项目专属重难点,有无遗漏或误判);归因合理性(对成因、风险来源做具体归因,非仅复述现象);对策匹配度(针对[具体原因]→采取[具体工艺/技术手段]→达到[量化控制目标]的闭环,模板化对策如“加强监测、严格按规范施工”判定为无效对策)\n 6. 得分点前置:每个评分项核心内容放在章节开头显眼位置,不藏于段落深处\n四、数据与逻辑(交叉校验,隐形扣分):\n 1. 核心数据全文一致:工期、工程量、人员数量、设备型号、质量目标等核心数据前后统一,无矛盾\n 2. 工艺参数合规:施工工艺参数、安全质量指标符合国家规范与地方标准,与清单项目特征完全匹配\n 3. 资源配置合理:人员、设备数量匹配项目规模与工期,无明显夸大或不足\n 4. 进度逻辑自洽:工序先后顺序符合施工常理,关键线路清晰,节点工期匹配总工期\n 5. 指标全部可量化:质量、安全、进度控制指标可量化、可核查,主要分项工程有对应量化工艺指标\n五、原创与围串标(雷达检测,一票否决):无同错同漏(无模板化错别字、错误数据);跨项目内容零残留(无其他项目名称、其他标段参数、其他城市地名、旧模板遗留内容);内容拼接逻辑一致(无语义跳跃、多模板碎片拼接痕迹)。\n六、属地适配(安徽省专属加分项):\n 1. 扬尘治理六个百分百:完整覆盖六项要求(工地周边100%围挡、物料堆放100%覆盖、出入车辆100%冲洗、施工现场地面100%硬化、拆迁工地100%湿法作业、渣土车辆100%密闭运输)\n 2. 属地创优目标:明确招标文件要求的省市级奖项(奖项名称以招标文件原文为准)及配套管控措施\n 3. 季节性施工适配:结合项目所在地(安徽省)梅雨、高温、冬季气候特点制定专项措施,非通用模板\n 4. 智慧工地属地对接:人员实名制、塔机监控、扬尘监测等系统对接项目所在地监管平台\n 5. 危大属地管控要求:深基坑第三方监测、沟槽验收挂牌、起重机械平台联网等要求落地\n七、模板化套用专项(核心降档判定):\n 1. 项目专属信息绑定率:核心得分章节中绑定本项目专属参数(部位、深度、高度、工程量、清单分项)的句子占比≥80%\n 2. 通用模板句式零残留:无“一般来说、通常情况下、常规施工、按照规范施工”等通用模板固定句式\n 3. 工艺清单匹配度:核心施工工艺对应本项目清单分项,无大量清单外的通用工艺堆砌\n 4. 套话密度达标:核心章节空话套话占比≤10%,无大面积集中套话(量化判定)\n\n【风险等级判定标准】\n- 否决级:直接触发废标、投标无效的问题\n- 高风险:单一项扣分≥3分,或触发整体降档、重度模板化\n- 中风险:单一项扣分1-2分,中度模板化\n- 低风险:不直接扣分,影响整体观感的优化项\n\n【输出铁律】\n1. 每条问题必须附带章节位置与原文片段(直接引用正文原句),不得只给结论不给依据\n2. 每条问题必须标注所属维度、风险等级、对标依据\n3. 模板化判定必须有量化数据支撑,不得主观定性\n4. 只输出问题清单 JSON,不输出修改建议、不补充方案内容\n5. 本块内未发现问题的维度不得强行编造问题;不确定的不报\n6. 招标对标材料中已明确的数字事实与硬性要求(工程规模、工期、质量目标、创优要求、绿色等级、智慧工地等级、装配率、危大工程参数等),必须逐项核对正文表述是否一致:不一致、矛盾、缺失响应的必须报出;正文出现的合规数值(高温停工阈值、危大判定线、专家论证程序等)必须与国家规范与对标材料核对,错误必报",function(a){let b=a.tenderContext?`【招标对标材料(核对基准,不得偏离)】
77
+ ${a.content}`).join("\n\n"),f=await (0,ad.bb)((0,v.y4)("你是对标合肥青天大模型的施工组织设计全维度专职校验专员,精通青天大模型全维度评审逻辑、扣分规则与模板化降档机制。\n仅对标书做客观合规校验与问题定位,不润色、不创作、不补充方案内容;所有判定均要有明确依据与原文佐证,不得主观臆断;只输出结构化问题清单 JSON。\n\n【对标依据(唯一校验标准,不得自行增减规则)】\n1. 国家规范:《危险性较大的分部分项工程安全管理规定》(住建部令第37号)及安徽省实施细则\n2. 本地规则:安徽省建筑施工扬尘治理六个百分百标准、安徽省危大工程管控细则、智慧工地监管要求\n3. 评审逻辑:青天大模型九大评审维度(形式格式、内容完整、合规红线、内容质量、数据逻辑、原创围串标、本地适配、语义匹配、模板化判定)\n4. 模板化判定规则:空话套话密集、无项目专属参数、工艺不匹配清单、跨项目内容残留、多模板拼接断裂,均判定为模板化内容,按严重程度触发扣分、整体降档;判定阈值:重度(通用表述占比≥40%)、中度(20%-40%)、轻度(<20%)\n5. 项目专属:招标文件实质性要求、评标办法评分细则、工程量清单项目特征、施工图纸核心参数\n\n【本评审轮维度范围(Markdown 正文层可判定维度)】\n一、内容完整性:评分点全覆盖——招标评分办法列出的打分点(如工期保证措施、质量通病防治)必须在正文找到对应章节或段落,不得遗漏;工程概况、施工部署、总平面布置、进度计划、主要施工方法、资源配置、质量保证、安全生产、文明环保、危大专项、应急预案、重难点、季节性施工等要素完整。\n二、合规红线(硬红线,可触发否决):\n 1. 实质性条款全响应:★号废标条款、实质性要求均有具体响应内容,不只用“满足、符合”\n 2. 危大工程识别准确:对照住建部37号令目录,无漏判、错判;超危大工程明确标注等级\n 3. 危大管理流程合规:一般危大明确“施工单位技术负责人+总监理工程师”审批;超危大明确专家论证安排\n 4. 强制性条文合规:所有施工工艺、安全措施符合国家规范强条,无违规表述\n 5. 规范依据有效:引用的规范、图集、标准均为现行有效版本,编号与名称准确\n 6. 工期质量目标合规:工期、质量、安全目标完全响应招标文件,无偏离\n三、内容质量(语义匹配,决定得分档位):\n 1. 核心章节无空话套话:施工方法、危大工程、质量安全等核心章节无无实质动作的套话表述\n 2. 专业术语全程统一:全文术语与招标文件、工程量清单原文一致,无近义词替换、自行简化\n 3. 工艺匹配项目实际:施工工艺对应清单项目特征,贴合本项目场景,非通用模板堆砌\n 4. 措施具象可落地:所有管理措施均为「具体动作+量化指标+验收标准」格式,可执行可核查\n 5. 重难点针对性强(三级判定):识别精准性(是否命中本项目专属重难点,有无遗漏或误判);归因合理性(对成因、风险来源做具体归因,非仅复述现象);对策匹配度(针对[具体原因]→采取[具体工艺/技术手段]→达到[量化控制目标]的闭环,模板化对策如“加强监测、严格按规范施工”判定为无效对策)\n 6. 得分点前置:每个评分项核心内容放在章节开头显眼位置,不藏于段落深处\n四、数据与逻辑(交叉校验,隐形扣分):\n 1. 核心数据全文一致:工期、工程量、人员数量、设备型号、质量目标等核心数据前后统一,无矛盾\n 2. 工艺参数合规:施工工艺参数、安全质量指标符合国家规范与地方标准,与清单项目特征完全匹配\n 3. 资源配置合理:人员、设备数量匹配项目规模与工期,无明显夸大或不足\n 4. 进度逻辑自洽:工序先后顺序符合施工常理,关键线路清晰,节点工期匹配总工期\n 5. 指标全部可量化:质量、安全、进度控制指标可量化、可核查,主要分项工程有对应量化工艺指标\n五、原创与围串标(雷达检测,一票否决):无同错同漏(无模板化错别字、错误数据);跨项目内容零残留(无其他项目名称、其他标段参数、其他城市地名、旧模板遗留内容);内容拼接逻辑一致(无语义跳跃、多模板碎片拼接痕迹)。\n六、属地适配(安徽省专属加分项):\n 1. 扬尘治理六个百分百:完整覆盖六项要求(工地周边100%围挡、物料堆放100%覆盖、出入车辆100%冲洗、施工现场地面100%硬化、拆迁工地100%湿法作业、渣土车辆100%密闭运输)\n 2. 属地创优目标:明确招标文件要求的省市级奖项(奖项名称以招标文件原文为准)及配套管控措施\n 3. 季节性施工适配:结合项目所在地(安徽省)梅雨、高温、冬季气候特点制定专项措施,非通用模板\n 4. 智慧工地属地对接:人员实名制、塔机监控、扬尘监测等系统对接项目所在地监管平台\n 5. 危大属地管控要求:深基坑第三方监测、沟槽验收挂牌、起重机械平台联网等要求落地\n七、模板化套用专项(核心降档判定):\n 1. 项目专属信息绑定率:核心得分章节中绑定本项目专属参数(部位、深度、高度、工程量、清单分项)的句子占比≥80%\n 2. 通用模板句式零残留:无“一般来说、通常情况下、常规施工、按照规范施工”等通用模板固定句式\n 3. 工艺清单匹配度:核心施工工艺对应本项目清单分项,无大量清单外的通用工艺堆砌\n 4. 套话密度达标:核心章节空话套话占比≤10%,无大面积集中套话(量化判定)\n\n【风险等级判定标准】\n- 否决级:直接触发废标、投标无效的问题\n- 高风险:单一项扣分≥3分,或触发整体降档、重度模板化\n- 中风险:单一项扣分1-2分,中度模板化\n- 低风险:不直接扣分,影响整体观感的优化项\n\n【输出铁律】\n1. 每条问题必须附带章节位置与原文片段(直接引用正文原句),不得只给结论不给依据\n2. 每条问题必须标注所属维度、风险等级、对标依据\n3. 模板化判定必须有量化数据支撑,不得主观定性\n4. 只输出问题清单 JSON,不输出修改建议、不补充方案内容\n5. 本块内未发现问题的维度不得强行编造问题;不确定的不报\n6. 招标对标材料中已明确的数字事实与硬性要求(工程规模、工期、质量目标、创优要求、绿色等级、智慧工地等级、装配率、危大工程参数等),必须逐项核对正文表述是否一致:不一致、矛盾、缺失响应的必须报出;正文出现的合规数值(高温停工阈值、危大判定线、专家论证程序等)必须与国家规范与对标材料核对,错误必报"),function(a){let b=a.tenderContext?`【招标对标材料(核对基准,不得偏离)】
78
78
  ${a.tenderContext}`:a.requirement?`招标文件要求摘要:${a.requirement}`:"",c=a.knownConflictLines?`【确定性跨章数据一致性预扫描(系统预检出的全文疑似矛盾清单,补足分块评审盲区)】
79
79
  ${a.knownConflictLines}
80
80
  以上为确定性扫描的疑似矛盾:逐项核对正文,确认为真实矛盾(同一口径多值/体系并存)必须按数据逻辑维度报出并给出正确定位;确认口径合法(不同对象/组合表述/非关键字段)的不报。`:"";return[`评审对象:${a.projectName} 施工组织设计正文(分块评审第 ${a.blockIndex}/${a.blockTotal} 块)`,`本块章节:${a.chapterTitles.join("、")}`,b,c,"","请按系统提示词中的校验标准逐维度评审以下正文块,输出本块全部检出问题:","","<正文块>",a.blockContent,"</正文块>","",'JSON 结构:{"issues":[{"dimension":"维度名(合规红线/内容质量/数据逻辑/内容完整/本地适配/模板化/围串标残留)","location":"问题所在章节标题","quote":"问题原文片段(正文原句,20-80字)","riskLevel":"否决级/高风险/中风险/低风险","basis":"对标依据(规范或维度条款)","description":"问题描述(含量化依据)"}],"templatingLevel":"重度/中度/轻度/无"}'].filter(Boolean).join("\n")}({...b,chapterTitles:a.map(a=>a.title),blockContent:e}),{maxTokens:1800,temperature:.1,signal:d,diagnostics:c,schema:ea,taskKind:"structuredGeneration",disableThinkingBoost:!0});if(f)return{issues:(f.issues||[]).map(a=>({...a,location:function(a,b){let c=(a||"").trim();return c?b.some(a=>a===c||a.includes(c)||c.includes(a))?c:`待核(原定位:${c.slice(0,40)})`:c}(a.location,b.headings),riskLevel:ed(a.riskLevel)})),templatingLevel:f.templatingLevel}}async function eg(a){var b;let{template:c,chapters:d,effectiveChapters:e,requirement:f,projectName:g,tenderContext:h,resolvedBlockerSignatures:i,diagnostics:j,signal:k,heartbeat:l,onStage:m}=a,n=a=>l?l(a):a(),o={reviewed:!1,reviewCalls:0,repairCalls:0,reReviewCalls:0,issuesFound:0,fixedCount:0,remainingIssues:[],templatingLevels:[],repairedChapters:[]},p=ec(d);if(0===p.length)return o;let q=0===(b=function(a){let b=new Map;for(let c of a){let a=c.content||"";if(a)for(let d of d8)for(let e of a.matchAll(d.pattern)){let f=(e[1]||"").replace(/\s+/gu,"");if(!f)continue;let g=a.slice(Math.max(0,(e.index||0)-12),(e.index||0)+26).replace(/\s+/gu," ").trim();if(d.contextRequired&&!d.contextRequired.test(g))continue;let h=d.normalize?d.normalize(f):f;if(!h)continue;let i=b.get(d.field)||[];i.push({value:h,chapter:c.title,snippet:g}),b.set(d.field,i)}}let c=[];for(let[a,d]of b){let b=new Set(d.map(a=>a.value)),e=new Set(d.map(a=>a.chapter));b.size>=2&&e.size>=2&&c.push({field:a,occurrences:d})}return c}(d)).length?"":b.map(a=>{let b=[...new Set(a.occurrences.map(a=>a.value))].join(" ↔ "),c=a.occurrences.slice(0,4).map(a=>`${a.chapter}:“${a.snippet}”`).join(";");return`- ${a.field}:${b}(${c})`}).join("\n"),r=function(a){let b=[];for(let c of a)for(let a of(b.push(c.title),(c.content||"").split("\n"))){let c=/^#{2,4}\s+(.+)$/u.exec(a.trim());c&&b.push(c[1].trim())}return b}(d),s=process.env.DOCUMENT_QINGTIAN_PATCH_GUARD||"observe",t="0"===s?void 0:{observeOnly:"enforce"!==s,diagnostics:j},u=process.env.DOCUMENT_CROSS_SYSTEM_DEDUPE||"observe",v=a=>{if("0"===u||!i||0===i.size)return!1;let b=(0,bn.AO)(a.quote);for(let a of i)if(a.endsWith(`\u0000${b}`))return!0;return!1},w=[],x=[];for(let a=0;a<p.length;a+=1){let b=p[a];m?.({status:"running",message:`全维度评审:第 ${a+1}/${p.length} 块(${b.map(a=>a.title).join("、")})`,details:[]});let c=await n(()=>ef(b,{projectName:g||"本项目",requirement:f,tenderContext:h,knownConflictLines:q,headings:r,blockIndex:a+1,blockTotal:p.length},j,k));if(o.reviewCalls+=1,!c){j&&!/qingtian-review/u.test(j.llm.lastError||"")&&(j.llm.lastError=`qingtian-review: 第 ${a+1}/${p.length} 块评审无响应,跳过(${j.llm.lastError||"无响应"})`),m?.({status:"failed",message:`全维度评审:第 ${a+1}/${p.length} 块无响应,跳过`,details:[]});continue}c.templatingLevel&&"无"!==c.templatingLevel&&o.templatingLevels.push(c.templatingLevel),x.push(...c.issues||[])}let y=ee(x).sort((a,b)=>d9[a.riskLevel]-d9[b.riskLevel]);if(o.issuesFound=y.length,0===y.length)return m?.({status:"success",message:`全维度评审完成:${p.length} 块评审未检出问题`,details:[]}),o.reviewed=!0,o;let z=[];for(let a of y){if("否决级"!==a.riskLevel&&"高风险"!==a.riskLevel)continue;if(v(a)){if("enforce"===u){j&&(j.llm.qingtianDedupeSkipped=(j.llm.qingtianDedupeSkipped??0)+1),w.push(a);continue}j&&(j.llm.qingtianDedupeHits=(j.llm.qingtianDedupeHits??0)+1)}let b=function(a,b){if(a.location){let c=b.findIndex(b=>b.title===a.location||b.title.includes(a.location)||a.location.includes(b.title));if(c>=0)return c}let c=(a.quote||"").replace(/\s+/gu,"").slice(0,20);return c.length>=8?b.findIndex(a=>(a.content||"").replace(/[\s,,]/gu,"").includes(c)):-1}(a,d);if(b<0)continue;let c=z.find(a=>a.chapterIndex===b);c?c.issues.length<3&&c.issues.push(a):z.length<3&&z.push({chapterIndex:b,issues:[a]})}for(let a of z){let b=d[a.chapterIndex],g=e.find(a=>a.id===b.id||a.title===b.title);m?.({status:"running",message:`全维度评审修复:${b.title}(${a.issues.length} 处)`,details:a.issues.map(a=>`[${a.riskLevel}]${a.description.slice(0,48)}`)});let h=await n(()=>(0,bk.l8)({template:c,chapter:{id:b.id,title:b.title,content:b.content,evidence:b.evidence,missingFacts:b.missingFacts,sections:b.sections},issues:a.issues.map(a=>`[${a.riskLevel}][${a.dimension}] ${a.description}(原文:${a.quote})`),promptTexts:function(a){let b=a[0],c=d6[b?.dimension||""]||"【全维度评审定向修复】";return[c,d7[b?.dimension||""]||"该章节正文存在全维度评审检出的质量问题。请以局部 patch 方式结合缺陷描述逐项修复:精确定位问题句,删除错误内容或按专业规范改写,保持其余内容与事实数据不变。","只修复下列问题,其余内容保持原样:",a.map((a,b)=>`问题 ${b+1}:
@@ -147,5 +147,5 @@ ${a.slice(i).trimStart()}`:a}}let m=g(c);return m?`${a.trimEnd()}
147
147
 
148
148
  ${m}`:a},M=async b=>{var c;(0,A.Te)(a.signal);let e=C(b.message),g=/Writer 未完成/u.test(b.message)?"缺失小节":"深度不足小节",h=aU.task.sections.find(a=>a.title===e),i=z.get(c4(m,e))||0,j=(c=h?.minChars,Math.max(c||0,i&&i>0?Math.ceil(i/.8):0,/项目主要施工内容/u.test(e)?2200:/主要分部分项工程施工方案|主要施工方法/u.test(e)?1800:/项目特点.*重点.*难点|重点.*难点.*分析/u.test(e)?1500:/原材料进场复试|见证取样|危大工程专项施工方案审批流程/u.test(e)?900:760)),k=/正文不足,未达到任务最小深度/u.test(b.message),l=bS(await aK(e).catch(()=>[]),bd);bU(l.length?l:ac,bd,`repair:${d.id}:${e}`),cO.llm.lastError=void 0;let n=await V(()=>(0,bk.X6)(cO,`agent-repairer-section:${d.id}:${e}`,()=>(0,bn.mF)({template:p,chapter:d,sectionTitle:e,evidence:l.length?l:ac,missingFacts:ae,promptTexts:[f||aV,F].filter(Boolean).join("\n\n"),projectContext:cH(d),compactProjectContext:!0,scopedProjectContext:cG,requirement:a.requirement,roleContext:an,targetWords:j,maxWords:1.25*j,forbidDrawingImages:!1,factCoverageContext:aT,qualityFeedback:`Repairer 定向补写“${e}”。必须输出该小节正式正文并彻底删除 WRITER_MISSING_SECTION 标记。`,diagnostics:cO,signal:a.signal,allowLenientStructureGate:!0})));if(!n||n.includes("WRITER_MISSING_SECTION")){let b=cO.llm.lastError;cO.llm.lastError=void 0,n=await V(()=>(0,bk.X6)(cO,`agent-repairer-section-retry:${d.id}:${e}`,()=>(0,bn.mF)({template:p,chapter:d,sectionTitle:e,evidence:l.length?l:ac,missingFacts:ae,promptTexts:F,projectContext:cH(d),compactProjectContext:!0,scopedProjectContext:cG,requirement:a.requirement,roleContext:an,targetWords:j,maxWords:1.15*j,forbidDrawingImages:!1,factCoverageContext:aT,qualityFeedback:`第二次定向补写“${e}”:只写该小节正式正文,不写解释,不保留 WRITER_MISSING_SECTION。${b?`上次失败原因:${b},必须逐条修正。`:""}`,diagnostics:cO,signal:a.signal,allowLenientStructureGate:!0})))}if(n&&!n.includes("WRITER_MISSING_SECTION")){let a=/^#{3,4}\s+/u.test(n.trim())?n.trim():`### ${e}
149
149
 
150
- ${n.trim()}`,b=(0,w.V7)(a),c=Math.min(Math.max(Math.floor(.7*j),(0,bn.ap)(e)),Math.max(500,j)),d=!k||b>=c;return{sectionTitle:e,rewriteReason:g,normalizedSection:a,normalizedLength:b,enoughDepth:d,evidenceCount:l.length||ac.length,repairTargetWords:j}}return{sectionTitle:e,rewriteReason:g,normalizedLength:0,enoughDepth:!1,evidenceCount:0,repairTargetWords:j,failed:n?"仍包含 WRITER_MISSING_SECTION":cO.llm.lastError||"空响应"}},N=E||g.some(a=>!/Writer 未完成|正文不足,未达到任务最小深度/u.test(a.message)),[O,P]=await Promise.all([Promise.allSettled(J.map(a=>M(a))),(async()=>N?E?(n=!0,await V(()=>(0,bk.X6)(cO,`agent-polisher:${d.id}`,()=>(0,bk.l8)({template:p,chapter:{id:d.id,title:d.title,content:c.content,evidence:ac,missingFacts:ae,sections:bT},issues:l.map(a=>`${a.message};${a.suggestion||""}`),promptTexts:[f||aV,F].filter(Boolean).join("\n\n"),requirement:a.requirement,forbidDrawingImages:!1,diagnostics:cO,signal:a.signal})))):await V(()=>(0,bk.X6)(cO,`agent-repairer:${d.id}`,()=>(0,bk.l8)({template:p,chapter:{id:d.id,title:d.title,content:c.content,evidence:ac,missingFacts:ae,sections:bT},issues:[...g.map(a=>`${a.message};${a.suggestion||""}`),...l.length>0&&!n?l.map(a=>`${a.message};${a.suggestion||""}`):[]],promptTexts:[f||aV,F].filter(Boolean).join("\n\n"),requirement:a.requirement,forbidDrawingImages:!1,diagnostics:cO,signal:a.signal,maxTokens:D?3200:void 0}))):null)()]),Q=P?.content||c.content;for(let b of O){if("rejected"===b.status){if(a.signal?.aborted)throw b.reason;K.push(`失败:${b.reason instanceof Error?b.reason.message:"未知异常"}`);continue}if(!b.value)continue;if(b.value.failed){K.push(`失败:${b.value.sectionTitle}(${b.value.failed})`);let a=(y.get(b.value.sectionTitle)||0)+1;y.set(b.value.sectionTitle,a),a>=2&&x.add(b.value.sectionTitle);continue}let c=c4(m,b.value.sectionTitle),d=b.value.enoughDepth?L(Q,b.value.sectionTitle,b.value.normalizedSection||"",c):Q,e=d!==Q;if(e&&(Q=d),e)y.delete(b.value.sectionTitle),x.delete(b.value.sectionTitle);else if(!b.value.enoughDepth){let a=(y.get(b.value.sectionTitle)||0)+1;y.set(b.value.sectionTitle,a),a>=2&&x.add(b.value.sectionTitle)}K.push(e?`成功:${b.value.sectionTitle}(${b.value.normalizedLength}字,证据 ${b.value.evidenceCount} 条)`:`失败:${b.value.sectionTitle}(${b.value.enoughDepth?"未定位到原小节块":`补写不足 ${b.value.normalizedLength}/${b.value.repairTargetWords} 字`})`)}J.length>0&&((0,bj.fx)(_,(0,bj.X5)({type:"llm_review",roleId:`agent-repairer-${d.id}`,status:"running",message:`${(0,t.GQ)(d.title)} 已补写深度不足小节 ${J.length}/${J.length}`,details:K},{subtitle:"Agent Repairer",order:G})),T(B));let R=await dq(dz(Q,d),bM);c={...c,content:R},e=(0,et.jH)({task:aU.task,draft:c,context:b$,plannedCoverage:m}),b$.reviewResults={...b$.reviewResults||{},[d.id]:e},i=(g=e.issues.filter(a=>"blocker"===a.severity||"error"===a.level)).some(a=>/Writer 未完成/u.test(a.message)),j=g.some(a=>/正文不足,未达到任务最小深度/u.test(a.message)),k=e.issues.some(a=>"error"!==a.level&&"blocker"!==a.severity&&/正文不足,未达到任务最小深度/u.test(a.message)&&!x.has(C(a.message))),l=e.issues.filter(a=>"warning"===a.level&&/未匹配到独立小节标题|工序顺序表达缺失/u.test(a.message)).filter(a=>!bJ||!/未匹配到独立小节标题/u.test(a.message)),q=g.length>0&&(e.repairable||i||j)||k||0===g.length&&l.length>0&&!n,g.length<v?u=0:g.length>0&&(u+=1),v=g.length;let S=g.length>0,U=`chapter-repairer-${d.id}`,W=b$.nodes.find(a=>a.id===U);W?(W.status=S?"failed":"completed",W.completedAt=Date.now(),W.outputSummary=e.issues.length?`修复后仍有 ${e.issues.length} 个问题`:"定向修复通过",W.issues=e.issues):b$.nodes.push({id:U,type:"chapter_repairer",status:S?"failed":"completed",startedAt:Date.now(),completedAt:Date.now(),outputSummary:e.issues.length?`修复后仍有 ${e.issues.length} 个问题`:"定向修复通过",metrics:{supportedFacts:e.supportedFacts},issues:e.issues});let X=b$.nodes.find(a=>a.id===`chapter-reviewer-${d.id}`);X&&"running"===X.status&&(X.status=S?"failed":"completed",X.completedAt=Date.now(),X.outputSummary=e.issues.length?`${e.issues.length} 个 Reviewer 提示`:"Reviewer 通过"),(0,c2.cN)(b$),(0,bj.fx)(_,(0,bj.X5)({type:"llm_review",roleId:`agent-reviewer-${d.id}`,status:S?"failed":"success",message:S?`${(0,t.GQ)(d.title)} Reviewer 第 ${s} 轮复审仍有 ${g.length} 个阻断问题${q&&db.remaining>0&&s<r+2?",继续下一轮修复":""}`:`${(0,t.GQ)(d.title)} Reviewer 第 ${s} 轮复审通过`,details:e.issues.map(a=>a.message)},{subtitle:"Agent Reviewer",order:G-1})),(0,bj.fx)(_,(0,bj.X5)({type:"llm_review",roleId:`agent-repairer-${d.id}`,status:S?"failed":"success",message:e.issues.length?`${(0,t.GQ)(d.title)} 第 ${s} 轮定向修复后仍有 ${e.issues.length} 个问题`:`${(0,t.GQ)(d.title)} 定向修复通过`,details:[...K,...e.issues.map(a=>`剩余:${a.message}`)]},{subtitle:"Agent Repairer",order:G})),T(B)}e.issues.some(a=>"blocker"===a.severity||"error"===a.level)&&bw.push(`${(0,t.GQ)(d.title)} Reviewer 未通过:${e.issues.map(a=>a.message).join(";")}(已修复 ${s} 轮,${db.remaining<=0?"文档级修复总池已耗尽":"本章修复轮次达上限"};问题已标记并转入门禁阻断,可在记录详情查看后决定继续修复或调整模板)`),by[h]=c,B=by.filter(a=>!!a),T(B),cO.quality.blockingCount+=e.issues.filter(a=>"error"===a.level).length,cO.quality.importantCount+=e.issues.filter(a=>"warning"===a.level).length}catch(b){if(a.signal?.aborted)throw b;console.error(`[gen] chapter ${d.title} review failed:`,b),bw.push(`${(0,t.GQ)(d.title)}:审查修复阶段失败:${b instanceof Error?b.message:"未知错误"}`)}}}catch(c){if(a.signal?.aborted)throw c;console.error(`[gen] chapter ${d.title} failed:`,c);let b=`${d.title}:${c instanceof Error?c.message:"生成失败"}`;bw.push(b),g=(0,bj.X5)({type:"chapter_generation",roleId:"chapter_generation",status:"failed",message:`${(0,t.GQ)(d.title)} 生成失败:${b}`},{subtitle:(0,t.GQ)(d.title),order:h}),bz[h]=g}g&&(_[j]=g),T(B)}))))f&&da.push(c9.run(f))}await Promise.all(da);let df=by.filter(a=>!!a);bx.push(...bz.filter(a=>!!a));let dg=[];if(cM.enableGlobalReview)try{let b=cM.globalReviewSamplingRate??1,c=b>=1||df.length<=2?df:df.filter((a,c)=>c%Math.max(2,Math.round(1/b))==0),d=c.length,e=()=>V(()=>bF({template:p,chapters:c,chapterReviews:[],promptTexts:a_,requirement:a.requirement,projectContext:ce,diagnostics:cO,signal:a.signal})),f=async()=>{let a=df.map(a=>a.content).join("\n\n"),b=(0,y.t1)(a),c=await (0,S.Mv)(b.sentences,b.overviewBody?[b.overviewBody]:[]);return[...(await (0,x.qm)(a,bZ,b0.scopeConflicts)).filter(a=>/跨章一致性冲突/u.test(a.message)),...(await (0,x.hr)(a,bZ)).filter(a=>"error"===a.level),...(0,y.rA)(a),...(0,y.Et)(a),...(0,y.H)(a),...(0,y.N$)(a),...(0,y.Fr)(a),...(0,y.bq)(a),...(0,y.vH)(a),...(0,y.cT)(a),...(0,y.ub)(a),...(0,y.cl)(a),...(0,y.zP)(a),...await (0,y.r8)(a),...await (0,y.sn)(a),...(0,y.l4)(a,{semanticSimilarity:c})].map(a=>`${a.message};${a.suggestion||""}`)},g=await e(),h=g.issues;dg=[...new Set([...h,...await f()])];let i=0;for(let a of df){let b=(0,y.fE)(a.content);b.fixedCount>0&&(a.content=b.markdown,i+=b.fixedCount)}i>0&&(dg=[...new Set([...h,...await f()])]);for(let b=0;b<2&&dg.length>0;b+=1){(0,bj.fx)(_,(0,bj.X5)({type:"llm_review",roleId:"global-consistency-repair",status:"running",message:`跨章一致性冲突第 ${b+1} 轮定向修复(${dg.length} 个冲突)`},{subtitle:"跨章一致性修复"})),T(df);let c=0,d=df.flatMap(a=>{let b=a.content.replace(/\s+/gu,"").replace(/平方米|m²|m2/giu,"㎡"),c=dg.filter(c=>{if(c.includes(a.title)||(c.match(/不一致的表述\s*([^;;。\n]+)/u)?.[1]||"").split(/[、,,]/u).some(a=>{let c=a.trim().replace(/\s+/gu,"").replace(/平方米|m²|m2/giu,"㎡");return c.length>=3&&b.includes(c)}))return!0;let d=c.match(/正文([^配比厚度\s]{1,6}?)(?:配比|厚度)/u)?.[1];return!!(d&&a.content.includes(d)||[...c.matchAll(/“([^”]{6,80})”/gu)].some(a=>b.includes(a[1].replace(/\s+/gu,""))))||[...c.matchAll(/(\d[\d,,.]*)\s*(?:人|台|日|个|次|天|月|套|具|处|项|条)/gu)].some(a=>b.includes(a[0].replace(/\s+/gu,"")))});return c.length>0?[{chapter:a,related:c}]:[]});if((await Promise.allSettled(d.map(({chapter:b,related:c})=>V(()=>(0,bk.X6)(cO,`global-consistency-repair:${b.id}`,()=>(0,bk.l8)({template:p,chapter:{id:b.id,title:b.title,content:b.content,evidence:b.evidence||[],missingFacts:b.missingFacts||[],sections:b.sections},issues:c.map(a=>{let b=/重复/u.test(a)?"请删除本冲突描述的重复内容(保留首次出现的完整版本),不得改动其余正文。":"请严格按冲突描述中给出的资料口径修正本章对应表述,不得引入新的数值;与资料口径一致的既有表述(含分层/子项数值)不得改动。";return`${a};${b}`}),promptTexts:a0,requirement:a.requirement,forbidDrawingImages:!0,diagnostics:cO,signal:a.signal})))))).forEach((b,e)=>{if("rejected"===b.status){if(a.signal?.aborted)throw b.reason;console.error("[gen] global consistency repair failed:",b.reason);return}let f=b.value,{chapter:g}=d[e];f.content&&f.content!==g.content&&(g.content=f.content,c+=1)}),0===c)break;T(df),h=(await e()).issues,dg=[...new Set([...h,...await f()])],(0,bj.fx)(_,(0,bj.X5)({type:"llm_review",roleId:"global-consistency-review",status:dg.length>0?"failed":"success",message:dg.length>0?`跨章一致性复检:仍有 ${dg.length} 个冲突`:"跨章一致性复检通过"},{subtitle:"全局一致性审查"})),T(df)}let j=await (0,x.KI)(df,bZ,b0.scopeConflicts),k=0;for(let a of df){let b=(0,y.fE)(a.content);b.fixedCount>0&&(a.content=b.markdown,k+=b.fixedCount)}let l=df.map(a=>a.content).join("\n\n"),m=(0,y.t1)(l),n=await (0,S.Mv)(m.sentences,m.overviewBody?[m.overviewBody]:[]),o=0,q=0,r=0;for(let a of df){let b=a.content.split(/\r?\n/u).length,c=(0,y.lR)(a.content),d=(0,y.Vc)(c.markdown),e=(0,y.U$)(d.markdown,n),f=b-e.split(/\r?\n/u).length;f>0&&(o+=c.removedCount,q+=d.removedCount,r+=f-c.removedCount-d.removedCount,a.content=e)}if(j.fixedCount>0||k>0||o>0||q>0||r>0){dg=[...new Set([...h,...await f()])];let a=[j.fixedCount>0?`数值 ${j.fixedCount} 处`:"",k>0?`跨章数值 ${k} 处`:"",o>0?`重复表格 ${o} 行`:"",q>0?`重复段落 ${q} 行`:"",r>0?`概况复述句 ${r} 行`:""].filter(Boolean).join("、");(0,bj.fx)(_,(0,bj.X5)({type:"llm_review",roleId:"global-consistency-deterministic-fix",status:"success",message:`跨章一致性定点修复:${a}${j.details.slice(0,4).length>0?`(${j.details.slice(0,4).join("、")})`:""}`,details:j.details.slice(4)},{subtitle:"跨章一致性修复"})),T(df)}(0,bj.fx)(_,(0,bj.X5)({type:"llm_review",roleId:"global-consistency-repair",status:dg.length>0?"failed":"success",message:dg.length>0?`跨章一致性修复完成:仍残留 ${dg.length} 个冲突(已记录,由交付门禁兜底)`:"跨章一致性修复完成:冲突已全部消除"},{subtitle:"跨章一致性修复"})),T(df);let s=d<df.length?{...g.stage,message:`${g.stage.message||"全局一致性审查完成"}(抽检 ${d}/${df.length} 章)`}:g.stage;(0,bj.fx)(_,s),T(df)}catch(b){if(a.signal?.aborted)throw b;console.error("[gen] global consistency review failed:",b)}let dh=(0,bh.Xi)(cb,df);if(dh.length>0)for(let b=0;b<2&&dh.length>0;b+=1){(0,bj.fx)(_,(0,bj.X5)({type:"llm_review",roleId:"table-execution-repair",status:"running",message:`表格执行率修复第 ${b+1} 轮(${dh.length} 个章节缺表)`},{subtitle:"表格执行率修复"})),T(df);let c=0,d=[],e=dh.flatMap(a=>{let b=df.find(b=>b.title===a.chapterTitle||a.chapterTitle.includes(b.title)||b.title.includes(a.chapterTitle));return b?[{gap:a,draft:b}]:[]}),f=async b=>{let{gap:c,draft:d}=b,e=[...new Set(c.plans.map(a=>a.moduleTitle).filter(Boolean))],f=e.length>0?d.evidence.filter(a=>{let b=a.sectionTitle;return!b||e.some(a=>b===a||b.includes(a)||a.includes(b))}):d.evidence,g={id:d.id,title:d.title,content:d.content,evidence:f.length?f:d.evidence,missingFacts:d.missingFacts||[],sections:d.sections},h=`计划表格缺失(计划 ${c.planned} 张,实际仅 ${c.actual} 张):${c.plans.map(a=>`${a.title}(表头:${a.fields.map(a=>a.name).join("、")})`).join(";")}。必须按表头字段补齐这些 markdown 表格并紧跟相关小节输出,不得删除已有正文;每个表格前须有 1~2 句引导叙述说明表格作用与关键结论,表格不能替代小节正文;deriveFromProject 字段基于项目工程量、总工期与工序流水按定额工效推导具体数值,projectFactOnly 字段不得编造。`,i=await V(()=>(0,bk.X6)(cO,`table-execution-repair:${d.id}`,()=>(0,bk.l8)({template:p,chapter:g,issues:[h],promptTexts:a0,requirement:a.requirement,forbidDrawingImages:!0,diagnostics:cO,signal:a.signal,maxTokens:Math.min(12e3,Math.max(6e3,1200*c.plans.length))}))),j=cO?.llm.lastError;return i.content&&i.content!==d.content||(i=await V(()=>(0,bk.X6)(cO,`table-execution-repair-retry:${d.id}`,()=>(0,bk.l8)({template:p,chapter:g,issues:[`${h}
151
- 上一轮补表 patch 未能落位(${j||"patch 未应用"})。改为逐表追加:每张缺失表单独输出一个 patch,originalText 锚定该表应归属小节(${c.plans.map(a=>a.moduleTitle).filter(Boolean).join("、")})最后一个完整句子,replacement 为该句后追加引导叙述与完整 markdown 表格(表名、表头、分隔线、至少一行数据);不得重写其他正文,不得输出空表或“见下表”。`],promptTexts:a0,requirement:a.requirement,forbidDrawingImages:!0,repairType:"table_numeric",diagnostics:cO,signal:a.signal,maxTokens:Math.min(12e3,Math.max(6e3,1200*c.plans.length))})))),i},g=await Promise.allSettled(e.map(a=>f(a))),h=new Set;if(g.forEach((b,f)=>{if("rejected"===b.status){if(a.signal?.aborted)throw b.reason;d.push(`${e[f].gap.chapterTitle}:修复异常(${b.reason instanceof Error?b.reason.message:"未知错误"})`);return}let g=b.value,{gap:i,draft:j}=e[f];g.content&&g.content!==j.content&&!h.has(j.id)?(j.content=g.content,h.add(j.id),c+=1):h.has(j.id)||d.push(`${i.chapterTitle}:缺 ${i.plans.map(a=>a.title).join("、")}(${cO?.llm.lastError||"补表 patch 未应用"})`)}),0===c){(0,bj.fx)(_,(0,bj.X5)({type:"llm_review",roleId:"table-execution-repair",status:"failed",message:`表格执行率修复第 ${b+1} 轮:补表 patch 未应用(${dh.length} 个章节缺表)`,details:d},{subtitle:"表格执行率修复"})),T(df);break}T(df),dh=(0,bh.Xi)(cb,df),(0,bj.fx)(_,(0,bj.X5)({type:"llm_review",roleId:"table-execution-repair",status:dh.length>0?"failed":"success",message:dh.length>0?`表格执行率修复第 ${b+1} 轮完成,仍有 ${dh.length} 个章节缺表`:`表格执行率修复第 ${b+1} 轮完成`},{subtitle:"表格执行率修复"})),(0,bj.fx)(_,(0,bj.X5)({type:"llm_review",roleId:"table-execution-review",status:dh.length>0?"failed":"success",message:dh.length>0?`表格执行率复检:仍有 ${dh.length} 个章节缺表`:"表格执行率复检通过"},{subtitle:"表格执行率核验"}))}{let a=df.map(a=>a.content).join("\n\n"),b=(0,y.t1)(a),c=await (0,S.Mv)(b.sentences,b.overviewBody?[b.overviewBody]:[]),d=0,e=0,f=0;for(let a of df){let b=a.content.split(/\r?\n/u).length,g=(0,y.lR)(a.content),h=(0,y.Vc)(g.markdown),i=(0,y.U$)(h.markdown,c),j=b-i.split(/\r?\n/u).length;j>0&&(d+=g.removedCount,e+=h.removedCount,f+=j-g.removedCount-h.removedCount,a.content=i)}if(d>0||e>0||f>0){let a=df.map(a=>a.content).join("\n\n"),b=[...(0,y.ub)(a),...(0,y.cl)(a),...(0,y.l4)(a,{semanticSimilarity:c})].map(a=>`${a.message};${a.suggestion||""}`);dg=[...new Set([...dg.filter(a=>!/表格重复|段落完全重复|概况复述/u.test(a)),...b])];let g=[d>0?`重复表格 ${d} 行`:"",e>0?`重复段落 ${e} 行`:"",f>0?`概况复述句 ${f} 行`:""].filter(Boolean).join("、");(0,bj.fx)(_,(0,bj.X5)({type:"llm_review",roleId:"post-table-dedup",status:"success",message:`补表后确定性去重:${g}`},{subtitle:"表格执行率核验"})),T(df)}}{let a=cO.evidence,b=cO.llm,c=(0,S.Bd)();cO.semantic=c;let d=c.embedCacheHits+c.embedCacheMisses,e=d>0?Math.round(1e4*c.embedCacheHits/d)/100:null,f=(b.promptCacheHitTokens||0)+(b.promptCacheMissTokens||0),g=f>0?Math.round(1e4*(b.promptCacheHitTokens||0)/f)/100:null,h=b.layerChars,i=h?h.l0+h.l1+h.l2+h.l3:0,j=a=>i>0?Math.round(1e4*a/i)/100:0,k=h&&i>0?`上下文分层:L0 system 恒定 ${h.l0} 字(${j(h.l0)}%)、L1 任务级 ${h.l1} 字(${j(h.l1)}%)、L2 章级 ${h.l2} 字(${j(h.l2)}%)、L3 小节级 ${h.l3} 字(${j(h.l3)}%)`:"上下文分层:本次生成未采集 L0-L3 分层统计";(0,bj.fx)(_,(0,bj.X5)({type:"validation",roleId:"budget-trim-report",status:"success",message:`预算裁剪报告:证据 ${a.raw} 条 → 采用 ${a.used} 条(噪声过滤 ${a.filteredNoise} 条、预算兜底裁剪 ${a.budgetDropped} 条),证据上下文 ${a.contextChars} 字`,details:[`证据质量:平均噪声分 ${a.avgNoiseScore},平均事实密度 ${a.avgFactDensity}`,`检索:${a.searchQueries} 组查询,耗时 ${Math.round(a.searchMs/1e3)} 秒`,`LLM:${b.calls} 次调用,失败 ${b.failures} 次,重试 ${b.retries} 次,schema 校验失败 ${b.schemaFailures} 次`,`LLM 上下文输入:${b.inputChars||0} 字符(system+user)${b.unlayeredChars?`(其中未分层调用 ${b.unlayeredChars} 字符,占比 ${Math.round(b.unlayeredChars/(b.inputChars||1)*1e4)/100}%)`:""},输入 ${b.inputTokens||0} token / 输出 ${b.outputTokens||0} token`,k,null===g?"上下文缓存:提供商未返回 prefix cache 指标(prompt_cache_hit/miss_tokens),无法观测命中率":`上下文缓存:命中 ${b.promptCacheHitTokens} token / 未命中 ${b.promptCacheMissTokens} token(命中率 ${g}%)——未命中占比高说明固定前缀未收敛,system/user 分离(A5)后应显著上升`,null===e?"bge 嵌入缓存:本次生成无嵌入调用":`bge 嵌入缓存:命中 ${c.embedCacheHits} 条 / 未命中 ${c.embedCacheMisses} 条(命中率 ${e}%,全局 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:"预算裁剪审计"})),T(df)}return eq({chapterDrafts:df,chapterDraftsByOrder:by,chapterGenerationStagesByOrder:bz,chapterGenerationStages:bx,effectiveChapters:cb,template:p,allEvidence:bq,projectMaterialScope:bd,progressStages:_,documentSpec:aF,projectMaterialProfile:aj,projectMaterialSummary:au,domainProfile:aG,documentBudget:cI,promptTexts:aZ,reviewPromptTexts:a_,input:a,generationStrategy:cM,generationDiagnostics:cO,chapterScopedContext:cH,promptBindings:ae,promptDocumentRules:aX,projectUnderstanding:ak,projectContext:ce,projectRoot:c,projectId:o,readiness:aH,factExtractionPromptTexts:a$,hasExplicitOutline:at,missingItems:bt,retrievalCoverageReports:br,failedChapterMessages:bw,webResearchReport:bs,indexHealth:bb,promptPlan:aa,globalConsistencyIssues:dg,scopeConflicts:b0.scopeConflicts,writingTaskBrief:cB,evaluationCriteriaItems:b4.map(a=>a.title).filter(Boolean),tenderRequirements:cm,requirementsSimilarity:cx,factTokenScopeClassifier:cz,professionalDepthClassifier:cA,agentWorkflow:b$,emitProgress:T,withProgressHeartbeat:V})}},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:52e3}:c>=3e3?{floorChars:11e3,ceilingChars:36e3}:{floorChars:8e3,ceilingChars:24e3},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}}},87942:(a,b,c)=>{c.d(b,{x:()=>d});let d={version:"professional-document-workflow-v7",rules:["complete-local-knowledge-assumption","knowledge-coverage-recovery","fact-trace-placement","chapter-coverage-gate","structured-quality-report","post-repair-verification"]}}};
150
+ ${n.trim()}`,b=(0,w.V7)(a),c=Math.min(Math.max(Math.floor(.7*j),(0,bn.ap)(e)),Math.max(500,j)),d=!k||b>=c;return{sectionTitle:e,rewriteReason:g,normalizedSection:a,normalizedLength:b,enoughDepth:d,evidenceCount:l.length||ac.length,repairTargetWords:j}}return{sectionTitle:e,rewriteReason:g,normalizedLength:0,enoughDepth:!1,evidenceCount:0,repairTargetWords:j,failed:n?"仍包含 WRITER_MISSING_SECTION":cO.llm.lastError||"空响应"}},N=E||g.some(a=>!/Writer 未完成|正文不足,未达到任务最小深度/u.test(a.message)),[O,P]=await Promise.all([Promise.allSettled(J.map(a=>M(a))),(async()=>N?E?(n=!0,await V(()=>(0,bk.X6)(cO,`agent-polisher:${d.id}`,()=>(0,bk.l8)({template:p,chapter:{id:d.id,title:d.title,content:c.content,evidence:ac,missingFacts:ae,sections:bT},issues:l.map(a=>`${a.message};${a.suggestion||""}`),promptTexts:[f||aV,F].filter(Boolean).join("\n\n"),requirement:a.requirement,forbidDrawingImages:!1,diagnostics:cO,signal:a.signal})))):await V(()=>(0,bk.X6)(cO,`agent-repairer:${d.id}`,()=>(0,bk.l8)({template:p,chapter:{id:d.id,title:d.title,content:c.content,evidence:ac,missingFacts:ae,sections:bT},issues:[...g.map(a=>`${a.message};${a.suggestion||""}`),...l.length>0&&!n?l.map(a=>`${a.message};${a.suggestion||""}`):[]],promptTexts:[f||aV,F].filter(Boolean).join("\n\n"),requirement:a.requirement,forbidDrawingImages:!1,diagnostics:cO,signal:a.signal,maxTokens:D?3200:void 0}))):null)()]),Q=P?.content||c.content;for(let b of O){if("rejected"===b.status){if(a.signal?.aborted)throw b.reason;K.push(`失败:${b.reason instanceof Error?b.reason.message:"未知异常"}`);continue}if(!b.value)continue;if(b.value.failed){K.push(`失败:${b.value.sectionTitle}(${b.value.failed})`);let a=(y.get(b.value.sectionTitle)||0)+1;y.set(b.value.sectionTitle,a),a>=2&&x.add(b.value.sectionTitle);continue}let c=c4(m,b.value.sectionTitle),d=b.value.enoughDepth?L(Q,b.value.sectionTitle,b.value.normalizedSection||"",c):Q,e=d!==Q;if(e&&(Q=d),e)y.delete(b.value.sectionTitle),x.delete(b.value.sectionTitle);else if(!b.value.enoughDepth){let a=(y.get(b.value.sectionTitle)||0)+1;y.set(b.value.sectionTitle,a),a>=2&&x.add(b.value.sectionTitle)}K.push(e?`成功:${b.value.sectionTitle}(${b.value.normalizedLength}字,证据 ${b.value.evidenceCount} 条)`:`失败:${b.value.sectionTitle}(${b.value.enoughDepth?"未定位到原小节块":`补写不足 ${b.value.normalizedLength}/${b.value.repairTargetWords} 字`})`)}J.length>0&&((0,bj.fx)(_,(0,bj.X5)({type:"llm_review",roleId:`agent-repairer-${d.id}`,status:"running",message:`${(0,t.GQ)(d.title)} 已补写深度不足小节 ${J.length}/${J.length}`,details:K},{subtitle:"Agent Repairer",order:G})),T(B));let R=await dq(dz(Q,d),bM);c={...c,content:R},e=(0,et.jH)({task:aU.task,draft:c,context:b$,plannedCoverage:m}),b$.reviewResults={...b$.reviewResults||{},[d.id]:e},i=(g=e.issues.filter(a=>"blocker"===a.severity||"error"===a.level)).some(a=>/Writer 未完成/u.test(a.message)),j=g.some(a=>/正文不足,未达到任务最小深度/u.test(a.message)),k=e.issues.some(a=>"error"!==a.level&&"blocker"!==a.severity&&/正文不足,未达到任务最小深度/u.test(a.message)&&!x.has(C(a.message))),l=e.issues.filter(a=>"warning"===a.level&&/未匹配到独立小节标题|工序顺序表达缺失/u.test(a.message)).filter(a=>!bJ||!/未匹配到独立小节标题/u.test(a.message)),q=g.length>0&&(e.repairable||i||j)||k||0===g.length&&l.length>0&&!n,g.length<v?u=0:g.length>0&&(u+=1),v=g.length;let S=g.length>0,U=`chapter-repairer-${d.id}`,W=b$.nodes.find(a=>a.id===U);W?(W.status=S?"failed":"completed",W.completedAt=Date.now(),W.outputSummary=e.issues.length?`修复后仍有 ${e.issues.length} 个问题`:"定向修复通过",W.issues=e.issues):b$.nodes.push({id:U,type:"chapter_repairer",status:S?"failed":"completed",startedAt:Date.now(),completedAt:Date.now(),outputSummary:e.issues.length?`修复后仍有 ${e.issues.length} 个问题`:"定向修复通过",metrics:{supportedFacts:e.supportedFacts},issues:e.issues});let X=b$.nodes.find(a=>a.id===`chapter-reviewer-${d.id}`);X&&"running"===X.status&&(X.status=S?"failed":"completed",X.completedAt=Date.now(),X.outputSummary=e.issues.length?`${e.issues.length} 个 Reviewer 提示`:"Reviewer 通过"),(0,c2.cN)(b$),(0,bj.fx)(_,(0,bj.X5)({type:"llm_review",roleId:`agent-reviewer-${d.id}`,status:S?"failed":"success",message:S?`${(0,t.GQ)(d.title)} Reviewer 第 ${s} 轮复审仍有 ${g.length} 个阻断问题${q&&db.remaining>0&&s<r+2?",继续下一轮修复":""}`:`${(0,t.GQ)(d.title)} Reviewer 第 ${s} 轮复审通过`,details:e.issues.map(a=>a.message)},{subtitle:"Agent Reviewer",order:G-1})),(0,bj.fx)(_,(0,bj.X5)({type:"llm_review",roleId:`agent-repairer-${d.id}`,status:S?"failed":"success",message:e.issues.length?`${(0,t.GQ)(d.title)} 第 ${s} 轮定向修复后仍有 ${e.issues.length} 个问题`:`${(0,t.GQ)(d.title)} 定向修复通过`,details:[...K,...e.issues.map(a=>`剩余:${a.message}`)]},{subtitle:"Agent Repairer",order:G})),T(B)}e.issues.some(a=>"blocker"===a.severity||"error"===a.level)&&bw.push(`${(0,t.GQ)(d.title)} Reviewer 未通过:${e.issues.map(a=>a.message).join(";")}(已修复 ${s} 轮,${db.remaining<=0?"文档级修复总池已耗尽":"本章修复轮次达上限"};问题已标记并转入门禁阻断,可在记录详情查看后决定继续修复或调整模板)`),by[h]=c,B=by.filter(a=>!!a),T(B),cO.quality.blockingCount+=e.issues.filter(a=>"error"===a.level).length,cO.quality.importantCount+=e.issues.filter(a=>"warning"===a.level).length}catch(b){if(a.signal?.aborted)throw b;console.error(`[gen] chapter ${d.title} review failed:`,b),bw.push(`${(0,t.GQ)(d.title)}:审查修复阶段失败:${b instanceof Error?b.message:"未知错误"}`)}}}catch(c){if(a.signal?.aborted)throw c;console.error(`[gen] chapter ${d.title} failed:`,c);let b=`${d.title}:${c instanceof Error?c.message:"生成失败"}`;bw.push(b),g=(0,bj.X5)({type:"chapter_generation",roleId:"chapter_generation",status:"failed",message:`${(0,t.GQ)(d.title)} 生成失败:${b}`},{subtitle:(0,t.GQ)(d.title),order:h}),bz[h]=g}g&&(_[j]=g),T(B)}))))f&&da.push(c9.run(f))}await Promise.all(da);let df=by.filter(a=>!!a);bx.push(...bz.filter(a=>!!a));let dg=[];if(cM.enableGlobalReview)try{let b=cM.globalReviewSamplingRate??1,c=b>=1||df.length<=2?df:df.filter((a,c)=>c%Math.max(2,Math.round(1/b))==0),d=c.length,e=()=>V(()=>bF({template:p,chapters:c,chapterReviews:[],promptTexts:a_,requirement:a.requirement,projectContext:ce,diagnostics:cO,signal:a.signal})),f=async()=>{let a=df.map(a=>a.content).join("\n\n"),b=(0,y.t1)(a),c=await (0,S.Mv)(b.sentences,b.overviewBody?[b.overviewBody]:[]);return[...(await (0,x.qm)(a,bZ,b0.scopeConflicts)).filter(a=>/跨章一致性冲突/u.test(a.message)),...(await (0,x.hr)(a,bZ)).filter(a=>"error"===a.level),...(0,y.rA)(a),...(0,y.Et)(a),...(0,y.H)(a),...(0,y.N$)(a),...(0,y.Fr)(a),...(0,y.bq)(a),...(0,y.vH)(a),...(0,y.cT)(a),...(0,y.ub)(a),...(0,y.cl)(a),...(0,y.zP)(a),...await (0,y.r8)(a),...await (0,y.sn)(a),...(0,y.l4)(a,{semanticSimilarity:c})].map(a=>`${a.message};${a.suggestion||""}`)},g=await e(),h=g.issues;dg=[...new Set([...h,...await f()])];let i=0;for(let a of df){let b=(0,y.fE)(a.content);b.fixedCount>0&&(a.content=b.markdown,i+=b.fixedCount)}i>0&&(dg=[...new Set([...h,...await f()])]);let j=!1;for(let b=0;b<2&&dg.length>0;b+=1){(0,bj.fx)(_,(0,bj.X5)({type:"llm_review",roleId:"global-consistency-repair",status:"running",message:`跨章一致性冲突第 ${b+1} 轮定向修复(${dg.length} 个冲突)`},{subtitle:"跨章一致性修复"})),T(df);let c=0,d=df.flatMap(a=>{let b=a.content.replace(/\s+/gu,"").replace(/平方米|m²|m2/giu,"㎡"),c=dg.filter(c=>{if(c.includes(a.title)||(c.match(/不一致的表述\s*([^;;。\n]+)/u)?.[1]||"").split(/[、,,]/u).some(a=>{let c=a.trim().replace(/\s+/gu,"").replace(/平方米|m²|m2/giu,"㎡");return c.length>=3&&b.includes(c)}))return!0;let d=c.match(/正文([^配比厚度\s]{1,6}?)(?:配比|厚度)/u)?.[1];return!!(d&&a.content.includes(d)||[...c.matchAll(/“([^”]{6,80})”/gu)].some(a=>b.includes(a[1].replace(/\s+/gu,""))))||[...c.matchAll(/(\d[\d,,.]*)\s*(?:人|台|日|个|次|天|月|套|具|处|项|条)/gu)].some(a=>b.includes(a[0].replace(/\s+/gu,"")))});return c.length>0?[{chapter:a,related:c}]:[]});if((await Promise.allSettled(d.map(({chapter:b,related:c})=>V(()=>(0,bk.X6)(cO,`global-consistency-repair:${b.id}`,()=>(0,bk.l8)({template:p,chapter:{id:b.id,title:b.title,content:b.content,evidence:b.evidence||[],missingFacts:b.missingFacts||[],sections:b.sections},issues:c.map(a=>{let b=/重复/u.test(a)?"请删除本冲突描述的重复内容(保留首次出现的完整版本),不得改动其余正文。":"请严格按冲突描述中给出的资料口径修正本章对应表述,不得引入新的数值;与资料口径一致的既有表述(含分层/子项数值)不得改动。";return`${a};${b}`}),promptTexts:a0,requirement:a.requirement,forbidDrawingImages:!0,diagnostics:cO,signal:a.signal})))))).forEach((b,e)=>{if("rejected"===b.status){if(a.signal?.aborted)throw b.reason;console.error("[gen] global consistency repair failed:",b.reason);return}let f=b.value,{chapter:g}=d[e];f.content&&f.content!==g.content&&(g.content=f.content,c+=1)}),0===c){j&&(h=(await e()).issues);break}T(df);let g=await f();1===b||0===g.length?(h=(await e()).issues,j=!1):j=!0,dg=[...new Set([...h,...g])],(0,bj.fx)(_,(0,bj.X5)({type:"llm_review",roleId:"global-consistency-review",status:dg.length>0?"failed":"success",message:dg.length>0?`跨章一致性复检:仍有 ${dg.length} 个冲突`:"跨章一致性复检通过"},{subtitle:"全局一致性审查"})),T(df)}let k=await (0,x.KI)(df,bZ,b0.scopeConflicts),l=0;for(let a of df){let b=(0,y.fE)(a.content);b.fixedCount>0&&(a.content=b.markdown,l+=b.fixedCount)}let m=df.map(a=>a.content).join("\n\n"),n=(0,y.t1)(m),o=await (0,S.Mv)(n.sentences,n.overviewBody?[n.overviewBody]:[]),q=0,r=0,s=0;for(let a of df){let b=a.content.split(/\r?\n/u).length,c=(0,y.lR)(a.content),d=(0,y.Vc)(c.markdown),e=(0,y.U$)(d.markdown,o),f=b-e.split(/\r?\n/u).length;f>0&&(q+=c.removedCount,r+=d.removedCount,s+=f-c.removedCount-d.removedCount,a.content=e)}if(k.fixedCount>0||l>0||q>0||r>0||s>0){dg=[...new Set([...h,...await f()])];let a=[k.fixedCount>0?`数值 ${k.fixedCount} 处`:"",l>0?`跨章数值 ${l} 处`:"",q>0?`重复表格 ${q} 行`:"",r>0?`重复段落 ${r} 行`:"",s>0?`概况复述句 ${s} 行`:""].filter(Boolean).join("、");(0,bj.fx)(_,(0,bj.X5)({type:"llm_review",roleId:"global-consistency-deterministic-fix",status:"success",message:`跨章一致性定点修复:${a}${k.details.slice(0,4).length>0?`(${k.details.slice(0,4).join("、")})`:""}`,details:k.details.slice(4)},{subtitle:"跨章一致性修复"})),T(df)}(0,bj.fx)(_,(0,bj.X5)({type:"llm_review",roleId:"global-consistency-repair",status:dg.length>0?"failed":"success",message:dg.length>0?`跨章一致性修复完成:仍残留 ${dg.length} 个冲突(已记录,由交付门禁兜底)`:"跨章一致性修复完成:冲突已全部消除"},{subtitle:"跨章一致性修复"})),T(df);let t=d<df.length?{...g.stage,message:`${g.stage.message||"全局一致性审查完成"}(抽检 ${d}/${df.length} 章)`}:g.stage;(0,bj.fx)(_,t),T(df)}catch(b){if(a.signal?.aborted)throw b;console.error("[gen] global consistency review failed:",b)}let dh=(0,bh.Xi)(cb,df);if(dh.length>0)for(let b=0;b<2&&dh.length>0;b+=1){(0,bj.fx)(_,(0,bj.X5)({type:"llm_review",roleId:"table-execution-repair",status:"running",message:`表格执行率修复第 ${b+1} 轮(${dh.length} 个章节缺表)`},{subtitle:"表格执行率修复"})),T(df);let c=0,d=[],e=dh.flatMap(a=>{let b=df.find(b=>b.title===a.chapterTitle||a.chapterTitle.includes(b.title)||b.title.includes(a.chapterTitle));return b?[{gap:a,draft:b}]:[]}),f=async b=>{let{gap:c,draft:d}=b,e=[...new Set(c.plans.map(a=>a.moduleTitle).filter(Boolean))],f=e.length>0?d.evidence.filter(a=>{let b=a.sectionTitle;return!b||e.some(a=>b===a||b.includes(a)||a.includes(b))}):d.evidence,g={id:d.id,title:d.title,content:d.content,evidence:f.length?f:d.evidence,missingFacts:d.missingFacts||[],sections:d.sections},h=`计划表格缺失(计划 ${c.planned} 张,实际仅 ${c.actual} 张):${c.plans.map(a=>`${a.title}(表头:${a.fields.map(a=>a.name).join("、")})`).join(";")}。必须按表头字段补齐这些 markdown 表格并紧跟相关小节输出,不得删除已有正文;每个表格前须有 1~2 句引导叙述说明表格作用与关键结论,表格不能替代小节正文;deriveFromProject 字段基于项目工程量、总工期与工序流水按定额工效推导具体数值,projectFactOnly 字段不得编造。`,i=await V(()=>(0,bk.X6)(cO,`table-execution-repair:${d.id}`,()=>(0,bk.l8)({template:p,chapter:g,issues:[h],promptTexts:a0,requirement:a.requirement,forbidDrawingImages:!0,diagnostics:cO,signal:a.signal,maxTokens:Math.min(12e3,Math.max(6e3,1200*c.plans.length))}))),j=cO?.llm.lastError;return i.content&&i.content!==d.content||(i=await V(()=>(0,bk.X6)(cO,`table-execution-repair-retry:${d.id}`,()=>(0,bk.l8)({template:p,chapter:g,issues:[`${h}
151
+ 上一轮补表 patch 未能落位(${j||"patch 未应用"})。改为逐表追加:每张缺失表单独输出一个 patch,originalText 锚定该表应归属小节(${c.plans.map(a=>a.moduleTitle).filter(Boolean).join("、")})最后一个完整句子,replacement 为该句后追加引导叙述与完整 markdown 表格(表名、表头、分隔线、至少一行数据);不得重写其他正文,不得输出空表或“见下表”。`],promptTexts:a0,requirement:a.requirement,forbidDrawingImages:!0,repairType:"table_numeric",diagnostics:cO,signal:a.signal,maxTokens:Math.min(12e3,Math.max(6e3,1200*c.plans.length))})))),i},g=await Promise.allSettled(e.map(a=>f(a))),h=new Set;if(g.forEach((b,f)=>{if("rejected"===b.status){if(a.signal?.aborted)throw b.reason;d.push(`${e[f].gap.chapterTitle}:修复异常(${b.reason instanceof Error?b.reason.message:"未知错误"})`);return}let g=b.value,{gap:i,draft:j}=e[f];g.content&&g.content!==j.content&&!h.has(j.id)?(j.content=g.content,h.add(j.id),c+=1):h.has(j.id)||d.push(`${i.chapterTitle}:缺 ${i.plans.map(a=>a.title).join("、")}(${cO?.llm.lastError||"补表 patch 未应用"})`)}),0===c){(0,bj.fx)(_,(0,bj.X5)({type:"llm_review",roleId:"table-execution-repair",status:"failed",message:`表格执行率修复第 ${b+1} 轮:补表 patch 未应用(${dh.length} 个章节缺表)`,details:d},{subtitle:"表格执行率修复"})),T(df);break}T(df),dh=(0,bh.Xi)(cb,df),(0,bj.fx)(_,(0,bj.X5)({type:"llm_review",roleId:"table-execution-repair",status:dh.length>0?"failed":"success",message:dh.length>0?`表格执行率修复第 ${b+1} 轮完成,仍有 ${dh.length} 个章节缺表`:`表格执行率修复第 ${b+1} 轮完成`},{subtitle:"表格执行率修复"})),(0,bj.fx)(_,(0,bj.X5)({type:"llm_review",roleId:"table-execution-review",status:dh.length>0?"failed":"success",message:dh.length>0?`表格执行率复检:仍有 ${dh.length} 个章节缺表`:"表格执行率复检通过"},{subtitle:"表格执行率核验"}))}{let a=df.map(a=>a.content).join("\n\n"),b=(0,y.t1)(a),c=await (0,S.Mv)(b.sentences,b.overviewBody?[b.overviewBody]:[]),d=0,e=0,f=0;for(let a of df){let b=a.content.split(/\r?\n/u).length,g=(0,y.lR)(a.content),h=(0,y.Vc)(g.markdown),i=(0,y.U$)(h.markdown,c),j=b-i.split(/\r?\n/u).length;j>0&&(d+=g.removedCount,e+=h.removedCount,f+=j-g.removedCount-h.removedCount,a.content=i)}if(d>0||e>0||f>0){let a=df.map(a=>a.content).join("\n\n"),b=[...(0,y.ub)(a),...(0,y.cl)(a),...(0,y.l4)(a,{semanticSimilarity:c})].map(a=>`${a.message};${a.suggestion||""}`);dg=[...new Set([...dg.filter(a=>!/表格重复|段落完全重复|概况复述/u.test(a)),...b])];let g=[d>0?`重复表格 ${d} 行`:"",e>0?`重复段落 ${e} 行`:"",f>0?`概况复述句 ${f} 行`:""].filter(Boolean).join("、");(0,bj.fx)(_,(0,bj.X5)({type:"llm_review",roleId:"post-table-dedup",status:"success",message:`补表后确定性去重:${g}`},{subtitle:"表格执行率核验"})),T(df)}}{let a=cO.evidence,b=cO.llm,c=(0,S.Bd)();cO.semantic=c;let d=c.embedCacheHits+c.embedCacheMisses,e=d>0?Math.round(1e4*c.embedCacheHits/d)/100:null,f=(b.promptCacheHitTokens||0)+(b.promptCacheMissTokens||0),g=f>0?Math.round(1e4*(b.promptCacheHitTokens||0)/f)/100:null,h=b.layerChars,i=h?h.l0+h.l1+h.l2+h.l3:0,j=a=>i>0?Math.round(1e4*a/i)/100:0,k=h&&i>0?`上下文分层:L0 system 恒定 ${h.l0} 字(${j(h.l0)}%)、L1 任务级 ${h.l1} 字(${j(h.l1)}%)、L2 章级 ${h.l2} 字(${j(h.l2)}%)、L3 小节级 ${h.l3} 字(${j(h.l3)}%)`:"上下文分层:本次生成未采集 L0-L3 分层统计";(0,bj.fx)(_,(0,bj.X5)({type:"validation",roleId:"budget-trim-report",status:"success",message:`预算裁剪报告:证据 ${a.raw} 条 → 采用 ${a.used} 条(噪声过滤 ${a.filteredNoise} 条、预算兜底裁剪 ${a.budgetDropped} 条),证据上下文 ${a.contextChars} 字`,details:[`证据质量:平均噪声分 ${a.avgNoiseScore},平均事实密度 ${a.avgFactDensity}`,`检索:${a.searchQueries} 组查询,耗时 ${Math.round(a.searchMs/1e3)} 秒`,`LLM:${b.calls} 次调用,失败 ${b.failures} 次,重试 ${b.retries} 次,schema 校验失败 ${b.schemaFailures} 次`,`LLM 上下文输入:${b.inputChars||0} 字符(system+user)${b.unlayeredChars?`(其中未分层调用 ${b.unlayeredChars} 字符,占比 ${Math.round(b.unlayeredChars/(b.inputChars||1)*1e4)/100}%)`:""},输入 ${b.inputTokens||0} token / 输出 ${b.outputTokens||0} token`,k,null===g?"上下文缓存:提供商未返回 prefix cache 指标(prompt_cache_hit/miss_tokens),无法观测命中率":`上下文缓存:命中 ${b.promptCacheHitTokens} token / 未命中 ${b.promptCacheMissTokens} token(命中率 ${g}%)——未命中占比高说明固定前缀未收敛,system/user 分离(A5)后应显著上升`,null===e?"bge 嵌入缓存:本次生成无嵌入调用":`bge 嵌入缓存:命中 ${c.embedCacheHits} 条 / 未命中 ${c.embedCacheMisses} 条(命中率 ${e}%,全局 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:"预算裁剪审计"})),T(df)}return eq({chapterDrafts:df,chapterDraftsByOrder:by,chapterGenerationStagesByOrder:bz,chapterGenerationStages:bx,effectiveChapters:cb,template:p,allEvidence:bq,projectMaterialScope:bd,progressStages:_,documentSpec:aF,projectMaterialProfile:aj,projectMaterialSummary:au,domainProfile:aG,documentBudget:cI,promptTexts:aZ,reviewPromptTexts:a_,input:a,generationStrategy:cM,generationDiagnostics:cO,chapterScopedContext:cH,promptBindings:ae,promptDocumentRules:aX,projectUnderstanding:ak,projectContext:ce,projectRoot:c,projectId:o,readiness:aH,factExtractionPromptTexts:a$,hasExplicitOutline:at,missingItems:bt,retrievalCoverageReports:br,failedChapterMessages:bw,webResearchReport:bs,indexHealth:bb,promptPlan:aa,globalConsistencyIssues:dg,scopeConflicts:b0.scopeConflicts,writingTaskBrief:cB,evaluationCriteriaItems:b4.map(a=>a.title).filter(Boolean),tenderRequirements:cm,requirementsSimilarity:cx,factTokenScopeClassifier:cz,professionalDepthClassifier:cA,agentWorkflow:b$,emitProgress:T,withProgressHeartbeat:V})}},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}}},87942:(a,b,c)=>{c.d(b,{x:()=>d});let d={version:"professional-document-workflow-v8",rules:["complete-local-knowledge-assumption","knowledge-coverage-recovery","fact-trace-placement","chapter-coverage-gate","structured-quality-report","post-repair-verification"]}}};