@customize-agent/server 4.23.9 → 4.23.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/BUILD_ID +1 -1
- package/.next/build-manifest.json +2 -2
- package/.next/prerender-manifest.json +3 -3
- package/.next/server/chunks/1001.js +11 -4
- package/.next/server/chunks/208.js +22 -22
- package/.next/server/chunks/5284.js +27 -43
- package/.next/server/chunks/6718.js +119 -0
- package/.next/server/chunks/8163.js +3 -9
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/pages/api/assets/generated/preview.js +1 -1
- package/.next/server/pages/api/assets/generated/preview.js.nft.json +1 -1
- package/.next/server/pages/api/assets/generated.js +1 -1
- package/.next/server/pages/api/assets/generated.js.nft.json +1 -1
- package/.next/server/pages/api/documents/export.js +1 -1
- package/.next/server/pages/api/documents/export.js.nft.json +1 -1
- package/.next/server/pages/api/documents/generate.js +2 -2
- package/.next/server/pages/api/documents/generate.js.nft.json +1 -1
- package/.next/server/pages/api/documents/generated/[id].js +1 -1
- package/.next/server/pages/api/documents/generated/[id].js.nft.json +1 -1
- package/.next/server/pages/api/documents/generated.js +1 -1
- package/.next/server/pages/api/documents/generated.js.nft.json +1 -1
- package/.next/server/pages/api/documents/templates.js +1 -1
- package/.next/server/pages/api/documents/templates.js.nft.json +1 -1
- package/.next/server/pages/asset-library.html +1 -1
- package/.next/server/pages/document-roles.html +1 -1
- package/.next/server/pages/documents.html +1 -1
- package/.next/server/pages/guide.html +1 -1
- package/.next/server/pages/index.html +1 -1
- package/.next/server/pages/knowledge/file-detail.html +1 -1
- package/.next/server/pages/knowledge/files.html +1 -1
- package/.next/server/pages/knowledge/manage.html +1 -1
- package/.next/server/pages/knowledge.html +1 -1
- package/.next/server/pages/models.html +1 -1
- package/.next/server/pages/overview.html +1 -1
- package/.next/server/pages/prompt.html +1 -1
- package/.next/server/pages/settings.html +1 -1
- package/.next/server/pages/system/logs.html +1 -1
- package/.next/server/pages/template-references.html +1 -1
- package/.next/server/pages-manifest.json +23 -24
- package/.next/static/{oyqlmOc4z7s7Z9TIXPQU1 → Uk8gerC9KKyci0tr575va}/_buildManifest.js +1 -1
- package/package.json +1 -1
- package/.next/server/chunks/2581.js +0 -126
- package/.next/server/pages/api/documents/chapter/regenerate.js +0 -1
- package/.next/server/pages/api/documents/chapter/regenerate.js.nft.json +0 -1
- /package/.next/static/{oyqlmOc4z7s7Z9TIXPQU1 → Uk8gerC9KKyci0tr575va}/_ssgManifest.js +0 -0
|
@@ -9,7 +9,7 @@ ${q}
|
|
|
9
9
|
|
|
10
10
|
资料:
|
|
11
11
|
${o}`,{signal:e,maxTokens:1800,temperature:0,diagnostics:f});return((0,n.Te)(e),s?.facts?.length)?{facts:s.facts.filter(a=>a.key&&a.value).map(a=>{let b=p.find(b=>b.id===a.fieldId||b.name===a.fieldName||b.name===a.key);return{key:b?.name||a.key,fieldId:b?.id||a.fieldId,fieldName:b?.name||a.fieldName,value:(0,n.lG)(a.value),sourceFile:a.sourceFile||"",roleId:a.roleId||"llm",processingType:a.processingType,confidence:a.confidence??.8,sourceRef:{filePath:a.sourceFile||"",roleId:a.roleId||"llm",processingType:a.processingType}}}),stages:[{type:"fact_extraction",roleId:"llm-json",status:"success",message:`LLM 按动态 schema 抽取 ${s.facts.length} 条事实`}]}:{facts:[],stages:g}}let B=["投标保证金的金额、收款账户名称、开户行与账号","电子投标文件加密方式与解密方式","开标时间、开标地点与开标程序","评标委员会组成与评标办法","招标人联系人、联系电话、邮箱与地址","投标文件递交方式与递交截止时间","空白表格填写说明与上传下载指引","公共资源交易平台监督管理部门"],C=/签章|盖章|联系人|联系电话|电话|邮箱|解密方式|开标时间|开标地点|评标办法|评标委员会|投标保证金|保证金账户|电子交易系统|空白|填写|上传|下载|递交方式|递交截止|公共资源交易监督管理|监管部门|开评标程序|采购范围|是否|符合/u;async function D(a,b,c=h.p4,d){let e=(b?.factFields.map(a=>a.name)||[...new Set(a.map(a=>a.fieldName||a.key))]).filter(a=>(function(a,b){let c=(0,h.oC)(b,a);return c?"single"===c.cardinality&&"ignore"!==c.conflictPolicy&&"allow_multiple"!==c.conflictPolicy:/项目名称|工程名称|招标人|建设地点|建筑面积|结构形式|层数|工期|质量标准|合同价格形式|绿色建筑等级|投标有效期|质保期|劳动力高峰|装配率|支护形式|创优奖惩/u.test(a)})(a,c)),f=[...new Set(a.map(a=>(0,n.lG)(a.value).trim()).filter(a=>C.test(a)))],g=await (0,o.Mv)(f,B,d),i=a=>B.some(b=>g(a,b)>=.6),j=[];for(let b of e){let d=a.filter(a=>a.key===b||a.fieldName===b||(0,h.oC)(c,a.fieldName||a.key)?.name===b),e=new Map;for(let a of d){let b=function(a,b,c){let d=(0,n.lG)(a).trim();if((0,h.d2)(b,d)||(0,h.rF)(b,d)||(d.match(/�|/gu)?.length||0)>=2||Array.from(d).some(a=>{let b=a.charCodeAt(0);return 65533===b||b<32&&9!==b&&10!==b&&13!==b})||/\|/u.test(d)||/^#+\s*/u.test(d)||/见(?:招标公告|投标人须知|前附表|本项目|补疑)|资料参数行摘要/u.test(d))return"";let e=d.match(/\d+\s*日历天/u)?.[0]?.replace(/\s+/gu,"");if(e&&/工期|日历天|开工日期|竣工/u.test(d))return e;let f=(0,k.K3)((0,n.lG)(d));return!f||f.length>80||!/[\d年月日%]|合格|一星|二星|三星|总价合同|单价合同|承台|框架|装配式/u.test(d)||C.test(d)&&c?.(d)?"":f}(a.value,c,i);b&&e.set(b,[...e.get(b)||[],a])}if(e.size>1){let a=[...e.values()].slice(0,4).map(a=>`${(0,n.lG)(a[0].value).slice(0,120)}(${[...new Set(a.map(a=>a.sourceFile))].slice(0,3).join("、")})`).join(" vs ");j.push(`事实冲突:${b} 存在多个来源值:${a}`)}}return j.slice(0,8)}function E(a){return(0,n.lG)(a).replace(/\s*[##]{1,6}\s*/gu,"")}function F(a){return(0,n.lG)(a).replace(/[\u00A0\u2002-\u200B\u3000]/gu," ").replace(/([\p{Script=Han}])\s+([\p{Script=Han}])/gu,"$1$2").replace(/(\d)\s+(日历天|天|个月|月|年|万元|元|㎡|平方米|米|m|mm|MPa|kPa|%)/giu,"$1$2").replace(/(合同|投资|工程|项目)\s*估\s*算\s*(?:价格|价)/gu,"$1估算价").replace(/计划\s*工\s*期/gu,"计划工期").replace(/合同\s*工\s*期/gu,"合同工期").replace(/质量\s*标\s*准/gu,"质量标准").replace(/建设\s*地\s*点/gu,"建设地点").replace(/建设\s*规\s*模/gu,"建设规模").replace(/招标\s*范\s*围/gu,"招标范围").replace(/最高\s*投\s*标\s*限\s*价/gu,"最高投标限价").replace(/招标\s*控\s*制\s*价/gu,"招标控制价").replace(/[::]\s*/gu,":").replace(/\s+/gu," ").trim()}let G=[{fieldId:"project_name",key:"项目名称",fieldName:"项目名称",pattern:/(?:项目名称|工程名称|招标项目名称)[::\s为是]+([^\n。;;]{2,120})/u},{fieldId:"project_code",key:"项目编号",fieldName:"项目编号",pattern:/(?:项目编号|招标项目编号|工程编号)[::\s为是]+([A-Za-z0-9\-_.()()]{4,80})/u},{fieldId:"owner",key:"招标人",fieldName:"招标人",pattern:/(?:招标人|建设单位|发包人)[::\s为是]+([^\n。;;]{2,120})/u},{fieldId:"project_location",key:"建设地点",fieldName:"建设地点",pattern:/建设地点[::\s为是]+([^\n。;;]{2,100})/u},{fieldId:"project_scale",key:"建设规模",fieldName:"建设规模",pattern:/建设规模[::\s为是]+([^\n。;;]{2,220})/u},{fieldId:"project_scale",key:"建设规模",fieldName:"建设规模",pattern:/(?:拟|计划|规划|目标|力争|预计|期望|远期|未来|设想|建议|预期|争取)[^,,。;;\n]{0,12}?(?<![地上地下])总?建筑面积(?:约|约为|约计|共计|为)?\s*[\d,,.]+\s*(?:㎡|m²|m2|平方米)|((?<![地上地下])总?建筑面积(?:约|约为|约计|共计|为)?\s*[\d,,.]+\s*(?:㎡|m²|m2|平方米))/u},{fieldId:"project_scope",key:"招标范围",fieldName:"招标范围",pattern:/招标范围[::\s为是]+([^\n。;;]{2,220})/u},{fieldId:"schedule_requirement",key:"计划工期",fieldName:"周期要求",pattern:/(?:(?:计划工期|合同工期|总工期)[::\s为是约]*|工期[::\s为是约]+)([^\n。;;]{0,40}?\d+(?:\.\d+)?\s*(?:日历天|天|个月|月|年)(?:[^\n。;;]{0,30})?)/u},{fieldId:"quality_standard",key:"质量标准",fieldName:"质量标准",pattern:/质量标准[::\s为是]+([^\n。;;]{1,60})/u},{fieldId:"project_investment_estimate",key:"合同估算价格",fieldName:"项目投资估算",pattern:/(?:合同估算价格|合同估算价|投资估算|估算价格|工程估算价|项目估算价|最高投标限价|招标控制价)[::\s为是约]+([^\n。;;]{0,80}?\d+(?:\.\d+)?\s*(?:万元|元))/u},{fieldId:"labor_peak",key:"劳动力高峰人数",fieldName:"劳动力高峰人数",pattern:/(?:劳动力|用工|作业人员|施工人员)[^。;;\n]{0,40}?(?:高峰|峰值)[^。;;\n]{0,20}?(\d+(?:\.\d+)?\s*人)/u},{fieldId:"labor_peak",key:"劳动力高峰人数",fieldName:"劳动力高峰人数",pattern:/(?:高峰(?:期)?(?:劳动力|用工|人数|作业人员)|高峰期人数)[^。;;\n]{0,20}?(\d+(?:\.\d+)?\s*人)/u},{fieldId:"assembly_rate",key:"装配率",fieldName:"装配率",pattern:/(?:装配率|装配式建筑占比|装配式比例|装配式建筑面积占比)[^。;;\n]{0,16}?(\d+(?:\.\d+)?\s*%)/u},{fieldId:"foundation_support_form",key:"基坑支护形式",fieldName:"基坑支护形式",pattern:/(?:基坑支护(?:形式|方式|方案)?|支护(?:形式|方式))[^。;;\n]{0,10}?(?:采用|为|:|:|\s)([^。;;\n]{2,60})/u},{fieldId:"award_clause",key:"创优奖惩条款",fieldName:"创优奖惩条款",pattern:/(?:创优(?:目标|奖惩)?|优质优价)[^。;;\n]{0,60}?(\d+(?:\.\d+)?\s*万元)/u},{fieldId:"award_clause",key:"创优奖惩条款",fieldName:"创优奖惩条款",pattern:/(?:确保|争创|力争|争获)?[\u4e00-\u9fa5]{2,6}[杯奖][^。;;\n]{0,60}?(\d+(?:\.\d+)?\s*万元)/u}];function H(a,b){let c=F((0,n.lG)(b));return!(!a||!c||c.length>260||/###|第\s*\d+\s*页|共\s*\d+\s*页|律师代理费|投标文件的编制|备选投标方案|投标将被否决|投标人提供|投标有效期|电子交易系统|公共资源交易监督管理部门|中标候选|评标委员会|实质性内容作出响应/u.test(c)||/签章|盖章|联系人|联系电话|电话|邮箱|解密|开标|评标|保证金|交易系统|空白|填写|上传|下载|递交/u.test(c))&&("schedule_requirement"===a?c.length<=90&&/\d+(?:\.\d+)?\s*(?:日历天|天|个月|月|年)/u.test(c)&&!/(?<=[日天])\s*[0-9]+(?:\.[0-9]+)?(?=[\s]*(?:招标|建设|质量|合同|项目|工程|资金|投标|开标|评标|付款|工期|开工|计划|计价|现场|资质|标段|[,,。;;]|$))/u.test(c):"quality_standard"===a?c.length<=40&&/合格|优良|一次性验收|国家.*验收|达到/u.test(c)&&!/工期|投标|技术标准|\d[..、]/u.test(c):"owner"===a?c.length>=4&&c.length<=80&&/公司|局|委员会|中心|处|院|所|校|集团|有限|股份|责任|管理/u.test(c)&&!/将报|监督管理部门|投标人|中标|负责解释|见招标|详见|空白|填写/u.test(c):"project_location"===a?c.length<=120&&!/见招标公告|详见|投标/u.test(c):"project_scope"===a?c.length<=220&&!/^[((]\s*\d+[))]/u.test(c)&&!/具备.{0,24}(?:证书|考核合格|安全生产考核)/u.test(c)&&!/^见(?:招标|投标人|前附)/u.test(c):"project_code"===a?/^[A-Za-z0-9\-_.()()]+$/u.test(c)&&c.length<=80&&!/\.\d+$/u.test(c):"project_scale"===a?c.length<=100&&/(?:m²|㎡|平方米|m2|km|米|公里|亩|公顷|栋|幢|座|处|户|层|个)/u.test(c)&&!/招标范围/u.test(c):"project_investment_estimate"===a?c.length<=100&&/\d+(?:\.\d+)?\s*(?:万元|元)/u.test(c):"labor_peak"===a?c.length<=40&&/\d+(?:\.\d+)?\s*人/u.test(c):"assembly_rate"===a?c.length<=20&&/\d+(?:\.\d+)?\s*%/u.test(c):"foundation_support_form"===a?c.length<=60&&/支护|放坡|锚|桩|喷|开挖|护坡/u.test(c):"award_clause"===a?c.length<=120&&/\d+(?:\.\d+)?\s*万元/u.test(c)&&!/评标|保证金/u.test(c):c.length<=220)}let I=/\||第\s*\d+\s*页|共\s*\d+\s*页|[##]{1,6}| 资料参数行摘要|(?<=[日天])\s*[0-9]+(?:\.[0-9]+)?(?=[\s]*(?:招标|建设|质量|合同|项目|工程|资金|投标|开标|评标|付款|工期|开工|计划|计价|现场|资质|标段|[0-9]{1,3}[.、.]|[,,。;;]|$))/u,J=/规模|范围|工期|周期|project_scope|project_scale/iu,K=/^[A-Za-z0-9\-_.()()]+$/u,L=/(?:招标项目编号|项目编号|工程编号|标段编号|合同编号|编号)[::为是]*([A-Za-z0-9][A-Za-z0-9\-_.()()]{3,79})/gu;function M(a,b,c){let d,e=[];for(let f of a){let a=(0,n.lG)(f.value).trim();if(!a)continue;let g=I.exec(a),h=a;g&&(h=a.slice(0,g.index).replace(/[\s::,,、;;\-—|]+$/u,"").trim());let i=h!==a;if(h.length<2){c.dropped+=1;continue}let j="project_code"===f.fieldId||/编号|代码/u.test(`${f.fieldName||""}${f.key||""}`);if(j&&!K.test(h)||h.length>120&&!J.test(`${f.fieldId||""} ${f.fieldName||""} ${f.key||""}`)){c.dropped+=1;continue}let k=!1;if(j&&h.length>=4){let a=[...(d||=function(a){let b=new Map;for(let c of a)for(let a of E((0,n.lG)(c.content)).replace(/\s+/gu,"").matchAll(L)){let c=a[1];c&&b.set(c,(b.get(c)||0)+1)}return b}(b)).entries()].filter(([a])=>a.length>=h.length+2&&a.startsWith(h)),c=a.sort((a,b)=>b[1]-a[1]||a[0].length-b[0].length)[0]?.[0];c&&(h=c,k=!0)}i&&(c.truncated+=1),k&&(c.repaired+=1),e.push(h===a?f:{...f,value:h})}return e}function N(a){let b={localFacts:(0,q.am)(function(a,b,c){let d=(0,j.Uy)(b,c),e=d.map(a=>({field:a,pattern:function(a){let b=a.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&"),c=/规模|scale|工期|周期/iu.test(a)?"[^。]{2,220}":"[^\n,。;;]+";return RegExp(`${b}[::\\s]+(${c})`,"u")}(a.name)})),f=d.map(a=>a.name).filter(Boolean),g=[];for(let b of a)for(let{field:a,pattern:c}of e){if(!(0,j.I2)(b,a))continue;let d=b.content.match(c),e=d?.[1]?.trim();if(!e)continue;e=(e=E(e).replace(/\s+/gu,"")).replace(/(?<=[日天])[0-9]+(?:\.[0-9]+)?(?=(?:招标范围|质量标准|建设规模|计划工期|合同估算|项目名称|项目编号|建设地点|招标人|资金来源|投标人资格|资质要求|开标|评标|付款|计价|现场条件|开工日期|合同工期|工期要求|[0-9]{1,3}[.、.]|[,,。;;]|$))/u,"");let i=f.filter(b=>b!==a.name).map(a=>e.indexOf(a)).filter(a=>a>0);i.length>0&&(e=e.slice(0,Math.min(...i))),!e||!(e.length<=220)||(0,h.rF)(h.p4,e)||(0,h.d2)(h.p4,e)||g.some(b=>b.fieldId===a.id&&b.value===e)||g.push({key:a.name,fieldId:a.id,fieldName:a.name,value:e,sourceFile:b.filePath,roleId:b.roleId||"unknown",processingType:b.processingType,confidence:b.score,sourceRef:{filePath:b.filePath,roleId:b.roleId||"unknown",processingType:b.processingType,sectionTitle:b.sectionTitle}})}return g}(a.evidence,a.template,a.spec),a.scope),projectBasicFacts:(0,q.am)(function(a){let b=[],c=new Set;for(let d of a)for(let a of E((0,n.lG)(d.content)).replace(/(\d)\s*\r?\n\s*(日历天|天|个月|月|年|万元|元|㎡|平方米|米|m|mm|MPa|kPa|%)/giu,"$1$2").replace(/([\d,,.]+(?:平方|立方|㎡|m²|m2|m)?)\s*\r?\n\s*(米|m|㎡|m2|m²)/gu,"$1$2").split(/\r?\n/u).flatMap(a=>{let b=F(a);return b.length>260?b.split(/(?=\d+(?:\.\d+)?\s*[^\s::]{2,12}[::])/u):[b]}).filter(Boolean))if(!/报价明细|综合单价|税率|增值税|利润|结算/u.test(a)||/合同估算价|合同估算价格|投资估算|最高投标限价|招标控制价/u.test(a))for(let e of G){let f=e.pattern.exec(a),g=f?.[1]?.trim();if(!g||!H(e.fieldId,g))continue;let h=`${d.filePath}:${e.fieldId}:${g}`;c.has(h)||(c.add(h),b.push({key:e.key,fieldName:e.fieldName,fieldId:e.fieldId,value:g,sourceFile:d.filePath,roleId:d.roleId||"project_basic_fact",processingType:d.processingType||"reference",confidence:Math.max(.82,d.score||.82),sourceRef:{filePath:d.filePath,roleId:d.roleId||"project_basic_fact",processingType:d.processingType||"reference",sectionTitle:d.sectionTitle}}))}return b.slice(0,80)}(a.evidence),a.scope),preciseFacts:(0,q.am)(function(a,b=h.p4){let c=[],d=new Set;for(let e of a){let a=`${e.roleId||""} ${e.processingType||""} ${e.filePath} ${e.sectionTitle||""}`;if(!/structured_data|\bdraw(?:ing)?\b|\btable\b|\bbill\b|\bboq\b|\bsheet\b|\bspec\b|\bstandard\b|\brecord\b|\breport\b|表格|数据|规格|参数|标准|记录|报告|清单|图纸|说明/u.test(a)&&e.score<.75)continue;let f=(0,n.lG)(e.content).replace(/\s+/gu," ");for(let a of f.matchAll(m._W)){let g=a[0].trim();if(!g||(0,h.rF)(b,g))continue;let i=Math.max(0,(a.index||0)-40),j=Math.min(f.length,(a.index||0)+g.length+40),k=f.slice(i,j);if((0,h.d2)(b,k)||(0,h.E1)(b,k))continue;let l=`${e.filePath}:${g}`;d.has(l)||(d.add(l),c.push({key:"精确参数",fieldName:"技术参数",fieldId:"technical_parameter",value:g,sourceFile:e.filePath,roleId:e.roleId||"precise_fact",processingType:e.processingType||"precise",confidence:Math.max(.7,e.score||.7),sourceRef:{filePath:e.filePath,roleId:e.roleId||"precise_fact",processingType:e.processingType||"precise",sectionTitle:e.sectionTitle}}))}}return c.slice(0,240)}(a.evidence,a.profile||h.p4),a.scope),structuredTables:(0,q.am)(u(a.evidence),a.scope)},c={truncated:0,dropped:0,repaired:0};if(b.localFacts=M(b.localFacts,a.evidence,c),b.projectBasicFacts=M(b.projectBasicFacts,a.evidence,c),b.preciseFacts=M(b.preciseFacts,a.evidence,c),a.diagnostics&&(c.truncated>0||c.dropped>0||c.repaired>0)){let b=a.diagnostics.factSanitize||={truncated:0,dropped:0,repaired:0};b.truncated+=c.truncated,b.dropped+=c.dropped,b.repaired+=c.repaired}return{...b,factSanitize:c}}function O(a){return`${a.key} ${a.fieldName||""} ${a.value} ${a.roleId} ${a.processingType||""} ${a.sourceFile}`}function P(a){return/合同估算价|合同估算价格|投资估算|估算价格|工程估算价|项目估算价|最高投标限价|招标控制价/u.test(a)}function Q(a){let b=O(a);return!P(b)&&/投标保证金|发票类型|开标时间|公共资源交易监督管理|不良行为记录|投诉举报|资质投诉|投标承诺|违约金|中标服务费|交易平台|保证金账户|投标有效期|报价明细|投标报价|单价|合价|税率|增值税|利润|结算/u.test(b)}function R(a){return(0,n.lG)(a).replace(/\s+/gu," ").trim()}function S(a,b=[]){return[...new Set([a,...b,...a.split(/[\s、,。;;::/\\_-]+/u)].map(R).filter(a=>a.length>=2))]}function T(a,b,c){var d,e;let f=R(c.label);if(!f||(0,h.rF)(b,f)||(0,h.d2)(b,f))return;let g=c.id||(d=c.source,e=c.fieldId,`${d}:${e||f}`.toLowerCase().replace(/[^\p{L}\p{N}]+/gu,"-").replace(/^-|-$/gu,"")||`${d}-${Math.random().toString(36).slice(2,8)}`),i=c.queries?.length?c.queries.map(R).filter(Boolean):S(f),j=a.find(a=>a.id===g||a.label===f);if(j){j.required=j.required||c.required,j.queries=[...new Set([...j.queries,...i])];return}a.push({...c,id:g,label:f,queries:i})}function U(a,b,c,d,e,f=[]){"do_not_use"!==c.usagePolicy&&"diagnostic_only"!==c.usagePolicy&&"forbidden"!==c.derivationPolicy&&T(a,b,{label:c.name,category:c.category,required:e,source:d,fieldId:c.id,queries:S(c.name,[...c.aliases,...f])})}function V(a){let b=a.profile||h.p4,c=[],d=[a.template.name,a.template.outputTitle,a.chapter.title,a.chapter.purpose,...a.chapter.sections||[],...a.chapter.requiredFacts||[]].filter(Boolean).join(" "),e=a.spec?.chapterRules.find(b=>b.id===a.chapter.id||b.title===a.chapter.title);for(let d of a.chapter.requiredFacts||[])T(c,b,{label:d,category:(0,h.oC)(b,d)?.category||"required",required:!0,source:"template"});for(let d of a.chapter.sections||[])T(c,b,{label:d,category:"section",required:!1,source:"section",queries:S(d,[a.chapter.title])});for(let d of a.plan?.requiredContents||[])T(c,b,{label:d,category:(0,h.oC)(b,d)?.category||"plan",required:!0,source:"plan"});for(let d of a.plan?.evidenceNeeds||[])T(c,b,{label:d,category:(0,h.oC)(b,d)?.category||"plan",required:!0,source:"plan"});for(let d of e?.requiredFactIds||[]){let e=a.spec?.factFields.find(a=>a.id===d);e&&T(c,b,{label:e.name,category:(0,h.oC)(b,e.name)?.category||"spec",required:!0,source:"spec",fieldId:e.id,queries:S(e.name,[e.extractionHint||"",e.validationHint||""])})}for(let e of a.spec?.factFields||[]){if(!e.required)continue;let f=(0,h.oC)(b,e.name),g=`${e.name} ${e.extractionHint||""} ${e.validationHint||""}`;(d.includes(e.name)||S(e.name,f?.aliases||[]).some(a=>d.includes(a))||a.chapter.requiredFacts.some(a=>a.includes(e.name)||e.name.includes(a)))&&T(c,b,{label:e.name,category:f?.category||"spec",required:!0,source:"spec",fieldId:e.id,queries:S(e.name,[g])})}for(let a of b.factFields)[a.name,...a.aliases].some(a=>a.length>=2&&d.includes(a))&&U(c,b,a,"profile","must_use"===a.usagePolicy,[d]);let f=R(a.requirement||"");if(f)for(let a of b.factFields)[a.name,...a.aliases].some(a=>a.length>=2&&f.includes(a))&&U(c,b,a,"requirement",!0,[f]);let g=R(a.promptTexts||"");if(g)for(let d of b.factFields)[d.name,...d.aliases].some(a=>a.length>=2&&g.includes(a))&&U(c,b,d,"prompt","must_use"===d.usagePolicy,[a.chapter.title]);return c}function W(a){let b=new Set;return a.filter(a=>{let c=`${a.sourceFile}:${a.key}:${a.value}`;return!b.has(c)&&(b.add(c),!0)})}function X(a){let b=a.profile||h.p4,c=a.excludedEvidenceKeys,d=W([...a.factsModel.factIndex.parameterFacts,...a.factsModel.billItemFacts||[],...a.factsModel.factIndex.billFacts,...a.factsModel.factIndex.tableFacts,...a.factsModel.factIndex.drawingFacts,...a.factsModel.factIndex.reliableFacts]);return a.needs.map(e=>{let f=a=>"bill_of_quantities"===a.processingType||"structured_data"===a.processingType||/bill|boq|清单/u.test(O(a))?.05:0,g=W(d.filter(a=>(function(a,b,c){let d=O(a);if(Q(a)||(0,h.rF)(c,d)||(0,h.d2)(c,d))return!1;if(b.fieldId&&a.fieldId===b.fieldId||(0,h.oC)(c,a.fieldName||a.key)?.id===b.fieldId||b.queries.filter(a=>a.length>=2).some(a=>d.includes(a)))return!0;let e=(0,h.oC)(c,b.label);return!!(e&&[e.name,...e.aliases].some(a=>a.length>=2&&d.includes(a)))})(a,e,b))).sort((a,b)=>(b.confidence||0)+f(b)-((a.confidence||0)+f(a))),i=(a.evidence||[]).filter(a=>!c?.has((0,p.hM)(a))&&function(a,b,c){let d=`${a.filePath} ${a.roleId||""} ${a.processingType||""} ${a.sectionTitle||""} ${a.content}`;return!((0,h.rF)(c,d)||(0,h.d2)(c,d))&&b.queries.some(a=>a.length>=2&&d.includes(a))}(a,e,b)),j=Math.max(0,...g.map(a=>a.confidence||0)),k=0===g.length&&0===i.length?"missing":j>0&&j<.58?"low_confidence":"satisfied";return{need:e,facts:g,evidence:i,status:k}})}function Y(a){return W(a.flatMap(a=>a.facts))}function Z(a){let b=a.map(a=>{let b=a.facts.filter((a,b,c)=>c.findIndex(b=>(0,n.lG)(b.value)===(0,n.lG)(a.value))===b).slice(0,5).map(b=>`${b.key||b.fieldName||a.need.label}=${$(b.value)}${b.sourceFile?`(${e.basename(b.sourceFile)})`:""}`),c=a.facts.length?[]:(a.evidence||[]).slice(0,2).map(a=>`证据片段:${$(a.content).slice(0,160)}${a.filePath?`(${e.basename(a.filePath)})`:""}`);return`- ${a.need.required?"必须":"相关"}|${a.need.label}|${a.status}${b.length||c.length?`:${[...b,...c].join(";")}`:":未在已解析资料中确认"}`});return b.length?`事实需求覆盖卡片:
|
|
12
|
-
${b.join("\n")}`:""}function $(a){return(0,n.lG)(a).replace(/\s+/gu," ").trim().slice(0,220)}let _=/[\u3400-\u4DBF\u{20000}-\u{3FFFF}]/gu,aa=/(?:R\d+C\d+|COL\d+|第\d+行第\d+列)/giu;function ab(a){let b=a.match(/([\u4e00-\u9fa5]{2,8}?(?:镇|乡|县|市|区|街道|村))/u);return b?.[1]}function ac(a,b){for(let c of a.matchAll(/([\u4e00-\u9fa5]{2,8}?(?:镇|乡|县|市|区|街道|村))[^。;;\n]{0,24}?(?:项目|工程)/gu))if(c[1]!==b)return!0;return!1}function ad(a){let b=`${a.key||""}${a.fieldName||""}${a.fieldId||""}`,c=F((0,n.lG)(a.value)).trim();if(!c)return a;if(/项目名称|工程名称|project_name/u.test(b)){if(C.test(c))return a;let b=c.replace(/^(?:项目|工程)名称[::]\s*/u,"").trim();if(!(/项目|工程/u.test(b)&&!/(?:[||]|序号|合计|金额|第\d*页|共\d*页)/u.test(b)&&b.length>=3&&b.length<=80))return{...a,value:""}}if(/招标人|建设单位|发包人|tenderee/u.test(b)){if(aa.test(c))return a;let b=c.replace(/^招标人[::]\s*/u,"").trim();if(!(/(?:政府|公司|局|委员会|集团|学院|大学|中心|研究院|设计院|事务所|管理处|指挥部|医院|学校|村委会|居委会)(?:[((][^))]*[))])?$/u.test(b)&&b.length<=60))return{...a,value:""}}return a}async function ae(a,b=[],c=[],d,e=h.p4){a=function(a){let b=a.filter(a=>!function(a){let b=(0,n.lG)(a.value);if(!b)return!1;let c=[...b.matchAll(_)].length;if(c>0){let a=[...b.matchAll(/[\u3400-\u4DBF\u4E00-\u9FFF\u{20000}-\u{3FFFF}]/gu)].length;if(b.length<=40||a>0&&c/a>=.2)return!0}return!!aa.test(b)&&!!(b.replace(aa,"").trim().length<=24)}(a)).map(ad).filter(a=>(0,n.lG)(a.value).trim().length>0),c=b.find(a=>("项目名称"===a.key||"project_name"===a.fieldId)&&(0,n.lG)(a.value).trim().length>=6),d=c?F((0,n.lG)(c.value)).trim():"",e=d?ab(d):void 0;return e?b.map(a=>{let b=`${a.key||""}${a.fieldName||""}${a.fieldId||""}`,c=F((0,n.lG)(a.value)).trim();if(!c)return a;if(/招标范围|施工范围/u.test(b)){let b=c.split(/[。;;\n]/u).map(a=>a.trim()).filter(Boolean);if(b.length<=1)return ac(c,e)?{...a,value:""}:a;let d=b.filter(a=>!ac(a,e));return 0===d.length?{...a,value:""}:{...a,value:d.join(";")}}return/项目名称候选|项目名称|工程名称/u.test(b)&&ac(c,e)?{...a,value:""}:a}).filter(a=>(0,n.lG)(a.value).trim().length>0):b}(a);let f=b=>a.filter(a=>b.some(b=>`${a.key} ${a.fieldName||""}`.includes(b))),g=b=>a.filter(a=>a.processingType===b||a.roleId.includes(b)),i=a.filter(a=>{let b=`${a.key} ${a.fieldName||""} ${a.value}`;return m.sv.test(b)&&(!(0,h.rF)(e,b)||P(b))&&!(0,h.d2)(e,b)}),j=a.filter(a=>"table"===a.processingType||"structured_data"===a.processingType||"bill_of_quantities"===a.processingType||/bill|boq|table|sheet|data|表格|列表|明细|数据/u.test(`${a.roleId} ${a.sourceFile}`)),k=v(b).slice(0,600),l=function(a){let b={},c=(a,c,d,e,f)=>{if(!a||!d)return;let g=d.replace(/[,,。\s]+$/u,"").slice(0,40),h=b[a]||=[];h.some(a=>a.location===c&&a.spec===g)||h.push({location:c,spec:g,quantity:e||void 0,sourceFile:f})};for(let b of a){let a=(b.key||"").replace(/^清单条目:/u,"");if(!a)continue;let d=(0,n.lG)(b.value),e=/|工程量:(.+)$/u.exec(d)?.[1]??"",f=d.replace(/|工程量:.+$/u,""),g=function(a){let b=[];for(let c of a.split(/[;;]/u)){let a=c.replace(/^\s*\d+[.、]\s*/u,"").trim(),d=a.search(/[::]/u);if(d>0){let c=a.slice(0,d).trim(),e=a.slice(d+1).trim();c.length>=2&&c.length<=20&&e&&b.push({label:c,value:e})}}return b}(f),h=!1;for(let{label:d,value:f}of g){if(w.some(a=>d.includes(a))){h=!0,c(d,a,f,e,b.sourceFile);continue}let g=f.match(x)?.[0];g&&g!==f&&c(y(g),a,g,e,b.sourceFile)}if(!h)for(let d of f.match(x)||[])c(y(d),a,d,e,b.sourceFile)}return b}(k),o=(function(a){let b=[];for(let c of a){let a=`${c.key||""}${c.fieldName||""}${c.fieldId||""}`,d=(0,n.lG)(c.value);if(/建设规模/u.test(a)&&/占地|用地/u.test(d)&&/建筑面积/u.test(d)){let a=d.search(/(?:总)?占地/u),e=d.search(/(?:单体)?总?建筑面积/u);if(a>=0&&e>a){let f=d.slice(a,e).replace(/^[,,、\s]+/u,"").replace(/[,,、\s]+$/u,"").trim(),g=d.slice(e).trim();if(f&&g){b.push({...c,key:"总占地面积",fieldName:"总占地面积",fieldId:void 0,value:f}),b.push({...c,key:"单体建筑面积",fieldName:"单体建筑面积",value:g});continue}}}b.push(c)}return b})(a.filter(a=>/项目名称|工程名称|项目编号|招标项目编号|招标人|建设单位|发包人|建设地点|建设规模|招标范围|计划工期|合同工期|周期要求|质量标准|合同估算|投资估算|最高投标限价|招标控制价/u.test(`${a.key||""}${a.fieldName||""}${a.fieldId||""}`))).slice(0,80),p=function(a,b,c,d){let e=a.filter(a=>(0,h.d2)(d,O(a))||(0,h.E1)(d,O(a))),f=a.filter(a=>{let b=O(a);return a.confidence>=.58&&!Q(a)&&!(0,h.rF)(d,b)&&!(0,h.d2)(d,b)&&!(0,h.E1)(d,b)}),g=[...b.filter(a=>!Q(a)),...f.filter(a=>m.sv.test(O(a)))].filter((a,b,c)=>c.findIndex(b=>b.sourceFile===a.sourceFile&&b.value===a.value&&b.key===a.key)===b).slice(0,360),i=f.filter(a=>"table"===a.processingType||/table|sheet|表格|清单|明细|数据|参数行摘要/u.test(O(a))),j=f.filter(a=>"drawing"===a.processingType||/drawing|dwg|图纸|施工图|设计图|平面图|剖面图|大样图|详图/u.test(O(a)));return{reliableFacts:f.slice(0,500),parameterFacts:g,tableFacts:i.slice(0,240),drawingFacts:j.slice(0,240),billFacts:c.slice(0,240),diagnostics:e.slice(0,120)}}(a,i,j,e);return{project:o,schedule:f(["工期","开工","竣工","节点","周期"]),quality:f(["质量","验收"]),safety:f(["安全","风险"]),resources:f(["劳动力","材料","机械","设备","资源"]),tables:b,drawings:g("drawing"),bills:j,preciseFacts:i,rules:g("rule"),specifications:g("specification"),schemaFacts:function(a,b){let c={};for(let d of b?.factFields||[])c[d.id]=a.filter(a=>a.fieldId===d.id||a.key===d.name||a.fieldName===d.name);return c}(a,d),factIndex:p,billItemFacts:k,specAuthorityMap:l,missing:[...new Set(c)],conflicts:await D(a,d,e)}}},1358:(a,b,c)=>{c.d(b,{JV:()=>k,O7:()=>h,QP:()=>l,SR:()=>g,c$:()=>j,e$:()=>i,rj:()=>f,sl:()=>r});var d=c(22157);function e(a){return a.replace(/[\s,,.。::;;||()()《》<>【】"“”'‘’]/gu,"").toLowerCase()}function f(a){let b=a.replace(/[||]\s*(?:[||]\s*)+$/gu,"").replace(/(?:[。;;]|\d+\s*[..、])\s*(?:未尽事宜|其余(?:未尽)?事宜|其他(?:未尽)?事宜|注\s*[::]).*$/u,"").trim();return b=b.replace(/[、,,;;]+\s*$/u,"").trim(),/[||]/u.test(b)&&(b=b.split(/[||]/u)[0]?.trim()||b),b}function g(a){return!(/^(?:见|详见|按|执行|参见|依据).{0,16}(?:前附表|招标公告|招标文件|合同|协议书|通用条款|专用条款|图纸|清单|附件|资料)$/u.test(a)||/(?:^|[::]\s*)(?:见|详见|按|执行|参见|依据)[^。;;]{0,18}(?:前附表|招标公告|招标文件|合同|协议书|通用条款|专用条款|图纸|清单|附件|资料|补疑|答疑)[^。;;]{0,6}$/u.test(a)||/^见.{0,24}(?:招标范围|招标补疑|补疑|前附表|答疑)/u.test(a)||/^(?:合同协议书|通用条款|专用条款|招标文件|招标公告|投标人须知前附表|附件|资料)$/u.test(a.replace(/[()()\d一二三四五六七八九十、..\s]/gu,""))||/^(?:工程名称|项目名称|建设地点|建设规模|计划工期|质量标准|招标范围|合同估算价|工程概况|项目概况|项目内容)$/u.test(a)||/\|/u.test(a)||/^#+\s*/u.test(a)||/^[一二三四五六七八九十]+[、..]\s*\S{2,}[::]/u.test(a)||/^[((]\s*\d+[))]/u.test(a)&&/具备|证书|考核|资格|人员/u.test(a))&&(!(a.length<4)||!!/\d/u.test(a))}function h(a){let b=String(a.value||"").trim(),c=`${a.label}${b}`;return!(!/项目|工程|编号|地点|规模|范围|工期|质量|安全|资源|材料|设备|验收|\d/u.test(c)||!g(b)||/^(?:技术参数|精确参数)$/u.test(a.label))}function i(a,b){let c=new Set,g=[];for(let h of[...b.project,...b.schedule,...b.quality,...b.safety,...b.resources,...b.preciseFacts,...b.bills,...b.drawings,...b.rules,...b.specifications]){let b=f((0,d.lG)(h.value).replace(/\s+/gu," ").trim()),i=h.fieldName||h.key||h.fieldId||"资料事实",j=`${i}:${b}`;!b||c.has(j)||(c.add(j),g.push({label:i,value:b,sourceFile:h.sourceFile,status:!function(a,b){let c=e(a),d=e(b);if(!d||d.length<2||c.includes(d))return!0;{let a=b.split(/[;;。\n]|、|,|,/u).map(a=>e(a.replace(/^\s*\d+\s*[、..]\s*/u,""))).filter(a=>a.length>=4);if(a.length>=2&&a.some(a=>c.includes(a)))return!0}{let a=b.replace(/[、,,;;||\s]+/gu,"、").split("、").map(a=>e(a.replace(/(?:工程|项目|改造|维修|安装|施工|内容|资料|要求|标准)+$/u,""))).filter(a=>a.length>=2);if(a.length>=1&&(a.length>=2||(a[0]?.length??0)>=3)&&a.every(a=>c.includes(a)))return!0}return(b.match(/\d+(?:\.\d+)?\s*(?:日历天|天|个月|月|年|万元|元|平方米|㎡|m²|立方米|m³|米|m|mm|cm|台|套|人|项|%|MPa|kPa|个|栋|层|标段|批|处|座|组|道|根|樘|扇)?/giu)||[]).some(a=>e(a).length>=2&&c.includes(e(a)))}(a,b)?"unplaced":"used",confidence:h.confidence}))}return g}function j(a,b={}){let c=a.filter(a=>"unplaced"===a.status&&h(a)),d=b.maxIssues&&b.maxIssues>0?b.maxIssues:c.length;return c.slice(0,d).map(a=>({level:"warning",message:`已确认知识库事实未落位:${a.label}=${a.value}`,suggestion:`请将该事实落位到对应章节,并保持来源 ${a.sourceFile||"结构化事实主表"} 的原始口径。${c.length>d?`(共${c.length}个未落位事实,此处显示前${d}个)`:""}`}))}function k(a,b){let c=b.tables||[],d=[],f=e(a);for(let a of c){let b=a.headers.map(a=>a.replace(/\s+/gu,"").toLowerCase()),c=b.findIndex(a=>/项目名称|名称|清单项|分部分项|项目特征|工程内容|材料名称|设备名称/u.test(a)),g=b.findIndex(a=>/编码|编号|序号|项目编码/u.test(a)),h=b.findIndex(a=>/数量|工程量/u.test(a)),i=b.findIndex(a=>/单位/u.test(a));for(let b of a.rows){let j=c>=0&&b[c]||"",k=g>=0&&b[g]||"";if(!j&&!k){let a=b.findIndex(a=>/^\d{10,12}$/u.test(a)||/^[A-Z]{1,3}\d{8,}$/u.test(a));a>=0&&(k=b[a]||"",j=b[a+1]||"")}let l=h>=0&&b[h]||"",m=i>=0&&b[i]||"";if(!j&&!k)continue;let n=e(j),o=e(k),p=n.length>=3&&f.includes(n.slice(0,12))||o.length>=3&&f.includes(o.slice(0,8));d.push({itemCode:k.slice(0,50),itemName:j.slice(0,200),quantity:l.slice(0,50),unit:m.slice(0,20),sourceFile:a.sourceFile||"",placed:p})}}return d.sort((a,b)=>a.placed===b.placed?0:a.placed?1:-1)}function l(a,b={}){let c=a.filter(a=>!a.placed);if(0===c.length)return[];let d=a.length,e=(d-c.length)/d,f=[];return e<.3?f.push({level:"warning",message:`BOQ 清单行级落位严重不足:${d-c.length}/${d} 行(${Math.round(100*e)}%)`,suggestion:`清单明细数量较大,建议优先补充主要分部分项、关键规格和大额工程量。未落位清单项示例:${c.slice(0,5).map(a=>`${a.itemName} ${a.quantity}${a.unit}`).join(";")}`}):e<.6&&f.push({level:"warning",message:`BOQ 清单行级落位不足:${d-c.length}/${d} 行(${Math.round(100*e)}%)`,suggestion:`建议补充落位:${c.slice(0,5).map(a=>a.itemName).join("、")}`}),f}let m=/公厕|厕所|过路涵|涵洞|涵管|污水|排水沟|水沟|清淤|沟塘|小菜园|菜园|菜地|花池|树池|挡墙|护栏|路灯|检查井|化粪池|泵站|生态池|生态塘|护坡|驳岸|栈道|步道|管网|管道|道路|铺装|绿化|景观|基础|结构|防水|屋面|外墙|内墙|地面|门窗|栏杆|电梯|电气|给水|排水|消防|通风|空调|智能化|幕墙|基坑/u,n=/^(?:管网|管道|道路|铺装|绿化|景观|基础|结构|防水|屋面|外墙|内墙|地面|门窗|栏杆|电梯|电气|给水|排水|消防|通风|空调|智能化|幕墙|基坑)$/u,o={公厕:["公共厕所","厕所"],厕所:["公厕","公共厕所"],菜地:["菜园","小菜园"],菜园:["菜地"],小菜园:["菜地"]},p=/^(?:挖|回填|运|运输|拆除|清理|浇筑|绑扎|安装|铺设|砌筑|抹灰|刷|喷|摊铺|碾压|夯实|整平|找平|支模|搭设|检测|试验|防腐|除锈)/u,q=/计价|费用|税金|规费|暂列|暂估|合计|汇总|小计|措施项目|其他项目|税金项目/u;function r(a,b,c){if(0===(c.tables||[]).length)return[];let d=b.filter(a=>/施工方法|施工方案|施工工艺|主要施工内容|分部分项/u.test(a.title)),f=d.map(a=>a.content||"").join("\n");if(!f)return[];let g=e(f),h=k(a,c),i=[],j=new Set;for(let a of h){let b=(a.itemName||"").trim();if(!b||q.test(b)||p.test(b))continue;let c=[...b.matchAll(RegExp(m.source,"gu"))].map(a=>a[0]);if(0===c.length)continue;let d=c.filter(a=>!n.test(a));if(0===d.length)continue;let f=a=>g.includes(e(a))||(o[a]||[]).some(a=>g.includes(e(a)));if(d.some(f))continue;let h=b.slice(0,12);j.has(h)||(j.add(h),i.push(`${b.slice(0,30)}${a.quantity?` ${a.quantity}${a.unit}`:""}`))}return 0===i.length?[]:[{level:"error",severity:"blocker",category:"evidence_coverage",owner:"llm",repairability:"llm_repairable",chapterId:d[0]?.id,message:`施工方法章分项覆盖缺失:${i.slice(0,6).join(";")}${i.length>6?` 等共 ${i.length} 个清单分项`:""}`,suggestion:"施工方法章必须逐项覆盖工程量清单中的全部分部分项(含公厕/过路涵/污水管网/排水沟/沟塘清淤/小菜园等专项分项):为每个缺失分项补齐施工方法小节(施工概况/施工流程/施工方法三要素齐全),禁止只写道路、铺装、绿化等大类而遗漏清单独有分项。"}]}},22213:(a,b,c)=>{c.d(b,{Bk:()=>w,DD:()=>h,Dz:()=>t,Ep:()=>v,I6:()=>z,KJ:()=>H,Uz:()=>K,YK:()=>A,ab:()=>C,ap:()=>L,eB:()=>B,eK:()=>F,eL:()=>q,ev:()=>G,h$:()=>l,hf:()=>J,iA:()=>y,qj:()=>D,sE:()=>i,sh:()=>x,uV:()=>M,xu:()=>r,y7:()=>E,zJ:()=>I});var d=c(70933),e=c(1218);c(70208);var f=c(22157),g=c(3063);function h(a){return a.replace(/^#{3,4}\s+.*\n+/u,"").trim()}function i(a,b){let c=a.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&"),d=b.match(RegExp(`^#{3,4}\\s+(?:\\d+(?:\\.\\d+)*\\s+)?${c}\\s*\\n([\\s\\S]*?)(?=^###\\s+|^##\\s+|(?![\\s\\S]))`,"mu"));return d?d[0]:b}function j(a){let b=new Set;for(let c of a.match(/[\u4e00-\u9fa5]{2,}/gu)||[]){if(2===c.length){b.add(c);continue}for(let a=0;a<=c.length-2;a+=1)b.add(c.slice(a,a+2))}return b}let k=new Set(["采用","安装","控制","检测","检查","验收","记录","施工","要求","完成","进行","实测","形成","复核","处理","保护","清理","准备","组织","安全","质量","部位","范围","内容","工作","项目","工程","材料","设备","分别","规范","图纸","设计","依据","确认","资料","技术","文件","标准","合格","偏差","允许","符合","确保","防止","严禁","不得","统一","配备","设置","使用","作业","过程","移交","闭环","整改","问题","发现","及时","后续","工序","环节","位置","高度","间距","严格","必须","所有","相关","执行","落实","到位","同步","相应","重点","加强","管理","隐蔽","报告","签字","填写","留置","保养","维修"]);function l(a){let b=a.match(/^#{3,4}\s+(?:\d+(?:\.\d+)*\s+)?(?:项目主要施工\s*内容|主要施工\s*内容)\s*\n([\s\S]*?)(?=^###\s+|^##\s+|(?!(\s|\S)))/mu);if(!b)return a;let c=b[0],d=c.indexOf("\n"),e=c.slice(d+1).split(/^(?=####\s+)/mu),f=[];for(let a of e){let b=a.match(/^####\s+(.+?)\s*\n([\s\S]*)$/u);if(!b)continue;let c=b[1].trim(),d=c.replace(/^\d+\.\d+\.\d+\s*/u,""),e=b[2].split(/(?=施工概况|施工流程|施工方法)/u).filter(Boolean).map(a=>j(a.replace(/^施工(?:概况|流程|方法)[::]?/u,"")));f.push({title:c,cleanTitle:d,body:b[2],isWorkPackage:/工作包\s*$/u.test(d),titleGrams:j(d),segGrams:e})}let g=f.filter(a=>a.isWorkPackage),h=f.filter(a=>!a.isWorkPackage);if(0===g.length||0===h.length)return a;let i=new Set;for(let a of g){let b,c=0;for(let d of h){if(i.has(d))continue;let e=function(a,b){let c=0;for(let d of a)b.has(d)&&(c+=1);return c}(a.titleGrams,d.titleGrams);if(e<2)continue;let f=Array.from({length:Math.min(a.segGrams.length,d.segGrams.length)},(b,c)=>(function(a,b){let c=0;for(let d of a)!k.has(d)&&b.has(d)&&(c+=1);return c})(a.segGrams[c],d.segGrams[c])).filter(a=>a>=4).length;if(f<2)continue;let g=e+2*f;g>c&&(c=g,b=d)}if(!b)continue;let d=b,e=a=>a.replace(/平方米/gu,"m2").replace(/m²|㎡/gu,"m2").replace(/立方米/gu,"m3").replace(/m³/gu,"m3").replace(/毫米/gu,"mm").replace(/\s+/gu,""),f=e(d.body),g=/\d+(?:\.\d+)?(?:平方米|立方米|毫米|m2|m3|mm|㎡|m²|m³|米|台|套|个|座|根|扇|樘|块|件|组|吨|kg|t|%)/gu,j=a=>{let b=a.match(g);return!!b&&0!==b.length&&b.every(a=>f.includes(e(a)))},l=[];for(let b of a.body.split(/[。;,,\n]/u).map(a=>a.trim()).filter(Boolean)){if(!/\d/u.test(b))continue;let a=b.replace(/^施工(?:概况|流程|方法)[::]?/u,"").trim();a&&(j(a)||l.push(a))}l.length>0&&(d.body=`${d.body.trimEnd()}${l.join("。")}。
|
|
12
|
+
${b.join("\n")}`:""}function $(a){return(0,n.lG)(a).replace(/\s+/gu," ").trim().slice(0,220)}let _=/[\u3400-\u4DBF\u{20000}-\u{3FFFF}]/gu,aa=/(?:R\d+C\d+|COL\d+|第\d+行第\d+列)/giu;function ab(a){let b=a.match(/([\u4e00-\u9fa5]{2,8}?(?:镇|乡|县|市|区|街道|村))/u);return b?.[1]}function ac(a,b){for(let c of a.matchAll(/([\u4e00-\u9fa5]{2,8}?(?:镇|乡|县|市|区|街道|村))[^。;;\n]{0,24}?(?:项目|工程)/gu))if(c[1]!==b)return!0;return!1}function ad(a){let b=`${a.key||""}${a.fieldName||""}${a.fieldId||""}`,c=F((0,n.lG)(a.value)).trim();if(!c)return a;if(/项目名称|工程名称|project_name/u.test(b)){if(C.test(c))return a;let b=c.replace(/^(?:项目|工程)名称[::]\s*/u,"").trim();if(!(/项目|工程/u.test(b)&&!/(?:[||]|序号|合计|金额|第\d*页|共\d*页)/u.test(b)&&b.length>=3&&b.length<=80))return{...a,value:""}}if(/招标人|建设单位|发包人|tenderee/u.test(b)){if(aa.test(c))return a;let b=c.replace(/^招标人[::]\s*/u,"").trim();if(!(/(?:政府|公司|局|委员会|集团|学院|大学|中心|研究院|设计院|事务所|管理处|指挥部|医院|学校|村委会|居委会)(?:[((][^))]*[))])?$/u.test(b)&&b.length<=60))return{...a,value:""}}return a}async function ae(a,b=[],c=[],d,e=h.p4){a=function(a){let b=a.filter(a=>!function(a){let b=(0,n.lG)(a.value);if(!b)return!1;let c=[...b.matchAll(_)].length;if(c>0){let a=[...b.matchAll(/[\u3400-\u4DBF\u4E00-\u9FFF\u{20000}-\u{3FFFF}]/gu)].length;if(b.length<=40||a>0&&c/a>=.2)return!0}return!!aa.test(b)&&!!(b.replace(aa,"").trim().length<=24)}(a)).map(ad).filter(a=>(0,n.lG)(a.value).trim().length>0),c=b.find(a=>("项目名称"===a.key||"project_name"===a.fieldId)&&(0,n.lG)(a.value).trim().length>=6),d=c?F((0,n.lG)(c.value)).trim():"",e=d?ab(d):void 0;return e?b.map(a=>{let b=`${a.key||""}${a.fieldName||""}${a.fieldId||""}`,c=F((0,n.lG)(a.value)).trim();if(!c)return a;if(/招标范围|施工范围/u.test(b)){let b=c.split(/[。;;\n]/u).map(a=>a.trim()).filter(Boolean);if(b.length<=1)return ac(c,e)?{...a,value:""}:a;let d=b.filter(a=>!ac(a,e));return 0===d.length?{...a,value:""}:{...a,value:d.join(";")}}return/项目名称候选|项目名称|工程名称/u.test(b)&&ac(c,e)?{...a,value:""}:a}).filter(a=>(0,n.lG)(a.value).trim().length>0):b}(a);let f=b=>a.filter(a=>b.some(b=>`${a.key} ${a.fieldName||""}`.includes(b))),g=b=>a.filter(a=>a.processingType===b||a.roleId.includes(b)),i=a.filter(a=>{let b=`${a.key} ${a.fieldName||""} ${a.value}`;return m.sv.test(b)&&(!(0,h.rF)(e,b)||P(b))&&!(0,h.d2)(e,b)}),j=a.filter(a=>"table"===a.processingType||"structured_data"===a.processingType||"bill_of_quantities"===a.processingType||/bill|boq|table|sheet|data|表格|列表|明细|数据/u.test(`${a.roleId} ${a.sourceFile}`)),k=v(b).slice(0,600),l=function(a){let b={},c=(a,c,d,e,f)=>{if(!a||!d)return;let g=d.replace(/[,,。\s]+$/u,"").slice(0,40),h=b[a]||=[];h.some(a=>a.location===c&&a.spec===g)||h.push({location:c,spec:g,quantity:e||void 0,sourceFile:f})};for(let b of a){let a=(b.key||"").replace(/^清单条目:/u,"");if(!a)continue;let d=(0,n.lG)(b.value),e=/|工程量:(.+)$/u.exec(d)?.[1]??"",f=d.replace(/|工程量:.+$/u,""),g=function(a){let b=[];for(let c of a.split(/[;;]/u)){let a=c.replace(/^\s*\d+[.、]\s*/u,"").trim(),d=a.search(/[::]/u);if(d>0){let c=a.slice(0,d).trim(),e=a.slice(d+1).trim();c.length>=2&&c.length<=20&&e&&b.push({label:c,value:e})}}return b}(f),h=!1;for(let{label:d,value:f}of g){if(w.some(a=>d.includes(a))){h=!0,c(d,a,f,e,b.sourceFile);continue}let g=f.match(x)?.[0];g&&g!==f&&c(y(g),a,g,e,b.sourceFile)}if(!h)for(let d of f.match(x)||[])c(y(d),a,d,e,b.sourceFile)}return b}(k),o=(function(a){let b=[];for(let c of a){let a=`${c.key||""}${c.fieldName||""}${c.fieldId||""}`,d=(0,n.lG)(c.value);if(/建设规模/u.test(a)&&/占地|用地/u.test(d)&&/建筑面积/u.test(d)){let a=d.search(/(?:总)?占地/u),e=d.search(/(?:单体)?总?建筑面积/u);if(a>=0&&e>a){let f=d.slice(a,e).replace(/^[,,、\s]+/u,"").replace(/[,,、\s]+$/u,"").trim(),g=d.slice(e).trim();if(f&&g){b.push({...c,key:"总占地面积",fieldName:"总占地面积",fieldId:void 0,value:f}),b.push({...c,key:"单体建筑面积",fieldName:"单体建筑面积",value:g});continue}}}b.push(c)}return b})(a.filter(a=>/项目名称|工程名称|项目编号|招标项目编号|招标人|建设单位|发包人|建设地点|建设规模|招标范围|计划工期|合同工期|周期要求|质量标准|合同估算|投资估算|最高投标限价|招标控制价/u.test(`${a.key||""}${a.fieldName||""}${a.fieldId||""}`))).slice(0,80),p=function(a,b,c,d){let e=a.filter(a=>(0,h.d2)(d,O(a))||(0,h.E1)(d,O(a))),f=a.filter(a=>{let b=O(a);return a.confidence>=.58&&!Q(a)&&!(0,h.rF)(d,b)&&!(0,h.d2)(d,b)&&!(0,h.E1)(d,b)}),g=[...b.filter(a=>!Q(a)),...f.filter(a=>m.sv.test(O(a)))].filter((a,b,c)=>c.findIndex(b=>b.sourceFile===a.sourceFile&&b.value===a.value&&b.key===a.key)===b).slice(0,360),i=f.filter(a=>"table"===a.processingType||/table|sheet|表格|清单|明细|数据|参数行摘要/u.test(O(a))),j=f.filter(a=>"drawing"===a.processingType||/drawing|dwg|图纸|施工图|设计图|平面图|剖面图|大样图|详图/u.test(O(a)));return{reliableFacts:f.slice(0,500),parameterFacts:g,tableFacts:i.slice(0,240),drawingFacts:j.slice(0,240),billFacts:c.slice(0,240),diagnostics:e.slice(0,120)}}(a,i,j,e);return{project:o,schedule:f(["工期","开工","竣工","节点","周期"]),quality:f(["质量","验收"]),safety:f(["安全","风险"]),resources:f(["劳动力","材料","机械","设备","资源"]),tables:b,drawings:g("drawing"),bills:j,preciseFacts:i,rules:g("rule"),specifications:g("specification"),schemaFacts:function(a,b){let c={};for(let d of b?.factFields||[])c[d.id]=a.filter(a=>a.fieldId===d.id||a.key===d.name||a.fieldName===d.name);return c}(a,d),factIndex:p,billItemFacts:k,specAuthorityMap:l,missing:[...new Set(c)],conflicts:await D(a,d,e)}}},1358:(a,b,c)=>{c.d(b,{JV:()=>k,O7:()=>h,QP:()=>l,SR:()=>g,c$:()=>j,e$:()=>i,rj:()=>f,sl:()=>r});var d=c(22157);function e(a){return a.replace(/[\s,,.。::;;||()()《》<>【】"“”'‘’]/gu,"").toLowerCase()}function f(a){let b=a.replace(/[||]\s*(?:[||]\s*)+$/gu,"").replace(/(?:[。;;]|\d+\s*[..、])\s*(?:未尽事宜|其余(?:未尽)?事宜|其他(?:未尽)?事宜|注\s*[::]).*$/u,"").trim();return b=b.replace(/[、,,;;]+\s*$/u,"").trim(),/[||]/u.test(b)&&(b=b.split(/[||]/u)[0]?.trim()||b),b}function g(a){return!(/^(?:见|详见|按|执行|参见|依据).{0,16}(?:前附表|招标公告|招标文件|合同|协议书|通用条款|专用条款|图纸|清单|附件|资料)$/u.test(a)||/(?:^|[::]\s*)(?:见|详见|按|执行|参见|依据)[^。;;]{0,18}(?:前附表|招标公告|招标文件|合同|协议书|通用条款|专用条款|图纸|清单|附件|资料|补疑|答疑)[^。;;]{0,6}$/u.test(a)||/^见.{0,24}(?:招标范围|招标补疑|补疑|前附表|答疑)/u.test(a)||/^(?:合同协议书|通用条款|专用条款|招标文件|招标公告|投标人须知前附表|附件|资料)$/u.test(a.replace(/[()()\d一二三四五六七八九十、..\s]/gu,""))||/^(?:工程名称|项目名称|建设地点|建设规模|计划工期|质量标准|招标范围|合同估算价|工程概况|项目概况|项目内容)$/u.test(a)||/\|/u.test(a)||/^#+\s*/u.test(a)||/^[一二三四五六七八九十]+[、..]\s*\S{2,}[::]/u.test(a)||/^[((]\s*\d+[))]/u.test(a)&&/具备|证书|考核|资格|人员/u.test(a))&&(!(a.length<4)||!!/\d/u.test(a))}function h(a){let b=String(a.value||"").trim(),c=`${a.label}${b}`;return!(!/项目|工程|编号|地点|规模|范围|工期|质量|安全|资源|材料|设备|验收|\d/u.test(c)||!g(b)||/^(?:技术参数|精确参数)$/u.test(a.label))}function i(a,b){let c=new Set,g=[];for(let h of[...b.project,...b.schedule,...b.quality,...b.safety,...b.resources,...b.preciseFacts,...b.bills,...b.drawings,...b.rules,...b.specifications]){let b=f((0,d.lG)(h.value).replace(/\s+/gu," ").trim()),i=h.fieldName||h.key||h.fieldId||"资料事实",j=`${i}:${b}`;!b||c.has(j)||(c.add(j),g.push({label:i,value:b,sourceFile:h.sourceFile,status:!function(a,b){let c=e(a),d=e(b);if(!d||d.length<2||c.includes(d))return!0;{let a=b.split(/[;;。\n]|、|,|,/u).map(a=>e(a.replace(/^\s*\d+\s*[、..]\s*/u,""))).filter(a=>a.length>=4);if(a.length>=2&&a.some(a=>c.includes(a)))return!0}{let a=b.replace(/[、,,;;||\s]+/gu,"、").split("、").map(a=>e(a.replace(/(?:工程|项目|改造|维修|安装|施工|内容|资料|要求|标准)+$/u,""))).filter(a=>a.length>=2);if(a.length>=1&&(a.length>=2||(a[0]?.length??0)>=3)&&a.every(a=>c.includes(a)))return!0}return(b.match(/\d+(?:\.\d+)?\s*(?:日历天|天|个月|月|年|万元|元|平方米|㎡|m²|立方米|m³|米|m|mm|cm|台|套|人|项|%|MPa|kPa|个|栋|层|标段|批|处|座|组|道|根|樘|扇)?/giu)||[]).some(a=>e(a).length>=2&&c.includes(e(a)))}(a,b)?"unplaced":"used",confidence:h.confidence}))}return g}function j(a,b={}){let c=a.filter(a=>"unplaced"===a.status&&h(a)),d=b.maxIssues&&b.maxIssues>0?b.maxIssues:c.length;return c.slice(0,d).map(a=>({level:"warning",message:`已确认知识库事实未落位:${a.label}=${a.value}`,suggestion:`请将该事实落位到对应章节,并保持来源 ${a.sourceFile||"结构化事实主表"} 的原始口径。${c.length>d?`(共${c.length}个未落位事实,此处显示前${d}个)`:""}`}))}function k(a,b){let c=b.tables||[],d=[],f=e(a);for(let a of c){let b=a.headers.map(a=>a.replace(/\s+/gu,"").toLowerCase()),c=b.findIndex(a=>/项目名称|名称|清单项|分部分项|项目特征|工程内容|材料名称|设备名称/u.test(a)),g=b.findIndex(a=>/编码|编号|序号|项目编码/u.test(a)),h=b.findIndex(a=>/数量|工程量/u.test(a)),i=b.findIndex(a=>/单位/u.test(a));for(let b of a.rows){let j=c>=0&&b[c]||"",k=g>=0&&b[g]||"";if(!j&&!k){let a=b.findIndex(a=>/^\d{10,12}$/u.test(a)||/^[A-Z]{1,3}\d{8,}$/u.test(a));a>=0&&(k=b[a]||"",j=b[a+1]||"")}let l=h>=0&&b[h]||"",m=i>=0&&b[i]||"";if(!j&&!k)continue;let n=e(j),o=e(k),p=n.length>=3&&f.includes(n.slice(0,12))||o.length>=3&&f.includes(o.slice(0,8));d.push({itemCode:k.slice(0,50),itemName:j.slice(0,200),quantity:l.slice(0,50),unit:m.slice(0,20),sourceFile:a.sourceFile||"",placed:p})}}return d.sort((a,b)=>a.placed===b.placed?0:a.placed?1:-1)}function l(a,b={}){let c=a.filter(a=>!a.placed);if(0===c.length)return[];let d=a.length,e=(d-c.length)/d,f=[];return e<.3?f.push({level:"warning",message:`BOQ 清单行级落位严重不足:${d-c.length}/${d} 行(${Math.round(100*e)}%)`,suggestion:`清单明细数量较大,建议优先补充主要分部分项、关键规格和大额工程量。未落位清单项示例:${c.slice(0,5).map(a=>`${a.itemName} ${a.quantity}${a.unit}`).join(";")}`}):e<.6&&f.push({level:"warning",message:`BOQ 清单行级落位不足:${d-c.length}/${d} 行(${Math.round(100*e)}%)`,suggestion:`建议补充落位:${c.slice(0,5).map(a=>a.itemName).join("、")}`}),f}let m=/公厕|厕所|过路涵|涵洞|涵管|污水|排水沟|水沟|清淤|沟塘|小菜园|菜园|菜地|花池|树池|挡墙|护栏|路灯|检查井|化粪池|泵站|生态池|生态塘|护坡|驳岸|栈道|步道|管网|管道|道路|铺装|绿化|景观|基础|结构|防水|屋面|外墙|内墙|地面|门窗|栏杆|电梯|电气|给水|排水|消防|通风|空调|智能化|幕墙|基坑/u,n=/^(?:管网|管道|道路|铺装|绿化|景观|基础|结构|防水|屋面|外墙|内墙|地面|门窗|栏杆|电梯|电气|给水|排水|消防|通风|空调|智能化|幕墙|基坑)$/u,o={公厕:["公共厕所","厕所"],厕所:["公厕","公共厕所"],菜地:["菜园","小菜园"],菜园:["菜地"],小菜园:["菜地"]},p=/^(?:挖|回填|运|运输|拆除|清理|浇筑|绑扎|安装|铺设|砌筑|抹灰|刷|喷|摊铺|碾压|夯实|整平|找平|支模|搭设|检测|试验|防腐|除锈)/u,q=/计价|费用|税金|规费|暂列|暂估|合计|汇总|小计|措施项目|其他项目|税金项目/u;function r(a,b,c){if(0===(c.tables||[]).length)return[];let d=b.filter(a=>/施工方法|施工方案|施工工艺|主要施工内容|分部分项/u.test(a.title)),f=d.map(a=>a.content||"").join("\n");if(!f)return[];let g=e(f),h=k(a,c),i=[],j=new Set;for(let a of h){let b=(a.itemName||"").trim();if(!b||q.test(b)||p.test(b))continue;let c=[...b.matchAll(RegExp(m.source,"gu"))].map(a=>a[0]);if(0===c.length)continue;let d=c.filter(a=>!n.test(a));if(0===d.length)continue;let f=a=>g.includes(e(a))||(o[a]||[]).some(a=>g.includes(e(a)));if(d.some(f))continue;let h=b.slice(0,12);j.has(h)||(j.add(h),i.push(`${b.slice(0,30)}${a.quantity?` ${a.quantity}${a.unit}`:""}`))}return 0===i.length?[]:[{level:"error",severity:"blocker",category:"evidence_coverage",owner:"llm",repairability:"llm_repairable",chapterId:d[0]?.id,message:`施工方法章分项覆盖缺失:${i.slice(0,6).join(";")}${i.length>6?` 等共 ${i.length} 个清单分项`:""}`,suggestion:"施工方法章必须逐项覆盖工程量清单中的全部分部分项(含公厕/过路涵/污水管网/排水沟/沟塘清淤/小菜园等专项分项):为每个缺失分项补齐施工方法小节(施工概况/施工流程/施工方法三要素齐全),禁止只写道路、铺装、绿化等大类而遗漏清单独有分项。"}]}},22213:(a,b,c)=>{c.d(b,{Bk:()=>w,DD:()=>h,Dz:()=>t,Ep:()=>v,I6:()=>z,KJ:()=>H,YK:()=>A,ab:()=>C,ap:()=>J,eB:()=>B,eK:()=>F,eL:()=>q,ev:()=>G,h$:()=>l,iA:()=>y,qj:()=>D,sE:()=>i,sh:()=>x,xu:()=>r,y7:()=>E,zJ:()=>I});var d=c(70933),e=c(1218);c(70208);var f=c(22157),g=c(3063);function h(a){return a.replace(/^#{3,4}\s+.*\n+/u,"").trim()}function i(a,b){let c=a.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&"),d=b.match(RegExp(`^#{3,4}\\s+(?:\\d+(?:\\.\\d+)*\\s+)?${c}\\s*\\n([\\s\\S]*?)(?=^###\\s+|^##\\s+|(?![\\s\\S]))`,"mu"));return d?d[0]:b}function j(a){let b=new Set;for(let c of a.match(/[\u4e00-\u9fa5]{2,}/gu)||[]){if(2===c.length){b.add(c);continue}for(let a=0;a<=c.length-2;a+=1)b.add(c.slice(a,a+2))}return b}let k=new Set(["采用","安装","控制","检测","检查","验收","记录","施工","要求","完成","进行","实测","形成","复核","处理","保护","清理","准备","组织","安全","质量","部位","范围","内容","工作","项目","工程","材料","设备","分别","规范","图纸","设计","依据","确认","资料","技术","文件","标准","合格","偏差","允许","符合","确保","防止","严禁","不得","统一","配备","设置","使用","作业","过程","移交","闭环","整改","问题","发现","及时","后续","工序","环节","位置","高度","间距","严格","必须","所有","相关","执行","落实","到位","同步","相应","重点","加强","管理","隐蔽","报告","签字","填写","留置","保养","维修"]);function l(a){let b=a.match(/^#{3,4}\s+(?:\d+(?:\.\d+)*\s+)?(?:项目主要施工\s*内容|主要施工\s*内容)\s*\n([\s\S]*?)(?=^###\s+|^##\s+|(?!(\s|\S)))/mu);if(!b)return a;let c=b[0],d=c.indexOf("\n"),e=c.slice(d+1).split(/^(?=####\s+)/mu),f=[];for(let a of e){let b=a.match(/^####\s+(.+?)\s*\n([\s\S]*)$/u);if(!b)continue;let c=b[1].trim(),d=c.replace(/^\d+\.\d+\.\d+\s*/u,""),e=b[2].split(/(?=施工概况|施工流程|施工方法)/u).filter(Boolean).map(a=>j(a.replace(/^施工(?:概况|流程|方法)[::]?/u,"")));f.push({title:c,cleanTitle:d,body:b[2],isWorkPackage:/工作包\s*$/u.test(d),titleGrams:j(d),segGrams:e})}let g=f.filter(a=>a.isWorkPackage),h=f.filter(a=>!a.isWorkPackage);if(0===g.length||0===h.length)return a;let i=new Set;for(let a of g){let b,c=0;for(let d of h){if(i.has(d))continue;let e=function(a,b){let c=0;for(let d of a)b.has(d)&&(c+=1);return c}(a.titleGrams,d.titleGrams);if(e<2)continue;let f=Array.from({length:Math.min(a.segGrams.length,d.segGrams.length)},(b,c)=>(function(a,b){let c=0;for(let d of a)!k.has(d)&&b.has(d)&&(c+=1);return c})(a.segGrams[c],d.segGrams[c])).filter(a=>a>=4).length;if(f<2)continue;let g=e+2*f;g>c&&(c=g,b=d)}if(!b)continue;let d=b,e=a=>a.replace(/平方米/gu,"m2").replace(/m²|㎡/gu,"m2").replace(/立方米/gu,"m3").replace(/m³/gu,"m3").replace(/毫米/gu,"mm").replace(/\s+/gu,""),f=e(d.body),g=/\d+(?:\.\d+)?(?:平方米|立方米|毫米|m2|m3|mm|㎡|m²|m³|米|台|套|个|座|根|扇|樘|块|件|组|吨|kg|t|%)/gu,j=a=>{let b=a.match(g);return!!b&&0!==b.length&&b.every(a=>f.includes(e(a)))},l=[];for(let b of a.body.split(/[。;,,\n]/u).map(a=>a.trim()).filter(Boolean)){if(!/\d/u.test(b))continue;let a=b.replace(/^施工(?:概况|流程|方法)[::]?/u,"").trim();a&&(j(a)||l.push(a))}l.length>0&&(d.body=`${d.body.trimEnd()}${l.join("。")}。
|
|
13
13
|
`),i.add(a)}let l=f.filter(a=>!i.has(a));if(l.length===f.length)return a;let m=l.every(a=>/^\d+\.\d+\.\d+\s+/u.test(a.title)),n=l.map((a,c)=>{let d=m?`#### ${a.title.replace(/^\d+\.\d+\.\d+\s*/u,`${b[0].split("\n")[0].match(/\d+\.\d+/u)?.[0]||"1.1"}.${c+1} `)}`:`#### ${a.cleanTitle}`;return`${d}
|
|
14
14
|
${a.body.trimEnd()}`}),o=c.slice(0,d+1);return a.replace(c,`${o}${n.join("\n")}
|
|
15
15
|
`)}function m(a,b){let c=b?i(b,a):a;return/^####\s+\S+/mu.test(c)}function n(a){return(0,d.eE)(a).replace(/#{2,6}\s*[^;;。\n]+/gu,"").replace(/资料内容事实[;;::]?/gu,"").replace(/\s+/gu," ").trim()}function o(a){let b=n(a);return!(!b||b.length<4||b.length>120||/资料内容事实|#{2,6}|未尽事宜|项目编号\s*[::]?\s*[一二三四五六七八九十]?$/u.test(b)||/本项目为|总建筑面积|保留现状|专业施工内容统筹|招标文件列明|招标范围还包含|具备有效的.*资质/u.test(b)||/未注明|以图纸为准|按设计要求确定/u.test(b)&&!/\d/u.test(b))&&(!((b.match(/工程|维修|改造|安装|设备/gu)||[]).length>=4)||!!/\d|㎡|m2|m²|mm|厚|验收|检测|调试|试验|复试/u.test(b))&&/\d|㎡|m2|m²|mm|厚|工程|材料|设备|系统|范围|改造|维修|加固|消防|水电|智能化|管网|屋面|门窗|验收|检测|调试/u.test(b)}function p(a){return a.split(/→|;|;|、|,|,/u).map(a=>n(a)).filter(a=>a&&a.length>=2&&a.length<=40).filter(a=>!/^按?施工准备$|^实施$|^检查$|^验收组织?$|^按规范和资料闭环$/u.test(a)).filter(a=>!/本项目为|总建筑面积|保留现状|专业施工内容统筹|招标文件列明|招标范围|未尽事宜|具备有效/u.test(a))}function q(a){let b=[];for(let c of a){let a=c.replace(/[::,,、;;||()()]/gu," ").replace(/\s+/gu," ").trim(),d=new Set(a.split(" ").filter(a=>a.length>=2)),e=new Set([...a.match(/\d+[A-Z]{2,}[A-Za-z0-9]*/gu)||[],...a.match(/\d+(?:\.\d+)?\s*(?:台|套|个|座|㎡|m2|m²|m³|m3|kg|t|根|扇|樘|块|件|组|mm)/gu)||[]]),f=a.split(" ")[0]||"",g=b.findIndex(b=>{if(b.norm.includes(a)||a.includes(b.norm))return!0;if(!([...e].some(a=>b.models.has(a))||[...b.models].some(a=>e.has(a))))return!1;let c=(a,b)=>[...a].every(a=>b.has(a));return c(d,b.tokens)||c(b.tokens,d)||f===b.norm.split(" ")[0]});if(g>=0){let f=b[g];(d.size>f.tokens.size||d.size===f.tokens.size&&c.length<f.text.length)&&(b[g]={text:c,norm:a,tokens:d,models:e})}else b.push({text:c,norm:a,tokens:d,models:e})}return b.map(a=>a.text)}function r(a,b){let c=b.map(a=>a.replace(/[::,,、;;||()()]/gu," ").replace(/\s+/gu," ").trim()),d=/安装|敷设|浇筑|砌筑|抹灰|回填|拆除|吊装|固定|连接|试验|调试|养护|压实|铺设|焊接|绑扎|涂刷|灌浆|开挖|预制|穿线|放线|找平|清底|防水|密封/u;return a.filter(a=>{if(/\d+(?:\.\d+)?\s*(?:台|套|个|座|㎡|m2|m²|m³|m3|kg|t|根|扇|樘|块|件|组)/u.test(a)||/[A-Z]+\d+/u.test(a)&&/箱|柜|泵|机组|风机|面板/u.test(a))return!1;let b=a.replace(/[::,,、;;||()()]/gu," ").replace(/\s+/gu," ").trim();return!!(b.length<=6&&d.test(b))||(b.length<4?!c.some(a=>a.includes(b)):!c.some(a=>a.includes(b)))})}function s(a){let b=n(a);return!b||(b.match(/工程|维修|改造|安装|设备|系统|管网|屋面|门窗|消防|智能化/gu)||[]).length>=5&&!/\d|㎡|m2|m²|mm|厚|验收|检测|调试|试验|复试|记录|报告|材料|设备|规格|标准|检验批/u.test(b)}function t(a,b){let c=[],d=a.match(/施工工作包结构化数据:\s*(\[[^\n]*\])/u);if(d)try{for(let a of JSON.parse(d[1])){let b=n(a.name||""),d=n(a.scope||""),e=q([...a.quantities||[],...a.materials||[],...a.methods||[]].map(n).filter(o).filter(a=>!s(a))),f=r((a.process||[]).flatMap(p),e),g=(a.acceptance||[]).map(n).filter(a=>a&&!s(a));!(!b||/项目施工$|项目$|^\d{4}年度/u.test(b))&&(!d||/资料内容事实|#{2,6}/u.test(d)||c.push({name:b,scope:d,quantities:e,process:f,acceptance:g}))}if(c.length>0)return c.slice(0,16)}catch{c.length=0}for(let b of a.split(/\r?\n/u).filter(a=>/^\d+\.\s+.+?|范围:/u.test(a))){let a=b.match(/^\d+\.\s+(.+?)|范围:(.+?)|工程量\/材料:(.+?)|流程:(.+?)|验收:(.+)$/u);if(!a)continue;let d=n(a[1]),e=n(a[2]),f=q(a[3].split(/[;;、,,]/u).map(a=>n(a)).filter(o).filter(a=>"按证据展开"!==a)),g=r(p(a[4]),f),h=a[5].split(/[;;、,,]/u).map(a=>n(a)).filter(a=>a&&"按规范和资料闭环"!==a).filter(a=>!s(a));!(!d||/项目施工$|项目$|^\d{4}年度/u.test(d))&&(!e||/资料内容事实|#{2,6}/u.test(e)||c.push({name:d,scope:e,quantities:f,process:g,acceptance:h}))}return c.slice(0,8)}function u(a){let b=/^(.{1,18}?)(等)([\s\S]{2,})$/u.exec(a);return!b||void 0===b[1]||void 0===b[3]||/电$/u.test(b[1])||/^级/u.test(b[3])?a:b[3].length>=3?b[3]:b[1].length>=3?b[1]:a}function v(a,b){let c=t(a,b).map(a=>a.name).filter(Boolean),d=function(a,b){let c=[a,...b.map(a=>a.content)].filter(Boolean),d=/工程|安装|系统|通风|空调|智能化|装修|幕墙|屋面|土方|基坑|地基|基础|结构|电气|给排水|消防|防水|设备|管网|道路|景观|绿化|公厕|厕所|过路涵|涵|清淤|沟塘|塘|小菜园|菜园|排水沟|水沟|花池|树池|挡墙|护栏/u,f=(()=>{for(let a of c){let b=/(?:项目名称|工程名称)[::\s为是]+([^\n。;;]{4,120})/u.exec(a);if(!b)continue;let c=(0,e.ir)(b[1]);if(c)return c}})();for(let a of c){let b=a.indexOf("招标范围");if(b<0)continue;let c=a.slice(b,b+600);if(f){let a=c.split(/[。;;\n]/u).map(a=>a.trim()).filter(Boolean).filter(a=>!(0,e.PP)(a,f));a.length>0&&(c=a.join("。"))}let g=c,h=g.indexOf("包括但不限于"),i=(g=(g=h>=0?g.slice(h+6).replace(/^[::、,,;;\s]+/u,""):g.replace(/^[^、,,;;。]{0,60}?招标范围[::]?\s*/u,"")).replace(/(?:等)?图纸[、及]?清单范围内所有工程[。.]*/u,"")).replace(/([^)]*)/gu,"").split(/[、,,;;。]/u).map(a=>n(a).replace(/["“”']/gu,"")).filter(a=>a.length>=3&&a.length<=20).filter(a=>d.test(a)).map(a=>u(a)).filter(a=>a.length>=3&&a.length<=20).filter(a=>!/招标范围|图纸|清单|补疑|答疑|具体内容|包括但不限于|投标|专用合同|未尽事宜|工程量|约束|不得|仅指导|集中交代|矛盾|参数|数字/u.test(a)).filter(a=>!/^(?:包括|涵盖|重点实施|实施|建设范围覆盖|本项目建设|主要包含|主要实施|具体包括|分别为|共计|包含|涉及)/u.test(a)).filter(a=>!/以下|以上|如下|详见|具体内容/u.test(a)).filter(a=>!/^是否/u.test(a)).filter(a=>!/及其他|以及其他/u.test(a)),j=[];for(let a of i){let b=a.replace(/\s+/gu,"");j.some(a=>a.replace(/\s+/gu,"").includes(b)||b.includes(a.replace(/\s+/gu,"")))||j.push(a)}if(j.length>=3)return j.slice(0,12)}return[]}(a,b),f=function(a){let b=(0,e.qG)(a),c=(0,e.hn)(b),d=[],f=new Set,g=/计价|费用|税金|规费|暂列|暂估|合计|汇总|小计|措施项目|其他项目|税金项目/u;for(let a of c){let b=a.key.replace(/^清单条目:/u,"").trim();!(!b||b.length<2||b.length>24||g.test(b))&&(f.has(b)||(f.add(b),d.push(b)))}return d.slice(0,12)}(b),g=[],h=a=>{let b=u(a.trim()),c=b.replace(/\s+/gu,"");return!(!c||/^(?:包括|涵盖|重点实施|实施以下|建设范围覆盖|本项目建设|主要包含|主要实施|具体包括|分别为|共计|包含|涉及|是否)/u.test(c)||/以下|以上|如下|详见|具体内容|及其他|以及其他/u.test(c)||/^\d{4}年度/u.test(c)||/施工图|设计图|详图|平面图|剖面图|立面图|大样图|图集/u.test(c)||c.length>20||g.some(a=>{let b=a.replace(/\s+/gu,"");return b.includes(c)||c.includes(b)}))&&(g.push(b),!0)};for(let a of c)h(a);for(let a of d){if(g.length>=12)break;h(a)}let i=/公厕|厕所|过路涵|涵洞|涵管|污水|排水沟|水沟|清淤|沟塘|塘|小菜园|菜园|菜地|花池|树池|挡墙|护栏|路灯|检查井|化粪池|泵站|生态池|生态塘|护坡|驳岸|栈道|步道/u;if(g.length<3)for(let a of[...f].sort((a,b)=>Number(i.test(b))-Number(i.test(a)))){if(g.length>=12)break;h(a)}else for(let a of f){if(g.length>=16)break;i.test(a)&&h(a)}return g}function w(a,b,c=3,d){let e=d??v(a,b);if(e.length<c)return"";let f=e.map((a,b)=>`#### ${b+1} ${a}`).join("\n");return[`【小节骨架锁定】本节内部结构已由系统锁定,必须且只能按以下 ${e.length} 个工作包小节标题逐项展开(标题一字不差,不得增删改、合并或调序):`,f,"每个工作包小节必须覆盖三方面要素:作业对象与工程量、工序顺序、施工方法(三要素缺一不可),融入连贯段落叙述;禁止以“施工概况/施工流程/施工方法/工艺流程”等结构标签充当 H4 小节标题或段落开头引导。\n要素写法:作业对象与工程量(作业对象与部位、工程量或规模、材料设备规格型号,数量类数值优先取工程量清单数据);工序顺序(先后顺序清晰,形式按工作包序号轮换使用:顺序词叙述、编号步骤、有序列表、箭头链,禁止相邻工作包同一形式);施工方法(工艺做法、工艺参数(数值+单位)、验收检测与记录闭环)。\n融合叙述示例(仅为形式示意,示例中的数值必须替换为本项目绑定资料中的真实数值,不得照抄示例数值):\n本工程室外道排范围覆盖园区内雨水、污水管网及检查井,主要工程量 HDPE 双壁波纹管 DN300 约 1200m、检查井 45 座,管材环刚度 SN8。施工按测量放线、沟槽开挖、管道基础、管道铺设、闭水试验、分层回填、压实度检测、验收的顺序组织;沟槽机械开挖配合人工清底,槽底标高偏差控制在\xb120mm以内,接口采用承插式橡胶圈连接,回填每层虚铺厚度不超过300mm、压实度不低于95%,检测合格后形成记录归档闭环。\n数值来源优先级:工程量、材料规格、设备型号等数量类数值优先取工程量清单数据;清单未覆盖的参数(标高、坡率、构造做法等)才取图纸数据;禁止“按设计图纸执行”“详见设计图纸”“按设计文件确定”式概括话术——必须落到具体数值或具体规范条文。\n本节禁止出现 Markdown 表格;禁止写入重难点识别表、关键施工节点控制计划表等属于其他小节的内容;禁止只写综合概述而不展开工作包。"].join("\n")}function x(a,b,c=3){let d=v(a,b);return d.length>=c?d:[]}function y(a,b,c=3){let d=a.filter(a=>b.some(b=>{let c=(0,f.Sw)(b),d=(0,f.Sw)(a);return c.includes(d)||d.includes(c)}));return d.length>=c?d:[]}function z(a){let b=a.split(/\r?\n/u),c=[],d=!1;for(let a of b){let b=a.trim();if(/^\|.+\|\s*$/u.test(b)){d=!0;continue}if(d){if(""===b)continue;d=!1}c.push(a)}return c.join("\n")}function A(a){return/^\s*\|\s*重难点\s*\|/mu.test(a)?"重难点识别表串入本小节(应属于重点难点分析小节)":/^\s*\|\s*关键节点\s*\|/mu.test(a)?"关键施工节点控制计划表串入本小节(应属于进度计划小节)":/^\s*\|\s*危险源\s*\|/mu.test(a)?"危险源辨识清单表串入本小节(应属于安全管理小节)":""}function B(a,b,c=[]){let d=b.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&"),e=RegExp(`^#{3,4}\\s+(?:\\d+(?:\\.\\d+)*\\s+)?${d}\\s*$`,"u"),g=a.split("\n"),h=g.findIndex(a=>e.test(a.trim()));if(h<0)return a;let i=/^####\s+/u.test(g[h].trim()),j=c.map(f.Sw),k=[g[h]];for(let a=h+1;a<g.length;a+=1){let b=g[a].trim();if(/^#{2,3}\s+/u.test(b))break;if(/^####\s+/u.test(b)&&i){let a=b.replace(/^####\s+(?:\d+(?:\.\d+)*\s+)?/u,""),c=(0,f.Sw)(a);if(!j.some(a=>c.includes(a)||a.includes(c)))break}k.push(g[a])}let l=k.join("\n"),m=z(l);return m===l?a:a.replace(l,m)}function C(a,b,c){let d=i(b,a),e=b.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&");if(!RegExp(`^#{3,4}\\s+(?:\\d+(?:\\.\\d+)*\\s+)?${e}\\s*$`,"u").test(d.split("\n")[0]?.trim()||""))return[];let g=(d.match(/^#{3,4}\s+(.+)$/gmu)||[]).map(a=>a.replace(/^#{3,4}\s+/u,""));return c.filter(a=>!g.some(b=>(0,f.Sw)(b).includes((0,f.Sw)(a))))}function D(a,b,c){let d=i(b,a),e=b.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&");if(!RegExp(`^#{3,4}\\s+(?:\\d+(?:\\.\\d+)*\\s+)?${e}\\s*$`,"u").test(d.split("\n")[0]?.trim()||""))return a;let g=d.split(/^####\s+/gmu),h=g.shift()||"",j=[];for(let a of g){let b=a.split("\n"),d=(b[0]||"").trim(),e=(0,f.Sw)(d),g=b.slice(1).join("\n").replace(/^#{1,6}\s+.+$/gmu,"").trim();c.some(a=>e.includes((0,f.Sw)(a)))&&g.length<80||j.push(a)}let k=`${h}${j.length>0?"#### ":""}${j.join("#### ")}`;return k===d?a:a.replace(d,k)}function E(a){return/资料内容事实|(?:^#{2,3}|^#{5,6})\s+|\*\*[^*]+\*\*|未尽事宜|专业施工内容统筹|招标范围还包含|具备有效的.*资质|安全生产考核合格证书|注册建造师|联合体投标|项目经理要求|投标人资格|投标人资质|营业执照|安全生产许可证|资格审查|资格后审|中标通知书|签订合同|电子交易系统|投标保证金|评标办法|踏勘现场|投标预备会/mu.test(a)}function F(a,b){if(/项目主要施工内容/u.test(a)){let c=i(a,b);if(!m(b,a))return`${a} 缺少施工工作包三级小节`;if(!function(a){let b=h(a);return((b.match(/^####\s+(?:\d+\.\d+\.\d+\s+)?[一二三四五六七八九十\d]*[、..]?\s*\S+/gmu)||[]).length||(b.match(/^[一二三四五六七八九十]+、\S+/gmu)||[]).length)>=3&&(0,f.Jb)(b)}(c))return`${a} 未按施工工作包展开`;let d=c.split(/^####\s+/gmu).slice(1).map(a=>a.trim()).filter(Boolean);if(d.some(a=>!(0,f.Jb)(a)))return`${a} 存在工作包内容要素不全`;if(E(h(c)))return`${a} 存在脏事实或标题污染`;if(d.some(a=>/施工流程[::][\s\S]*?(未尽事宜|本项目为|总建筑面积|保留现状|专业施工内容统筹|招标文件列明|招标范围|安全生产考核合格证书|联合体投标|注册建造师)/u.test(a)))return`${a} 存在工作包流程污染`;if(!(0,f.Z1)(c)||d.some(a=>{let b=a.match(/施工方法[::]([\s\S]*?)(?=\n施工|$)/u)?.[1]||"",c=a.match(/(?:施工流程|工艺流程)[::]([\s\S]*?)(?=\n施工|$)/u)?.[1]||"";return(b.trim().length>0||c.trim().length>0)&&!(0,f.Z1)(b+c)}))return`${a} 存在工作包工序顺序表达缺失`;if(d.some(a=>{let b=a.match(/施工方法[::]([\s\S]*?)(?=\n施工|$)/u)?.[1]||"";if(!/施工方法[::]/u.test(a))return!1;if(/安全生产考核合格证书|联合体投标|注册建造师|投标人资格|资质要求|营业执照|安全生产许可证/u.test(b)||b.length<30)return!0;let c=(b.match(/[::]\s*\d/gu)||[]).length;return/\d/u.test(b)&&!/→|采用|组织|浇筑|铺设|焊接|绑扎|砌筑|抹灰|涂刷|敷设|压实|养护|试验|调试|测量|放线|验收|检测|复试|记录|报告|吊装|灌注|埋设|嵌缝/u.test(b)&&(c>=2||!/安装|固定|挂墙|机具/u.test(b))||(b.match(/工程|维修|改造|安装|设备/gu)||[]).length>=4&&!/\d|㎡|m2|m²|mm|厚|验收|检测|调试|试验|复试|记录|报告/u.test(b)}))return`${a} 存在工作包施工方法过弱`;let e=h(c);if(/^\s*\|.+\|\s*$/mu.test(e))return`${a} 不应使用 Markdown 表格替代工作包正文`}if(g.gG.test(a)){let c=i(a,b);if(!m(b,a))return`${a} 缺少分项工程方案三级小节`;let d=c.split(/^####\s+/gmu).slice(1).map(a=>a.trim()).filter(Boolean);if(0===d.length)return`${a} 未按分项工程方案展开`;if(d.some(a=>!(0,f.Jb)(a)))return`${a} 存在分项方案内容要素不全`;if(!(0,f.Z1)(c)||d.some(a=>{let b=a.match(/施工方法[::]([\s\S]*?)(?=\n施工|$)/u)?.[1]||"",c=a.match(/(?:施工流程|工艺流程)[::]([\s\S]*?)(?=\n施工|$)/u)?.[1]||"";return(b.trim().length>0||c.trim().length>0)&&!(0,f.Z1)(b+c)}))return`${a} 存在分项方案工序顺序表达缺失`}return""}function G(a,b){if(m(b))return b;let c=h(b);return c?`### ${a}
|
|
@@ -20,7 +20,7 @@ ${d.trim()}
|
|
|
20
20
|
#### ${b}
|
|
21
21
|
|
|
22
22
|
${d.trim()}
|
|
23
|
-
`})}return c}function I(a){return(0,g.lg)(a)}function J(a){return/项目管理组织|组织架构|岗位职责|施工部署|施工流水|交通组织|人车分流/u.test(a)}function K(a){return/项目特点.*重点.*难点|重点.*难点.*分析/u.test(a)?"关键小节结构要求:必须分为“项目特点分析、施工重点识别、施工难点及应对措施、重点难点与施工内容对应关系”。\n必须落位项目具体数据:项目名称、建设地点、建筑面积、层数、结构形式、装配式范围、计划工期、质量标准、施工专业范围、现场场地约束、既有管网接驳等已确认事实。\n必须用正式表格或分项清单表达:重点/难点、形成原因、影响范围、对应施工内容、控制措施、责任岗位、验收节点。\n每个重点/难点条目必须在正文中写明成因归因句(说明该难点的形成原因与风险来源)与量化控制目标(数值+单位,如“控制在5mm以内”“不大于30分钟”,数值来自绑定资料或行业规范);对策必须回应归因并给出可核查的量化验收标准;无归因、无量化控制目标、无针对性对策的条目视为不合格必须重写。":/项目主要施工内容/u.test(a)?"关键小节结构要求:必须参照优秀施工组织设计的“主要施工内容”写法,按当前项目资料识别专业工程/分部分项工作包,不得只写综合概述。\n每个工作包必须覆盖作业对象与工程量、工序顺序、施工方法三方面要素(三要素缺一不可),融入连贯段落叙述;禁止以“施工概况/施工流程/施工方法/工艺流程”等结构标签充当 H4 小节标题或段落开头引导;不得使用 Markdown 表格,避免导出时产生表格分隔线残留。\n要素写法:作业对象与工程量写对象范围、工程量或规模、材料设备规格、施工部位;工序顺序必须有明确的顺序表达,形式按工作包序号轮换使用(顺序词叙述、编号步骤、有序列表、箭头链),禁止相邻工作包同一形式、禁止通篇同一形式;施工方法写工艺做法、穿插组织、工艺参数、质量验收、检测复试、资料闭环。\n数值来源优先级:工程量、材料规格、设备型号等数量类数值优先取工程量清单数据;清单未覆盖的参数(标高、坡率、构造做法等)才取图纸数据;禁止“按设计图纸执行”“详见设计图纸”“按设计文件确定”式概括话术——必须落到具体数值或具体规范条文。\n工作包类别必须从资料事实中识别,可覆盖但不限于结构加固、消防、装饰、水电、通风空调、弱电智能化、室外道排、屋面、立面、附属工程。":/主要分部分项工程施工方案|主要施工方法/u.test(a)?"关键小节结构要求:必须按专业工程和关键工序展开,不得只写概述流程。\n必须覆盖资料明确的专业工程范围。\n必须逐项响应“项目特点、重点、难点分析”中的控制对象,写明施工范围、施工方法、工艺流程、关键控制点、检查验收和资料闭环。\n每个分项工程方案必须覆盖作业对象与工程量、工序顺序、施工方法三方面要素(三要素缺一不可),融入连贯段落叙述,禁止以“施工概况/工艺流程/施工方法”等结构标签充当标题或段落开头引导;工序顺序表达形式按分项序号轮换使用(顺序词叙述、编号步骤、有序列表、箭头链),禁止相邻分项同一形式;数值来源优先级同主要施工内容:数量类数值优先取工程量清单,清单未覆盖才取图纸数据,禁止“按设计图纸执行”式概括话术。":""}function L(a){return(0,g.ap)(a)}function M(a,b){return Math.min(24e3,Math.max(5e3,Math.ceil(1.45*(b||a))))}},22496:(a,b,c)=>{c.d(b,{cn:()=>h,ts:()=>d,we:()=>i});let d=[{id:"earthwork-excavation",name:"土方开挖",aliases:["土方","基坑开挖","土方开挖","挖土"],process:["测量放线","标高复核","分层开挖","边坡修整","基底验槽"],params:["分层开挖厚度≤2m","基底标高偏差0~-50mm","边坡坡度按土质取1:0.5~1:1","预留200~300mm人工清底"],acceptance:["基底验槽","钎探记录","标高与轴线复核","隐蔽验收记录"],standards:["GB 50202-2018 建筑地基基础工程施工质量验收标准"]},{id:"earthwork-backfill",name:"土方回填",aliases:["素土回填","填土碾压","回填","余方弃置","人工清底"],process:["基底隐蔽验收","分层摊铺","分层碾压","压实度检测","边角补夯","表面整平"],params:["每层虚铺厚度≤300mm","填土含水率控制在最优含水率\xb12%","压实系数≥0.94","边角部位采用小型夯实机补夯","压实度每层每100m\xb2不少于1组检测"],acceptance:["压实度检测报告","回填土施工记录","隐蔽验收记录"],standards:["GB 50202-2018 建筑地基基础工程施工质量验收标准","GB 50268-2008 给水排水管道工程施工及验收规范"]},{id:"foundation-pit-support",name:"基坑支护",aliases:["基坑支护","钢板桩","土钉墙","支护桩","冠梁"],process:["测量定位","支护桩成孔","钢筋笼制安","混凝土浇筑","冠梁施工","分层开挖","位移监测"],params:["桩位偏差≤50mm","垂直度≤1%","冠梁顶标高偏差\xb110mm","监测频率:开挖期每天1次","报警值按设计位移速率3mm/d"],acceptance:["桩身完整性检测","锚杆拉拔试验","基坑监测日报","专项方案审批记录"],standards:["JGJ 120-2012 建筑基坑支护技术规程","GB 50497-2019 建筑基坑工程监测技术标准"]},{id:"pile-foundation",name:"桩基工程",aliases:["桩基","钻孔灌注桩","预制桩","静压桩","PHC管桩"],process:["测量定位","成孔(压桩)","清孔验收","钢筋笼制安","混凝土灌注","桩身检测"],params:["桩径偏差\xb15mm","沉渣厚度≤50mm(端承桩)","充盈系数≥1.0","桩顶标高偏差\xb110mm","静载试验不少于总桩数1%且≥3根"],acceptance:["桩基静载试验","低应变/声波透射检测","成孔记录","钢筋隐蔽验收"],standards:["JGJ 94-2008 建筑桩基技术规范","GB 50202-2018"]},{id:"rebar-works",name:"钢筋工程",aliases:["钢筋","钢筋绑扎","钢筋加工","钢筋连接"],process:["翻样下料","加工成型","运输堆放","绑扎安装","隐蔽验收"],params:["直螺纹接头拧紧力矩值按规格控制","接头错开≥35d且≥500mm","保护层垫块间距≤1m","绑扎搭接长度按图集16G101"],acceptance:["钢筋原材复试","接头工艺检验","隐蔽工程验收记录","保护层实测"],standards:["GB 50204-2015 混凝土结构工程施工质量验收规范","JGJ 18-2012 钢筋焊接及验收规程"]},{id:"formwork-works",name:"模板工程",aliases:["模板","模板支撑","高支模","脚手架模板"],process:["方案编制","立杆搭设","主次龙骨铺设","面板安装","验收挂牌","拆模申请"],params:["立杆间距≤900\xd7900mm(危大)","扫地杆距地≤200mm","水平杆步距≤1500mm","剪刀撑连续设置","拆模强度:板≥75%设计强度"],acceptance:["高支模专项方案论证","架体验收挂牌","沉降变形监测","拆模令"],standards:["JGJ 162-2008 建筑施工模板安全技术规范","JGJ 130-2011 建筑施工扣件式钢管脚手架安全技术规范"]},{id:"concrete-works",name:"混凝土工程",aliases:["混凝土","砼浇筑","混凝土浇筑","振捣"],process:["浇筑申请","坍落度检测","分层浇筑","振捣密实","收面养护","试块留置"],params:["坍落度按配比\xb130mm","分层浇筑厚度≤500mm","振动棒快插慢拔","养护≥7d(掺外加剂≥14d)","标养试块每100m\xb3≥1组"],acceptance:["坍落度检测记录","试块标养与同条件报告","混凝土外观检查","强度评定"],standards:["GB 50204-2015","GB/T 50107-2010 混凝土强度检验评定标准"]},{id:"steel-structure",name:"钢结构工程",aliases:["钢结构","钢构件","焊接","高强螺栓"],process:["深化设计","构件加工","进场验收","吊装就位","校正固定","焊接/螺栓连接","涂装"],params:["高强螺栓初拧终拧扭矩比1.1","焊缝等级按设计一级/二级","挠度允许值L/400","防火涂料厚度按耐火极限"],acceptance:["焊缝探伤检测","高强螺栓扭矩检查","构件尺寸偏差实测","防火涂料厚度检测"],standards:["GB 50205-2020 钢结构工程施工质量验收标准","JGJ 82-2011 钢结构高强度螺栓连接技术规程"]},{id:"masonry-works",name:"砌体工程",aliases:["砌体","砌筑","加气块","二次结构"],process:["弹线定位","排砖撂底","砌筑","构造柱植筋","圈梁浇筑","顶砖处理"],params:["灰缝厚度8~12mm","垂直度偏差≤5mm(每层)","拉结筋间距≤500mm","顶砖间隔7d斜砌"],acceptance:["砌筑砂浆试块","构造柱钢筋隐蔽验收","垂直度平整度实测","拉结筋检测"],standards:["GB 50203-2011 砌体结构工程施工质量验收规范"]},{id:"waterproofing",name:"防水工程",aliases:["防水","屋面防水","卫生间防水","地下防水","卷材"],process:["基层处理","阴阳角附加层","防水层铺贴","搭接密封","闭水/淋水试验","保护层"],params:["卷材搭接宽度≥100mm","附加层宽度≥500mm","卫生间闭水试验48h","屋面蓄水试验24h","涂膜厚度按设计≥1.5mm"],acceptance:["闭水/蓄水试验记录","隐蔽验收记录","防水材料复试","淋水试验"],standards:["GB 50207-2012 屋面工程质量验收规范","GB 50208-2011 地下防水工程质量验收规范"]},{id:"plastering",name:"抹灰工程",aliases:["抹灰","粉刷","墙面抹灰","挂网"],process:["基层处理","浇水湿润","打点冲筋","分层抹灰","压光","养护"],params:["不同基体交接处挂网宽≥200mm","每遍抹灰厚度≤7mm","平整度偏差≤4mm","空鼓面积≤400cm\xb2且不连续"],acceptance:["空鼓敲击检查","平整度垂直度实测","养护记录"],standards:["GB 50210-2018 建筑装饰装修工程质量验收标准"]},{id:"tile-paving",name:"墙地砖铺贴",aliases:["墙地砖","瓷砖","铺贴","石材"],process:["基层检查","排砖放线","选砖泡水","铺贴","勾缝","成品保护"],params:["粘结层厚度≤10mm","接缝宽度按设计要求","空鼓率单块≤15%且整面≤5%","平整度偏差≤2mm"],acceptance:["空鼓锤击检查","平整度实测","坡度泼水检查","成品保护验收"],standards:["GB 50210-2018"]},{id:"ceil-partition",name:"吊顶与轻质隔墙",aliases:["吊顶","轻钢龙骨","隔墙","石膏板"],process:["弹线定位","龙骨安装","面板安装","接缝处理","面层施工"],params:["主龙骨间距≤1200mm","吊杆间距≤1000mm","罩面板接缝错开","石膏板接缝处粘贴网格布"],acceptance:["龙骨隐蔽验收","面板平整度实测","吊顶起拱检查"],standards:["GB 50210-2018"]},{id:"painting",name:"涂饰工程",aliases:["涂料","油漆","乳胶漆","腻子"],process:["基层清理","刮腻子","打磨","底漆","面漆","修整"],params:["腻子每遍厚度≤2mm","底漆1遍面漆2遍","施工温度5~35℃","平整度偏差≤2mm"],acceptance:["涂层色泽均匀检查","无流坠起皮检查","平整度实测"],standards:["GB 50210-2018"]},{id:"door-window",name:"门窗工程",aliases:["门窗","铝合金窗","幕墙","玻璃"],process:["洞口复核","安装固定","缝隙填塞","打胶密封","开启调试","淋水试验"],params:["框与墙间隙≤5mm","密封胶连续饱满","窗扇开关力≤50N","气密水密性能按设计等级"],acceptance:["淋水试验","开启灵活检查","垂直度偏差实测","性能检测报告"],standards:["GB 50210-2018","GB/T 7106-2019 建筑外门窗气密水密抗风压性能检测方法"]},{id:"plumbing",name:"给排水工程",aliases:["给排水","给水管道","排水管道","管道安装"],process:["预留预埋","支架安装","管道安装","压力试验","冲洗消毒","通水试验"],params:["给水管试验压力为工作压力1.5倍且≥0.6MPa","排水管坡度按管径DN50~DN200取2.5%~0.8%","支架间距按管径设置","PPR热熔温度260℃"],acceptance:["管道水压试验","通球试验","灌水试验","冲洗消毒记录"],standards:["GB 50242-2002 建筑给水排水及采暖工程施工质量验收规范"]},{id:"electrical",name:"电气工程",aliases:["电气","配管","穿线","桥架","配电箱","防雷接地"],process:["预留预埋","配管桥架","穿线放缆","设备安装","绝缘测试","通电调试"],params:["管路弯曲半径≥6D(埋地≥10D)","导线绝缘电阻≥0.5MΩ","桥架支架间距≤1.5m","防雷接地电阻≤1Ω"],acceptance:["绝缘电阻测试","接地电阻测试","通电试运行","隐蔽验收记录"],standards:["GB 50303-2015 建筑电气工程施工质量验收规范"]},{id:"hvac",name:"通风空调工程",aliases:["通风空调","风管","空调","新风","保温"],process:["风管制作","吊架安装","风管安装","设备安装","严密性试验","系统调试"],params:["风管支吊架间距≤3m","中压风管漏光法检测","保温层厚度按设计","风口风速按设计值\xb110%"],acceptance:["风管严密性试验","风量平衡调试","设备单机试运行","系统联动调试"],standards:["GB 50243-2016 通风与空调工程施工质量验收规范"]},{id:"fire-protection",name:"消防工程",aliases:["消防","消火栓","喷淋","火灾报警","防排烟"],process:["预留预埋","管道安装","喷头/探测器安装","系统试压","联动调试","检测验收"],params:["喷淋试验压力≥1.4MPa","消火栓充实水柱≥10m","探测器保护半径按类别","防排烟风管严密性"],acceptance:["消防水压试验","联动调试记录","消防检测报告","竣工验收备案"],standards:["GB 50261-2017 自动喷水灭火系统施工及验收规范","GB 50166-2019 火灾自动报警系统施工及验收标准"]},{id:"weak-current",name:"弱电智能化工程",aliases:["弱电","智能化","综合布线","监控","门禁"],process:["管线预埋","桥架敷设","线缆敷设","设备安装","单机调试","系统联调"],params:["双绞线弯曲半径≥4D","光缆弯曲半径≥15D","面板安装高度距地300mm","链路测试按TIA-568"],acceptance:["链路测试报告","单机调试记录","系统联调记录","隐蔽验收"],standards:["GB 50311-2016 综合布线系统工程设计规范","GB 50339-2013 智能建筑工程质量验收规范"]},{id:"municipal-road",name:"道路工程",aliases:["道路","路基","路面","水稳","沥青"],process:["测量放线","路基处理","分层碾压","水稳摊铺","沥青摊铺","标线设施"],params:["路基压实度≥93%(路床)","水稳层7d无侧限抗压强度按设计","沥青压实度≥96%","面层平整度≤5mm(3m直尺)"],acceptance:["压实度检测","弯沉检测","取芯厚度检测","平整度实测"],standards:["CJJ 1-2008 城镇道路工程施工与质量验收规范"]},{id:"municipal-pipe",name:"市政管道工程",aliases:["管道","雨污水","沟槽","检查井","承插管"],process:["测量放线","沟槽开挖支护","基础垫层","管道安装","接口处理","闭水试验","回填"],params:["沟槽开挖放坡按土质1:0.33~1:0.5","垫层厚度按设计≥100mm","管道安装轴线偏差≤15mm","闭水试验渗水量按GB 50268","回填分层厚度≤250mm"],acceptance:["闭水试验记录","管内底高程检测","管道CCTV检测","回填压实度检测"],standards:["GB 50268-2008 给水排水管道工程施工及验收规范"]},{id:"demolition",name:"拆除工程",aliases:["拆除","墙体拆除","结构拆除","垃圾外运"],process:["方案编制","围挡隔离","管线切断","分层拆除","垃圾清运","验收交接"],params:["拆除顺序自上而下","垃圾清运日产日清","湿法作业降尘","既有保留部位防护到位"],acceptance:["拆除专项方案","既有设施保护检查","垃圾清运记录"],standards:["JGJ 147-2016 建筑拆除工程安全技术规范"]},{id:"structural-strengthen",name:"结构加固",aliases:["结构加固","粘钢","碳纤维","植筋","加大截面"],process:["设计交底","基层处理","植筋","粘贴加固","养护","检测验收"],params:["植筋锚固深度按设计≥15d","碳纤维布粘结强度≥2.5MPa","胶粘剂固化时间按产品说明","加大截面混凝土强度等级≥C25"],acceptance:["拉拔试验","粘结密实度检测","隐蔽验收记录"],standards:["GB 50367-2013 混凝土结构加固设计规范","GB 50550-2010 建筑结构加固工程施工质量验收规范"]},{id:"facade-renovation",name:"外立面整治",aliases:["外立面","立面修补","真石漆","外保温"],process:["脚手架搭设","空鼓铲除","界面处理","保温层施工","面层施工","验收落架"],params:["保温板粘贴面积≥40%","锚栓数量每平米≥6个","抗裂砂浆厚度3~5mm","面层垂直度偏差≤4mm"],acceptance:["粘结强度现场拉拔","锚栓拉拔试验","平整度实测"],standards:["GB 50411-2019 建筑节能工程施工质量验收标准","JGJ 144-2019 外墙外保温工程技术标准"]},{id:"scaffold",name:"脚手架工程",aliases:["脚手架","外架","落地架","悬挑架"],process:["方案编制","基础处理","立杆搭设","连墙件设置","安全网封闭","验收挂牌","拆除"],params:["立杆纵距≤1.5m","连墙件两步三跨","剪刀撑与地面夹角45\xb0~60\xb0","悬挑架工字钢锚固长度≥1.25倍悬挑长度","架体高于作业层1.5m"],acceptance:["架体分段验收","连墙件检查","安全网封闭检查"],standards:["JGJ 130-2011 建筑施工扣件式钢管脚手架安全技术规范"]},{id:"tower-crane",name:"起重吊装",aliases:["起重吊装","塔吊","吊装","汽车吊"],process:["方案编制","设备报验","基础验收","安装调试","检测备案","日常检查","拆除"],params:["吊装作业半径内警戒","吊索具安全系数≥6","塔吊垂直度≤4‰","风速≥6级停止吊装"],acceptance:["特种设备检测","安装验收记录","司机指挥持证检查"],standards:["JGJ 196-2010 建筑施工塔式起重机安装使用拆卸安全技术规程"]},{id:"electrical-hookup",name:"临时用电",aliases:["临电","临时用电","三级配电"],process:["方案编制","线路敷设","配电箱设置","接地保护","验收送电","日常巡检"],params:["三级配电两级漏保","漏电动作电流≤30mA/0.1s","PE线截面按相线1/2","电缆埋深≥0.7m","配电箱距地1.4~1.6m"],acceptance:["绝缘电阻测试","接地电阻测试","验收送电记录"],standards:["JGJ 46-2005 施工现场临时用电安全技术规范"]}],e=new Map,f=new Map;for(let a of d)for(let b of(f.set(a.id,a),e.set(a.name,a),a.aliases))e.set(b,a);let g=[{pattern:/安装工程|机电安装/u,cardIds:["electrical","plumbing","hvac","fire-protection","weak-current"]},{pattern:/结构加固|加固改造/u,cardIds:["structural-strengthen","concrete-works","rebar-works","formwork-works"]},{pattern:/装饰工程|装饰装修/u,cardIds:["plastering","tile-paving","ceil-partition","painting","door-window"]},{pattern:/外墙|屋面|立面/u,cardIds:["facade-renovation","waterproofing","scaffold"]},{pattern:/室外道排|道排|室外管网|雨污水/u,cardIds:["municipal-pipe","municipal-road","earthwork-excavation"]},{pattern:/智能化/u,cardIds:["weak-current"]},{pattern:/消防/u,cardIds:["fire-protection"]},{pattern:/拆除/u,cardIds:["demolition"]},{pattern:/水电改造/u,cardIds:["plumbing","electrical"]}];function h(a,b=[]){let c=new Set;for(let b of a){let a=e.get(b);for(let[d,f]of(a&&c.add(a),e))d.length>=3&&b.includes(d)&&c.add(f);for(let a of g)if(a.pattern.test(b))for(let b of a.cardIds){let a=f.get(b);a&&c.add(a)}}for(let a of d){if(c.size>=16)break;(!a.projectTypes||a.projectTypes.some(a=>b.includes(a)))&&c.add(a)}return[...c].slice(0,16)}function i(a,b){return 0===a.length?"":["【施工工艺知识卡】","以下为本领域常见工作包的工艺参考。写作专业工程/分项方案(作业对象与工程量、工序顺序、施工方法三要素融入连贯叙述)时:","1) 工序序列必须与本项目资料确认的对象匹配,可裁剪但不得照搬无关工序;表达形式按本节指定的轮换形式自行组织,不得照抄参考序列的罗列形态;",'2) 工艺参数仅作为专业表达参考,只有在绑定资料明确时才写入具体数值,否则写控制方向(如"按规范控制桩位偏差")而非编造数字;','3) 检测验收必须落到记录名称(如"闭水试验记录、隐蔽验收记录、静载试验报告")。',...a.map(a=>{let c=b.some(b=>a.aliases.includes(b)||b===a.name);return`${c?"【直接匹配】":"【项目类型通用】"}${a.name}:
|
|
23
|
+
`})}return c}function I(a){return(0,g.lg)(a)}function J(a){return(0,g.ap)(a)}},22496:(a,b,c)=>{c.d(b,{cn:()=>h,ts:()=>d,we:()=>i});let d=[{id:"earthwork-excavation",name:"土方开挖",aliases:["土方","基坑开挖","土方开挖","挖土"],process:["测量放线","标高复核","分层开挖","边坡修整","基底验槽"],params:["分层开挖厚度≤2m","基底标高偏差0~-50mm","边坡坡度按土质取1:0.5~1:1","预留200~300mm人工清底"],acceptance:["基底验槽","钎探记录","标高与轴线复核","隐蔽验收记录"],standards:["GB 50202-2018 建筑地基基础工程施工质量验收标准"]},{id:"earthwork-backfill",name:"土方回填",aliases:["素土回填","填土碾压","回填","余方弃置","人工清底"],process:["基底隐蔽验收","分层摊铺","分层碾压","压实度检测","边角补夯","表面整平"],params:["每层虚铺厚度≤300mm","填土含水率控制在最优含水率\xb12%","压实系数≥0.94","边角部位采用小型夯实机补夯","压实度每层每100m\xb2不少于1组检测"],acceptance:["压实度检测报告","回填土施工记录","隐蔽验收记录"],standards:["GB 50202-2018 建筑地基基础工程施工质量验收标准","GB 50268-2008 给水排水管道工程施工及验收规范"]},{id:"foundation-pit-support",name:"基坑支护",aliases:["基坑支护","钢板桩","土钉墙","支护桩","冠梁"],process:["测量定位","支护桩成孔","钢筋笼制安","混凝土浇筑","冠梁施工","分层开挖","位移监测"],params:["桩位偏差≤50mm","垂直度≤1%","冠梁顶标高偏差\xb110mm","监测频率:开挖期每天1次","报警值按设计位移速率3mm/d"],acceptance:["桩身完整性检测","锚杆拉拔试验","基坑监测日报","专项方案审批记录"],standards:["JGJ 120-2012 建筑基坑支护技术规程","GB 50497-2019 建筑基坑工程监测技术标准"]},{id:"pile-foundation",name:"桩基工程",aliases:["桩基","钻孔灌注桩","预制桩","静压桩","PHC管桩"],process:["测量定位","成孔(压桩)","清孔验收","钢筋笼制安","混凝土灌注","桩身检测"],params:["桩径偏差\xb15mm","沉渣厚度≤50mm(端承桩)","充盈系数≥1.0","桩顶标高偏差\xb110mm","静载试验不少于总桩数1%且≥3根"],acceptance:["桩基静载试验","低应变/声波透射检测","成孔记录","钢筋隐蔽验收"],standards:["JGJ 94-2008 建筑桩基技术规范","GB 50202-2018"]},{id:"rebar-works",name:"钢筋工程",aliases:["钢筋","钢筋绑扎","钢筋加工","钢筋连接"],process:["翻样下料","加工成型","运输堆放","绑扎安装","隐蔽验收"],params:["直螺纹接头拧紧力矩值按规格控制","接头错开≥35d且≥500mm","保护层垫块间距≤1m","绑扎搭接长度按图集16G101"],acceptance:["钢筋原材复试","接头工艺检验","隐蔽工程验收记录","保护层实测"],standards:["GB 50204-2015 混凝土结构工程施工质量验收规范","JGJ 18-2012 钢筋焊接及验收规程"]},{id:"formwork-works",name:"模板工程",aliases:["模板","模板支撑","高支模","脚手架模板"],process:["方案编制","立杆搭设","主次龙骨铺设","面板安装","验收挂牌","拆模申请"],params:["立杆间距≤900\xd7900mm(危大)","扫地杆距地≤200mm","水平杆步距≤1500mm","剪刀撑连续设置","拆模强度:板≥75%设计强度"],acceptance:["高支模专项方案论证","架体验收挂牌","沉降变形监测","拆模令"],standards:["JGJ 162-2008 建筑施工模板安全技术规范","JGJ 130-2011 建筑施工扣件式钢管脚手架安全技术规范"]},{id:"concrete-works",name:"混凝土工程",aliases:["混凝土","砼浇筑","混凝土浇筑","振捣"],process:["浇筑申请","坍落度检测","分层浇筑","振捣密实","收面养护","试块留置"],params:["坍落度按配比\xb130mm","分层浇筑厚度≤500mm","振动棒快插慢拔","养护≥7d(掺外加剂≥14d)","标养试块每100m\xb3≥1组"],acceptance:["坍落度检测记录","试块标养与同条件报告","混凝土外观检查","强度评定"],standards:["GB 50204-2015","GB/T 50107-2010 混凝土强度检验评定标准"]},{id:"steel-structure",name:"钢结构工程",aliases:["钢结构","钢构件","焊接","高强螺栓"],process:["深化设计","构件加工","进场验收","吊装就位","校正固定","焊接/螺栓连接","涂装"],params:["高强螺栓初拧终拧扭矩比1.1","焊缝等级按设计一级/二级","挠度允许值L/400","防火涂料厚度按耐火极限"],acceptance:["焊缝探伤检测","高强螺栓扭矩检查","构件尺寸偏差实测","防火涂料厚度检测"],standards:["GB 50205-2020 钢结构工程施工质量验收标准","JGJ 82-2011 钢结构高强度螺栓连接技术规程"]},{id:"masonry-works",name:"砌体工程",aliases:["砌体","砌筑","加气块","二次结构"],process:["弹线定位","排砖撂底","砌筑","构造柱植筋","圈梁浇筑","顶砖处理"],params:["灰缝厚度8~12mm","垂直度偏差≤5mm(每层)","拉结筋间距≤500mm","顶砖间隔7d斜砌"],acceptance:["砌筑砂浆试块","构造柱钢筋隐蔽验收","垂直度平整度实测","拉结筋检测"],standards:["GB 50203-2011 砌体结构工程施工质量验收规范"]},{id:"waterproofing",name:"防水工程",aliases:["防水","屋面防水","卫生间防水","地下防水","卷材"],process:["基层处理","阴阳角附加层","防水层铺贴","搭接密封","闭水/淋水试验","保护层"],params:["卷材搭接宽度≥100mm","附加层宽度≥500mm","卫生间闭水试验48h","屋面蓄水试验24h","涂膜厚度按设计≥1.5mm"],acceptance:["闭水/蓄水试验记录","隐蔽验收记录","防水材料复试","淋水试验"],standards:["GB 50207-2012 屋面工程质量验收规范","GB 50208-2011 地下防水工程质量验收规范"]},{id:"plastering",name:"抹灰工程",aliases:["抹灰","粉刷","墙面抹灰","挂网"],process:["基层处理","浇水湿润","打点冲筋","分层抹灰","压光","养护"],params:["不同基体交接处挂网宽≥200mm","每遍抹灰厚度≤7mm","平整度偏差≤4mm","空鼓面积≤400cm\xb2且不连续"],acceptance:["空鼓敲击检查","平整度垂直度实测","养护记录"],standards:["GB 50210-2018 建筑装饰装修工程质量验收标准"]},{id:"tile-paving",name:"墙地砖铺贴",aliases:["墙地砖","瓷砖","铺贴","石材"],process:["基层检查","排砖放线","选砖泡水","铺贴","勾缝","成品保护"],params:["粘结层厚度≤10mm","接缝宽度按设计要求","空鼓率单块≤15%且整面≤5%","平整度偏差≤2mm"],acceptance:["空鼓锤击检查","平整度实测","坡度泼水检查","成品保护验收"],standards:["GB 50210-2018"]},{id:"ceil-partition",name:"吊顶与轻质隔墙",aliases:["吊顶","轻钢龙骨","隔墙","石膏板"],process:["弹线定位","龙骨安装","面板安装","接缝处理","面层施工"],params:["主龙骨间距≤1200mm","吊杆间距≤1000mm","罩面板接缝错开","石膏板接缝处粘贴网格布"],acceptance:["龙骨隐蔽验收","面板平整度实测","吊顶起拱检查"],standards:["GB 50210-2018"]},{id:"painting",name:"涂饰工程",aliases:["涂料","油漆","乳胶漆","腻子"],process:["基层清理","刮腻子","打磨","底漆","面漆","修整"],params:["腻子每遍厚度≤2mm","底漆1遍面漆2遍","施工温度5~35℃","平整度偏差≤2mm"],acceptance:["涂层色泽均匀检查","无流坠起皮检查","平整度实测"],standards:["GB 50210-2018"]},{id:"door-window",name:"门窗工程",aliases:["门窗","铝合金窗","幕墙","玻璃"],process:["洞口复核","安装固定","缝隙填塞","打胶密封","开启调试","淋水试验"],params:["框与墙间隙≤5mm","密封胶连续饱满","窗扇开关力≤50N","气密水密性能按设计等级"],acceptance:["淋水试验","开启灵活检查","垂直度偏差实测","性能检测报告"],standards:["GB 50210-2018","GB/T 7106-2019 建筑外门窗气密水密抗风压性能检测方法"]},{id:"plumbing",name:"给排水工程",aliases:["给排水","给水管道","排水管道","管道安装"],process:["预留预埋","支架安装","管道安装","压力试验","冲洗消毒","通水试验"],params:["给水管试验压力为工作压力1.5倍且≥0.6MPa","排水管坡度按管径DN50~DN200取2.5%~0.8%","支架间距按管径设置","PPR热熔温度260℃"],acceptance:["管道水压试验","通球试验","灌水试验","冲洗消毒记录"],standards:["GB 50242-2002 建筑给水排水及采暖工程施工质量验收规范"]},{id:"electrical",name:"电气工程",aliases:["电气","配管","穿线","桥架","配电箱","防雷接地"],process:["预留预埋","配管桥架","穿线放缆","设备安装","绝缘测试","通电调试"],params:["管路弯曲半径≥6D(埋地≥10D)","导线绝缘电阻≥0.5MΩ","桥架支架间距≤1.5m","防雷接地电阻≤1Ω"],acceptance:["绝缘电阻测试","接地电阻测试","通电试运行","隐蔽验收记录"],standards:["GB 50303-2015 建筑电气工程施工质量验收规范"]},{id:"hvac",name:"通风空调工程",aliases:["通风空调","风管","空调","新风","保温"],process:["风管制作","吊架安装","风管安装","设备安装","严密性试验","系统调试"],params:["风管支吊架间距≤3m","中压风管漏光法检测","保温层厚度按设计","风口风速按设计值\xb110%"],acceptance:["风管严密性试验","风量平衡调试","设备单机试运行","系统联动调试"],standards:["GB 50243-2016 通风与空调工程施工质量验收规范"]},{id:"fire-protection",name:"消防工程",aliases:["消防","消火栓","喷淋","火灾报警","防排烟"],process:["预留预埋","管道安装","喷头/探测器安装","系统试压","联动调试","检测验收"],params:["喷淋试验压力≥1.4MPa","消火栓充实水柱≥10m","探测器保护半径按类别","防排烟风管严密性"],acceptance:["消防水压试验","联动调试记录","消防检测报告","竣工验收备案"],standards:["GB 50261-2017 自动喷水灭火系统施工及验收规范","GB 50166-2019 火灾自动报警系统施工及验收标准"]},{id:"weak-current",name:"弱电智能化工程",aliases:["弱电","智能化","综合布线","监控","门禁"],process:["管线预埋","桥架敷设","线缆敷设","设备安装","单机调试","系统联调"],params:["双绞线弯曲半径≥4D","光缆弯曲半径≥15D","面板安装高度距地300mm","链路测试按TIA-568"],acceptance:["链路测试报告","单机调试记录","系统联调记录","隐蔽验收"],standards:["GB 50311-2016 综合布线系统工程设计规范","GB 50339-2013 智能建筑工程质量验收规范"]},{id:"municipal-road",name:"道路工程",aliases:["道路","路基","路面","水稳","沥青"],process:["测量放线","路基处理","分层碾压","水稳摊铺","沥青摊铺","标线设施"],params:["路基压实度≥93%(路床)","水稳层7d无侧限抗压强度按设计","沥青压实度≥96%","面层平整度≤5mm(3m直尺)"],acceptance:["压实度检测","弯沉检测","取芯厚度检测","平整度实测"],standards:["CJJ 1-2008 城镇道路工程施工与质量验收规范"]},{id:"municipal-pipe",name:"市政管道工程",aliases:["管道","雨污水","沟槽","检查井","承插管"],process:["测量放线","沟槽开挖支护","基础垫层","管道安装","接口处理","闭水试验","回填"],params:["沟槽开挖放坡按土质1:0.33~1:0.5","垫层厚度按设计≥100mm","管道安装轴线偏差≤15mm","闭水试验渗水量按GB 50268","回填分层厚度≤250mm"],acceptance:["闭水试验记录","管内底高程检测","管道CCTV检测","回填压实度检测"],standards:["GB 50268-2008 给水排水管道工程施工及验收规范"]},{id:"demolition",name:"拆除工程",aliases:["拆除","墙体拆除","结构拆除","垃圾外运"],process:["方案编制","围挡隔离","管线切断","分层拆除","垃圾清运","验收交接"],params:["拆除顺序自上而下","垃圾清运日产日清","湿法作业降尘","既有保留部位防护到位"],acceptance:["拆除专项方案","既有设施保护检查","垃圾清运记录"],standards:["JGJ 147-2016 建筑拆除工程安全技术规范"]},{id:"structural-strengthen",name:"结构加固",aliases:["结构加固","粘钢","碳纤维","植筋","加大截面"],process:["设计交底","基层处理","植筋","粘贴加固","养护","检测验收"],params:["植筋锚固深度按设计≥15d","碳纤维布粘结强度≥2.5MPa","胶粘剂固化时间按产品说明","加大截面混凝土强度等级≥C25"],acceptance:["拉拔试验","粘结密实度检测","隐蔽验收记录"],standards:["GB 50367-2013 混凝土结构加固设计规范","GB 50550-2010 建筑结构加固工程施工质量验收规范"]},{id:"facade-renovation",name:"外立面整治",aliases:["外立面","立面修补","真石漆","外保温"],process:["脚手架搭设","空鼓铲除","界面处理","保温层施工","面层施工","验收落架"],params:["保温板粘贴面积≥40%","锚栓数量每平米≥6个","抗裂砂浆厚度3~5mm","面层垂直度偏差≤4mm"],acceptance:["粘结强度现场拉拔","锚栓拉拔试验","平整度实测"],standards:["GB 50411-2019 建筑节能工程施工质量验收标准","JGJ 144-2019 外墙外保温工程技术标准"]},{id:"scaffold",name:"脚手架工程",aliases:["脚手架","外架","落地架","悬挑架"],process:["方案编制","基础处理","立杆搭设","连墙件设置","安全网封闭","验收挂牌","拆除"],params:["立杆纵距≤1.5m","连墙件两步三跨","剪刀撑与地面夹角45\xb0~60\xb0","悬挑架工字钢锚固长度≥1.25倍悬挑长度","架体高于作业层1.5m"],acceptance:["架体分段验收","连墙件检查","安全网封闭检查"],standards:["JGJ 130-2011 建筑施工扣件式钢管脚手架安全技术规范"]},{id:"tower-crane",name:"起重吊装",aliases:["起重吊装","塔吊","吊装","汽车吊"],process:["方案编制","设备报验","基础验收","安装调试","检测备案","日常检查","拆除"],params:["吊装作业半径内警戒","吊索具安全系数≥6","塔吊垂直度≤4‰","风速≥6级停止吊装"],acceptance:["特种设备检测","安装验收记录","司机指挥持证检查"],standards:["JGJ 196-2010 建筑施工塔式起重机安装使用拆卸安全技术规程"]},{id:"electrical-hookup",name:"临时用电",aliases:["临电","临时用电","三级配电"],process:["方案编制","线路敷设","配电箱设置","接地保护","验收送电","日常巡检"],params:["三级配电两级漏保","漏电动作电流≤30mA/0.1s","PE线截面按相线1/2","电缆埋深≥0.7m","配电箱距地1.4~1.6m"],acceptance:["绝缘电阻测试","接地电阻测试","验收送电记录"],standards:["JGJ 46-2005 施工现场临时用电安全技术规范"]}],e=new Map,f=new Map;for(let a of d)for(let b of(f.set(a.id,a),e.set(a.name,a),a.aliases))e.set(b,a);let g=[{pattern:/安装工程|机电安装/u,cardIds:["electrical","plumbing","hvac","fire-protection","weak-current"]},{pattern:/结构加固|加固改造/u,cardIds:["structural-strengthen","concrete-works","rebar-works","formwork-works"]},{pattern:/装饰工程|装饰装修/u,cardIds:["plastering","tile-paving","ceil-partition","painting","door-window"]},{pattern:/外墙|屋面|立面/u,cardIds:["facade-renovation","waterproofing","scaffold"]},{pattern:/室外道排|道排|室外管网|雨污水/u,cardIds:["municipal-pipe","municipal-road","earthwork-excavation"]},{pattern:/智能化/u,cardIds:["weak-current"]},{pattern:/消防/u,cardIds:["fire-protection"]},{pattern:/拆除/u,cardIds:["demolition"]},{pattern:/水电改造/u,cardIds:["plumbing","electrical"]}];function h(a,b=[]){let c=new Set;for(let b of a){let a=e.get(b);for(let[d,f]of(a&&c.add(a),e))d.length>=3&&b.includes(d)&&c.add(f);for(let a of g)if(a.pattern.test(b))for(let b of a.cardIds){let a=f.get(b);a&&c.add(a)}}for(let a of d){if(c.size>=16)break;(!a.projectTypes||a.projectTypes.some(a=>b.includes(a)))&&c.add(a)}return[...c].slice(0,16)}function i(a,b){return 0===a.length?"":["【施工工艺知识卡】","以下为本领域常见工作包的工艺参考。写作专业工程/分项方案(作业对象与工程量、工序顺序、施工方法三要素融入连贯叙述)时:","1) 工序序列必须与本项目资料确认的对象匹配,可裁剪但不得照搬无关工序;表达形式按本节指定的轮换形式自行组织,不得照抄参考序列的罗列形态;",'2) 工艺参数仅作为专业表达参考,只有在绑定资料明确时才写入具体数值,否则写控制方向(如"按规范控制桩位偏差")而非编造数字;','3) 检测验收必须落到记录名称(如"闭水试验记录、隐蔽验收记录、静载试验报告")。',...a.map(a=>{let c=b.some(b=>a.aliases.includes(b)||b===a.name);return`${c?"【直接匹配】":"【项目类型通用】"}${a.name}:
|
|
24
24
|
- 工序序列(参考顺序):${a.process.join("、")}
|
|
25
25
|
- 工艺参数(参考):${a.params.join(";")}
|
|
26
26
|
- 检测验收:${a.acceptance.join(";")}
|
|
@@ -29,7 +29,7 @@ ${i||""}
|
|
|
29
29
|
${m.join("\n")}`,o=a.methods.filter(a=>(a.applicableWorks||[]).some(a=>a.includes(b)||b.includes(a))||a.name.includes(b)).slice(0,4),p=a.resources.filter(a=>!f(a.name)&&(n.includes(a.name)||(a.sourceFiles||[]).some(a=>h.includes(a)))).slice(0,8),q=g([...o.flatMap(a=>a.steps||[])],10),r=p.map(a=>a.name).filter(Boolean),s=g([...o.map(a=>a.name),...m.filter(a=>!r.some(b=>b.length>=4&&a.includes(b)))],10),t=(i||"").trim()||m.slice(0,2).join(";")||b;(0!==m.length||t||0!==q.length||0!==s.length)&&(k.add(b),j.push({name:b,scope:t,quantities:g([...p.map(a=>`${a.name}${a.quantity?`:${a.quantity}${a.unit||""}`:""}`),...m.filter(a=>/\d|㎡|m2|m²|米|m³|立方|吨|台|套|项/u.test(a)&&!r.some(b=>b.length>=4&&a.includes(b)))],8),materials:g(p.map(a=>[a.name,a.spec].filter(Boolean).join("|")),8),process:q,methods:s,acceptance:g([...a.standards.filter(a=>(a.sourceFiles||[]).some(a=>h.includes(a))).map(a=>a.description||a.code),...m.filter(a=>/验收|复试|检测|见证|检验|质量/u.test(a))],8).filter(a=>/验收|检测|试验|复试|实测|试块|测试|检查|记录|报告|见证|取样|拉拔|探伤|闭水|通电|绝缘|接地|电阻|偏差|压实度|密实度|强度|合格|规范/u.test(a)),sourceFiles:h}))},m=[...h.keys()],n=a=>{if(m.includes(a))return a;for(let b of m)if(a.startsWith(`${b}-`)||a.startsWith(`${b}-`))return b},o=new Map;for(let b of a.works){let a=(b.name||"").trim();if(!a)continue;let c=n(a);if(!c)continue;let d=o.get(c)||{scope:"",files:[],items:[]};a===c&&b.scope?d.scope=b.scope:d.scope||(d.scope=b.scope||""),d.files.push(...b.sourceFiles||[]),d.items.push(...b.relatedItems||[]),o.set(c,d)}for(let[a,b]of h){let c=o.get(a),d=c?.scope||b.map(a=>i.get(a)).find(Boolean)||"";l(a,[...new Set([...b,...c?.files||[]])],d,c?.items||[])}for(let b of a.works){let a=(b.name||"").trim();!a||n(a)||l(a,b.sourceFiles||[],b.scope,b.relatedItems||[])}let p=j.map(a=>a.name);return{workPackages:j,controlMatrix:a.risks.slice(0,10).map(b=>({feature:b.risk,difficulty:b.mitigation||b.risk,relatedWorkPackages:p.filter(a=>b.mitigation.includes(a)||b.risk.includes(a)).slice(0,4),methods:a.methods.filter(a=>b.mitigation.includes(a.name)||b.risk.includes(a.name)).map(a=>a.name).slice(0,4),qualityControls:D(a.standards.map(a=>a.description||a.code).filter(Boolean),4),safetyControls:D([b.mitigation,...a.requirements.filter(a=>/安全|风险|危大|消防|应急/u.test(a.category+a.detail)).map(a=>a.detail)],4)})),qualityControls:D([...a.standards.map(a=>a.description||a.code),...a.requirements.filter(a=>/质量|验收|复试|检测/u.test(a.category+a.detail)).map(a=>a.detail)],18),safetyControls:D([...a.risks.map(a=>`${a.risk}:${a.mitigation}`),...a.requirements.filter(a=>/安全|危大|消防|应急|文明/u.test(a.category+a.detail)).map(a=>a.detail)],18),resourcePlans:D(a.resources.map(a=>`${a.name}${a.spec?`|${a.spec}`:""}${a.quantity?`|${a.quantity}${a.unit||""}`:""}`),24),acceptanceRecords:D([...a.standards.map(a=>a.description||a.code),...a.requirements.filter(a=>/资料|验收|记录|检验批|隐蔽/u.test(a.category+a.detail)).map(a=>a.detail)],18),evidenceRankingHints:["优先使用工程量清单、图纸设计说明、技术规范、发包人要求、补疑澄清中的施工范围、工程量、材料规格、工艺流程、验收标准;降低投标须知、保证金、付款、违约金、电子交易系统等商务合同条款权重。"]}}function F(a){if(!a||0===a.workPackages.length)return"";let b=a.workPackages.slice(0,12).map(a=>{let b=(0,k.eL)([...a.quantities,...a.materials,...a.methods].map(a=>a.replace(/\s+/gu," ").trim()).filter(a=>a.length>=4&&a.length<=120)),c=(0,k.xu)(a.process.map(a=>a.replace(/\s+/gu," ").trim()).filter(a=>a.length>=2&&a.length<=40),b);return{name:a.name,scope:a.scope,quantities:b,process:c,acceptance:a.acceptance}}),c=b.map(a=>({name:a.name,scope:a.scope,quantities:a.quantities,materials:[],process:a.process,methods:[],acceptance:a.acceptance}));return["## 施工组织设计专项图谱","主要施工工作包:",...b.map((a,b)=>`${b+1}. ${a.name}|范围:${a.scope}|工程量/材料:${a.quantities.slice(0,5).join(";")||"按证据展开"}|流程:${a.process.slice(0,8).join("→")||"按施工准备→实施→检查→验收组织"}|验收:${a.acceptance.slice(0,4).join(";")||"按规范和资料闭环"}`),"施工工作包结构化数据:",JSON.stringify(c),a.controlMatrix.length?"重点难点—施工内容—措施矩阵:":"",...a.controlMatrix.slice(0,8).map(a=>`- ${a.feature} → ${a.relatedWorkPackages.join("、")||"相关工作包"} → ${[...a.methods,...a.qualityControls,...a.safetyControls].slice(0,6).join(";")}`),a.evidenceRankingHints.join("\n")].filter(Boolean).join("\n")}async function G(a,b){let c,d;b?.("files",15,"正在扫描已入库文件并抽样提取内容事实");let h=await (0,g.Qh)().getProject(a),k=(0,g.Yy)(a).filter(a=>"disk"!==a.status&&"error"!==a.status&&Number(a.indexedAt||0)>0&&Number(a.chunkCount||0)>0).map(a=>{var b;let c=a.relativePath.split(/[\\/]/u).filter(Boolean)[0],d=function(a){let b=new Set(["project_overview"]);return/招标|发包人要求|答疑|补疑|澄清/u.test(a)&&b.add("tender_requirement"),/图纸|设计说明|施工图|道路|桥梁|园林|交通|结构/u.test(a)&&b.add("drawing"),/清单|工程量|xls|xlsx/u.test(a)&&b.add("boq"),/质量|验收|规范|标准/u.test(a)&&b.add("quality_standard"),/安全|危大|风险|文明|环保/u.test(a)&&b.add("safety_requirement"),/施工|方案|组织|进度|工期|材料|机械|劳动力/u.test(a)&&b.add("construction_method"),[...b]}(a.relativePath),g=h.listChunksSampled({relativePath:a.relativePath,sampleSize:64}),i=function(a,b=48){let c=a.map(a=>s(String(a.content||""))).filter(Boolean);return c.length<=b?c:[...c.slice(0,b-4),...c.slice(-4)]}(g),j=(b=a.relativePath,/投标函|我方已仔细研究/u.test(b)?"投标函/承诺格式,不进入施工正文":/保证金|账户|协议书|资金托管/u.test(b)?"资金账户/保证金资料,不进入施工正文":/开标|评标|交易系统|示范文本/u.test(b)?"招投标流程/示范文本,不进入施工正文":/报价|税率|利润|最高投标限价|招标控制价|计价依据|计价定额/u.test(b)?"商务报价资料,不进入施工正文":/招标文件正文|清单编制说明|招标总说明|招标需求/u.test(b)?"招标说明/清单编制说明,不进入施工正文":void 0),k=/\.(?:xlsx?|csv|tsv)$/iu.test(a.relativePath),l=j?[]:k?function(a){let b=new Set,c=/工程名称|序号|项目编码|项目名称|项目特征|计量\s*单位|工程量|金额|综合单价|合价|人工费|机械费|暂估价|分部小计|本页|续表|合计|汇总/u,d={seq:0,name:2,feature:3,unit:4,quantity:5},e=null;for(let g of a)for(let a of String(g.content||"").split(/\r?\n/u)){let g=a.trim();if(!g.startsWith("|"))continue;let h=g.split("|").map(a=>a.trim());if(h.length<7)continue;let i=h.slice(1,-1);if((0,f.scoreTableHeaderRow)(i)>=4&&!/^\d+$/.test(i[0]||"")){e=(0,f.locateTableColumns)(i);continue}let j=e??d,k=(j.seq??0)>=0?i[j.seq??0]||"":i[0]||"",l=(j.name??2)>=0?i[j.name??2]||"":i[2]||"",m=(j.feature??3)>=0?i[j.feature??3]||"":i[3]||"",n=(j.unit??4)>=0?i[j.unit??4]||"":i[4]||"",o=(j.quantity??5)>=0?i[j.quantity??5]||"":i[5]||"";if(!/^\d+$/.test(k)||!l||!m||c.test(`${l}${m}`))continue;let p=m.replace(/\s+/gu," ").replace(/[,,;;]?\s*(?:\d+[、..]\s*)?(?:未尽事宜|具体详见|详见)[^,,;;]*?,?满足验收要求/gu,"").replace(/[,,;;]?\s*(?:\d+[、..]\s*)?含拆除、垃圾打堆、外弃[^,,;;]*/gu,"").replace(/[,,;;]?\s*投标人(?:结合设计图纸、地勘报告)?(?:自行)?踏勘现场后综合考虑/gu,"").replace(/[||]+/gu," ").replace(/\s*\d+[..]\s*$/gu,"").replace(/[。.]\s*$/gu,"").replace(/\s+/gu," ").trim();if(p.length<2)continue;let q=o&&n?`${o}${n}`:o||n,r=`${l}:${p.slice(0,80)}${q?`|${q}`:""}`;if(!(r.replace(/[^0-9a-zA-Z\u4e00-\u9fa5]/gu,"").length<4)&&(b.add(r),b.size>=60))return[...b]}return[...b]}(g):function(a){let b=new Set;for(let c of a){for(let a of c.split(/[。;;\n]/u)){let c=s(a);if(!(c.length<12||c.length>180||t(c))&&!(/^(?:项目编号|招标编号|备案编号|工程编号|资料名称|文档名称|文件名称|文档类型|文件类型|创建时间|修改时间|编制单位|编制日期)\s*[::]/u.test(c)||/^[##]{1,6}/u.test(c))&&(/(项目|工程|道路|桥梁|园林|交通|结构|排水|照明|绿化|工期|质量|安全|危大|材料|机械|劳动力|验收|规范|清单|工程量|施工)/u.test(c)&&b.add(c),b.size>=24))break}if(b.size>=24)break}return[...b]}(i),m=function(a,b){let c=`${a}
|
|
30
30
|
${b.join("\n")}`,d=new Set;for(let[a,b]of Object.entries(u))b.some(a=>c.includes(a))&&d.add(a);return[...d]}(a.relativePath,l),n=function(a,b){let c=`${a}
|
|
31
31
|
${b.join("\n")}`,d=new Set;return/工期|进度|节点|计划/u.test(c)&&d.add("确保工期的保障体系与措施"),/质量|验收|复试|见证取样|规范|标准/u.test(c)&&d.add("确保质量的保障体系与措施"),/安全|危大|风险|应急|临电|消防/u.test(c)&&d.add("确保安全生产的管理体系与措施"),/劳动力|材料|机械|设备|周转|资源/u.test(c)&&d.add("确保人、材、机的保障体系与措施"),/施工方法|施工工艺|道路|桥梁|排水|照明|园林|绿化/u.test(c)&&d.add("主要分部分项工程施工方案"),/环保|扬尘|文明|绿色/u.test(c)&&d.add("环境保护与文明施工措施"),/项目|工程|建设地点|建设规模|招标范围/u.test(c)&&d.add("工程概况与施工部署"),[...d]}(a.relativePath,l);return{relativePath:a.relativePath,root:c,fileName:e.basename(a.relativePath),category:a.category,format:a.format,chunkCount:a.chunkCount,indexedAt:a.indexedAt,contentHash:a.contentHash,status:a.status,roles:d,usableForBody:!j,excludeReason:j,summarySignals:i,contentFacts:l,intentTags:m,chapterHints:n}}),n=(0,l.lX)(k.flatMap(v)),o=k.flatMap(a=>a.intentTags.flatMap(b=>a.contentFacts.map(a=>({fact:a,relevance:function(a,b){let c=u[a];if(!c)return 0;let d=0;for(let a of c)b.includes(a)&&(d+=a.length>=4?2:1);return d>0&&/\d/u.test(b)&&(d+=1),d}(b,a)})).filter(a=>a.relevance>0).sort((a,b)=>b.relevance-a.relevance).slice(0,12).map((c,d)=>({intent:b,filePath:a.relativePath,title:a.fileName,content:c.fact,score:Math.min(.96,.6+.08*c.relevance)-.005*d,roleId:a.roles[0]}))));b?.("facts",45,`内容事实与章节意图索引已提取:${n.length} 条事实、${o.length} 条章节意图证据`);let q={selectedRoots:[...new Set(k.map(a=>a.root).filter(Boolean))],selectedFiles:k.map(a=>a.relativePath),totalAvailableFiles:k.length,ambiguous:!1,locked:!0,reason:"项目入库完成后预计算的项目级资料范围",rejectedRoots:[],scopeHash:w(k)},x=(0,i.hw)(a,q),y=(0,i.rj)({facts:n,materialSnapshot:x});b?.("graph",65,"正在构建项目图谱(LLM 分域结构化提取,确定性 base 图谱兑底)");let z=!1;try{let b=await (0,j.i)({evidence:k.flatMap(a=>a.contentFacts.slice(0,a.roles.includes("tender_requirement")?15:a.roles.includes("boq")?12:8).map((b,c)=>({chapterId:"project-intelligence",filePath:a.relativePath,content:b,score:.82-.02*c,roleId:a.roles[0],processingType:"project_intelligence",source:"project-intelligence"}))),projectRoot:a,requirement:"项目入库后预计算项目图谱",templateId:"project-intelligence"});if(!b.graph)throw Error(`项目图谱预计算失败:${b.stage.message||b.stage.status}`);c=function(a,b){let c=(a,b)=>{let c=new Map;for(let d of[...a,...b]){let a=JSON.stringify(d);c.has(a)||c.set(a,d)}return[...c.values()]},d=c(a.works,b.works),e=c(a.methods,b.methods),f=c(a.resources,b.resources),g=c(a.schedule,b.schedule),h=c(a.standards,b.standards),i=c(a.siteConditions,b.siteConditions),j=c(a.risks,b.risks),k=c(a.requirements,b.requirements).filter(a=>!a.category.includes("评标")),l=c(a.addendumChanges,b.addendumChanges),m=[...g.flatMap(a=>[a.duration,a.milestone].filter(Boolean)),...h.flatMap(a=>[a.code,a.description].filter(Boolean)),...i.flatMap(a=>[a.condition,a.impact].filter(Boolean))].map(a=>a.replace(/\s+/gu,"")),n=[...new Set([...a.gaps||[],...b.gaps||[]])].filter(a=>{let b=a.replace(/\s+/gu," ");if(C(b))return!1;if(!/未找到|未直接出现|未提供|未在资料|未体现|未明确/u.test(b))return!0;let c=b.match(/[((]([^(())]{2,60})[))]/u)?.[1]||"";if(c){let a=c.split(/[、,,]/u).map(a=>a.replace(/\s+/gu,"")).filter(a=>a.length>=4);if(a.length>0&&a.every(a=>m.some(b=>b.includes(a))))return!1;if(!/^(?:如|例如|比如|诸如|仅提及|仅有|只有|含|包括)/u.test(c))return!0}return!(/计划工期/u.test(b)&&g.length>0||/质量标准/u.test(b)&&h.length>0||/建设地点/u.test(b)&&i.length>0)&&![[/建设规模|建筑面积|投资额|层数|建设内容/u,d.length],[/招标范围|施工范围/u,d.length],[/工程量/u,f.length],[/设备表|设备名称|设备参数|规格型号/u,f.length],[/进度计划|工期安排|开工日期|竣工日期|开工令/u,g.length],[/施工方法|工艺流程|施工方案/u,e.length],[/验收标准|验收要求|验收清单/u,h.length],[/补疑|澄清|答疑|变更信息/u,k.length+l.length],[/项目风险|安全风险|风险提示/u,j.length]].some(([a,c])=>a.test(b)&&c>0)});return{works:d,methods:e,resources:f,schedule:g,standards:h,siteConditions:i,risks:j,requirements:k,addendumChanges:l,gaps:n,generatedAt:b.generatedAt||Date.now()}}(y,b.graph),d=b.stage.message||"项目图谱已预计算"}catch(b){let a=b instanceof Error?b.message:String(b);c=y,d=`项目图谱降级为确定性基础图谱(LLM 增强失败:${a}),将在下次构建时自动重试增强`,z=!0,console.warn("[project-intelligence] graph enhancement failed, degraded to base graph",a)}b?.("assembly",85,"正在汇总蓝图、施工组织图谱与缓存落盘");let A=E(c,k),B={version:m,projectRoot:a,projectId:(0,f.computeProjectId)(a),createdAt:Date.now(),sourceHash:w(k),fileCount:k.length,files:k,facts:n,chapterIntentIndex:o,projectGraph:c,projectGraphMessage:d,graphDegraded:z||void 0,constructionOrganizationGraph:A};return r(p(a),B),B}function H(a){let b=A(a.projectRoot);if(!b)return;let c=a.materialScope||(0,i.ZR)(a.projectRoot,a.template,a.requirement||"");if(c.ambiguous||!c.locked||0===c.selectedFiles.length)return;let e=(0,l.c6)({version:n,selectedFiles:c.selectedFiles.slice().sort(),templateId:a.template.id,chapters:a.template.chapters.map(a=>({id:a.id,title:a.title,sections:a.sections||[]}))}),f=function(a,b){let c=q(a,b);if(d.existsSync(c))try{let b=JSON.parse(d.readFileSync(c,"utf8"));if(b.version!==n||!x(a,b.files))return;return b}catch{return}}(a.projectRoot,e)||function(a){let b=new Set(a.selectedFiles),c=a.cache.files.filter(a=>b.has(a.relativePath));if(0===c.length||!x(a.projectRoot,c))return;let d=a.cache.facts.filter(a=>b.has(a.sourceFile)),e=function(a,b){let c=a=>!a?.length||a.some(a=>b.has(a));return{...a,works:a.works.filter(a=>c(a.sourceFiles)),methods:a.methods.filter(a=>c(a.sourceFiles)),resources:a.resources.filter(a=>c(a.sourceFiles)),schedule:a.schedule.filter(a=>c(a.sourceFiles)),standards:a.standards.filter(a=>c(a.sourceFiles)),risks:a.risks.filter(a=>c(a.sourceFiles)),requirements:a.requirements.filter(a=>c(a.sourceFiles)),siteConditions:a.siteConditions.filter(a=>c(a.sourceFiles)),addendumChanges:a.addendumChanges.filter(a=>b.has(a.sourceFile))}}(a.cache.projectGraph,b),f=function(a,b){let c=a.workPackages.filter(a=>{let c;return!(c=a.sourceFiles).length||c.some(a=>b.has(a))}),d=new Set(c.map(a=>a.name));return{...a,workPackages:c,controlMatrix:a.controlMatrix.filter(a=>0===a.relatedWorkPackages.length||a.relatedWorkPackages.some(a=>d.has(a)))}}(a.cache.constructionOrganizationGraph,b),g=function(a){let b={};for(let c of a.template.chapters){let d=function(a,b=[]){let c=`${a}
|
|
32
|
-
${b.join("\n")}`,d=new Set,e=(a,b)=>{b.test(c)&&d.add(a)};return e("工期进度",/工期|进度|计划|节点/u),e("质量验收",/质量|验收|复试|见证|控制点/u),e("安全危大",/安全|危大|风险|应急/u),e("施工部署",/部署|总平面|施工组织|现场/u),e("施工方法",/施工方案|施工方法|分部分项|工艺|新技术|新工艺/u),e("人材机",/人材机|劳动力|材料|机械|周转|人、材、机|人员设备/u),e("环境文明",/环保|文明|扬尘|绿色/u),e("工程概况",/概况|工程特点|重点|难点|整体理解|项目理解|工程理解|项目概况/u),[...d]}(c.title,c.sections||[]);if(0===d.length)continue;let e=new Set(d),f=a.entries.filter(b=>a.selected.has(b.filePath)&&e.has(b.intent)).sort((a,b)=>b.score-a.score).slice(0,24).map(a=>({chapterId:c.id,filePath:a.filePath,score:a.score,content:a.content,roleId:a.roleId,processingType:"project_intelligence",sectionTitle:a.intent,source:"project-intelligence"}));f.length&&(b[c.id]=f)}return b}({template:a.template,entries:a.cache.chapterIntentIndex||[],selected:b}),h={version:n,projectRoot:a.projectRoot,createdAt:Date.now(),scopeHash:a.scopeHash,selectedRoots:a.selectedRoots,selectedFiles:a.selectedFiles,sourceHash:(0,l.c6)(c.map(a=>({path:a.relativePath,hash:a.contentHash,chunkCount:a.chunkCount})).sort((a,b)=>a.path.localeCompare(b.path))),files:c,facts:d,projectGraph:e,constructionOrganizationGraph:f,evidenceByChapterId:g};return r(q(a.projectRoot,a.scopeHash),h),h}({projectRoot:a.projectRoot,template:a.template,cache:b,selectedFiles:c.selectedFiles,selectedRoots:c.selectedRoots,scopeHash:e});if(f)return{cache:b,scope:c,scopeSnapshot:f,files:f.files,facts:f.facts,evidenceByChapterId:f.evidenceByChapterId,projectGraph:f.projectGraph,constructionOrganizationGraph:f.constructionOrganizationGraph,constructionOrganizationContext:F(f.constructionOrganizationGraph)}}let I=new Map,J=new Set;function K(a,b,c){(0,h.Qf)(a,{id:b,type:"reindex",title:"项目理解缓存",...c})}function L(a){if(I.has(a))return void J.add(a);let b=`project-intelligence-${Date.now()}`;K(a,b,{stage:"generating",status:"processing",percent:5,message:"正在构建项目级蓝图、图谱、事实索引和章节意图索引"});let c=G(a,(c,d,e)=>{K(a,b,{stage:"generating",status:"processing",percent:d,message:e})});I.set(a,c),c.then(c=>{K(a,b,{stage:"done",status:"success",percent:100,message:`项目理解缓存完成:${c.fileCount} 份资料,${c.facts.length} 条事实,${c.chapterIntentIndex.length} 条章节意图证据`})}).catch(c=>{let d=c instanceof Error?c.message:String(c);K(a,b,{stage:"error",status:"error",percent:100,message:d,error:d}),console.warn("[project-intelligence] build failed",d)}).finally(()=>{I.delete(a),J.delete(a)&&L(a)})}async function M(a){let b=I.get(a);if(b)return b;let c=`project-intelligence-${Date.now()}`;K(a,c,{stage:"generating",status:"processing",percent:5,message:"正在构建项目级蓝图、图谱、事实索引和章节意图索引"});let d=G(a,(b,d,e)=>{K(a,c,{stage:"generating",status:"processing",percent:d,message:e})});I.set(a,d);try{let b=await d;return K(a,c,{stage:"done",status:"success",percent:100,message:`项目理解缓存完成:${b.fileCount} 份资料,${b.facts.length} 条事实,${b.chapterIntentIndex.length} 条章节意图证据`}),b}catch(d){let b=d instanceof Error?d.message:String(d);throw K(a,c,{stage:"error",status:"error",percent:100,message:b,error:b}),d}finally{I.delete(a),J.delete(a)&&L(a)}}},32434:(a,b,c)=>{c.d(b,{IA:()=>x,Qu:()=>u,SU:()=>w,ZR:()=>o,cN:()=>v,hw:()=>p,rj:()=>t});var d=c(76760),e=c(44533),f=c(61373),g=c(80439),h=c(22157);let i=/知识库|系统暂未|项目资料暂未|资料未明确|暂未明确|待确认|待资料复核|待系统|通用兜底(?:段落|模板)?|兜底(?:占位|模板|内容)|未检索到|资料不足|无法确认|建议补充|不适用|COL\d+|可核验信息|以本项目招标文件明确内容为准/u;function j(a){return a.replace(/\\/gu,"/").replace(/^\/+|\/+$/gu,"")}function k(a){let b=j(a).split("/").filter(Boolean);return b.length>1?b[0]:d.basename(b[0]||"当前项目")}function l(a){return a.replace(/[\s_\-—()()【】、,,.。·]/gu,"").replaceAll("[","").replaceAll("]","").toLowerCase()}function m(a){return"disk"!==a.status&&"error"!==a.status&&Number(a.indexedAt||0)>0&&Number(a.chunkCount||0)>0}function n(a){let b=new Set;for(let c of a)for(let a of c.relativePath.match(/\b\d{4}[A-Z]{2,}\d{4,}\b/gu)||[])b.add(a);return[...b]}function o(a,b,c=""){let d=(0,e.Yy)(a).filter(m),f=(b.projectBindings||[]).filter(a=>a.materialRootPath).map(a=>({materialRootPath:j(a.materialRootPath)})).map(a=>a.materialRootPath).filter(Boolean),g=f.length?d.filter(a=>f.some(b=>j(a.relativePath)===b||j(a.relativePath).startsWith(`${b}/`))):d,i=function(a){let b=new Map;for(let c of a){let a=k(c.relativePath);b.set(a,[...b.get(a)||[],c])}return b}(g),p=c.trim(),q=[...i.keys()];if(p){let a=[...i.entries()].map(([a,b])=>({root:a,files:b,score:function(a,b){let c=l(a),d=l(b);if(c.length>=4&&d.includes(c.slice(0,Math.min(16,c.length))))return 100;let e=new Set(["项目","工程","施工","总承包","资料","招标","图纸","清单"]);return a.split(/(?:\s|_|-|—|(|)|\(|\)|【|】|\[|\]|、|,|,|\.)+/u).filter(a=>a.length>=2&&!e.has(a)).reduce((a,c)=>a+(b.includes(c)?Math.min(20,c.length):0),0)}(a,p)})).filter(a=>a.score>0).sort((a,b)=>b.score-a.score);if(1===a.length||a.length>1&&a[0].score>a[1].score){let b=[a[0].root],c=a[0].files.map(a=>a.relativePath),e=n(a[0].files);return e.length>=2?{selectedRoots:[],selectedFiles:[],totalAvailableFiles:d.length,ambiguous:!0,locked:!1,reason:`资料组「${a[0].root}」内检测到 ${e.length} 个不同项目编号(${e.join("、")}),疑似多份项目资料混放,已阻断生成避免跨项目污染`,rejectedRoots:q,scopeHash:(0,h.c6)({ambiguous:!0,mixedProjectNos:e})}:{selectedRoots:b,selectedFiles:c,totalAvailableFiles:d.length,ambiguous:!1,locked:!0,reason:`用户需求唯一匹配资料组:${a[0].root}`,rejectedRoots:q.filter(a=>!b.includes(a)),scopeHash:(0,h.c6)({selectedRoots:b,selectedFiles:c})}}if(a.length>1){let b=a.filter(b=>b.score===a[0].score).map(a=>a.root);return{selectedRoots:[],selectedFiles:[],totalAvailableFiles:d.length,ambiguous:!0,locked:!1,reason:`用户需求同时匹配多个资料组:${b.join("、")}`,rejectedRoots:q,scopeHash:(0,h.c6)({ambiguous:!0,selectedRoots:b})}}}if(1===f.length){let a=g.map(a=>a.relativePath),b=n(g);return b.length>=2?{selectedRoots:[],selectedFiles:[],totalAvailableFiles:d.length,ambiguous:!0,locked:!1,reason:`模板绑定资料组「${f[0]}」内检测到 ${b.length} 个不同项目编号(${b.join("、")}),疑似多份项目资料混放,已阻断生成避免跨项目污染`,rejectedRoots:q,scopeHash:(0,h.c6)({ambiguous:!0,mixedProjectNos:b})}:{selectedRoots:f,selectedFiles:a,totalAvailableFiles:d.length,ambiguous:!1,locked:!0,reason:`模板绑定唯一资料组:${f[0]}`,rejectedRoots:q.filter(a=>!f.includes(a)),scopeHash:(0,h.c6)({selectedRoots:f,selectedFiles:a})}}return{selectedRoots:[],selectedFiles:[],totalAvailableFiles:d.length,ambiguous:!0,locked:!1,reason:f.length>1?`模板绑定多个资料组但需求未唯一指定:${f.join("、")}`:"未绑定资料组且需求未唯一指定资料范围,禁止回退全量资料",rejectedRoots:q,scopeHash:(0,h.c6)({ambiguous:!0,boundRoots:f,requirement:c})}}function p(a,b){let c=new Map((0,e.Yy)(a).map(a=>[a.relativePath,a])),f=b.selectedFiles.map(a=>{let b=c.get(a),e=Number(b?.chunkCount||0);return{path:a,root:k(a),fileName:d.basename(a),chunkCount:e,indexedAt:b?.indexedAt,status:b?.status,hash:(0,h.c6)({filePath:a,chunkCount:e,indexedAt:b?.indexedAt,status:b?.status})}});return{files:f,totalFiles:f.length,totalChunks:f.reduce((a,b)=>a+b.chunkCount,0),roots:[...new Set(f.map(a=>a.root))],createdAt:Date.now(),snapshotHash:(0,h.c6)(f.map(a=>({path:a.path,hash:a.hash})))}}function q(a,b){return a.filter(a=>b.test(`${a.fieldId||""} ${a.fieldName||""} ${a.key} ${(0,h.lG)(a.value)}`))}function r(a){return(0,h.lG)(a.value).replace(/\s+/gu," ").trim()}let s=new Set(["资料文件","资料组","资料角色","章节意图候选","项目名称候选"]);function t(a){let b=a.facts.filter(a=>!s.has(a.key)&&r(a)),c=q(b,/项目名称|工程名称|招标项目名称|建设地点|建设规模|招标范围|施工范围|建设内容/u),d=q(b,/工期|日历天|进度|开工|竣工/u),e=q(b,/质量|验收|合格|标准|规范/u),f=q(b,/清单|工程量|材料|设备|机械|劳动力|资源/u),g=q(b,/安全|文明|环保|危大|风险/u),h=c.slice(0,8).map(a=>`${a.key}:${r(a)}`).join(";");return{works:h?[{name:a.materialSnapshot.roots[0]||"当前项目",scope:h,sourceFiles:[...new Set(c.map(a=>a.sourceFile).filter(Boolean))],relatedItems:f.slice(0,8).map(a=>r(a))}]:[],methods:[],resources:f.slice(0,30).map(a=>({name:a.key,type:"material",spec:r(a),quantity:"",unit:"",sourceFiles:a.sourceFile?[a.sourceFile]:[]})),schedule:d.slice(0,10).map(a=>({milestone:a.key,duration:r(a),startDate:"",endDate:"",sourceFiles:a.sourceFile?[a.sourceFile]:[]})),standards:e.slice(0,16).map(a=>({code:a.key,description:r(a),sourceFiles:a.sourceFile?[a.sourceFile]:[]})),risks:g.slice(0,16).map(a=>({risk:r(a),level:"medium",mitigation:"",sourceFiles:a.sourceFile?[a.sourceFile]:[]})),requirements:q(b,/招标|投标|合同|承包|响应|要求|补疑|澄清|答疑/u).slice(0,20).map(a=>({category:a.key,detail:r(a),sourceFiles:a.sourceFile?[a.sourceFile]:[]})),siteConditions:q(b,/现场|周边|交通|既有|保护|场地/u).slice(0,12).map(a=>({condition:r(a),impact:"",sourceFiles:a.sourceFile?[a.sourceFile]:[]})),addendumChanges:[],gaps:[],generatedAt:Date.now()}}function u(a){let b=a.materialScope||o(a.projectRoot,a.template,a.requirement||"");if(b.ambiguous||!b.locked||0===b.selectedFiles.length)throw Error(`资料范围未锁定:${b.reason}`);let c=p(a.projectRoot,b),d=a.projectGraph||t({facts:a.facts,materialSnapshot:c,requirement:a.requirement}),e=a.projectGraph?"project-graph":"project-graph-runtime",f=a.projectGraph?"预处理完整项目图谱":"运行期项目图谱草案",g=Date.now();return{runId:`run-${g}-${(0,h.c6)({templateId:a.template.id,requirement:a.requirement||"",scopeHash:b.scopeHash}).slice(0,8)}`,templateId:a.template.id,requirement:a.requirement||"",projectRoot:a.projectRoot,materialScope:b,materialSnapshot:c,nodes:[{id:"material-scope",type:"material_scope",status:"completed",startedAt:g,completedAt:g,outputSummary:b.reason,metrics:{selectedFiles:b.selectedFiles.length,rejectedRoots:b.rejectedRoots.length}},{id:"material-snapshot",type:"material_snapshot",status:"completed",startedAt:g,completedAt:g,outputSummary:`${c.totalFiles} 份资料,${c.totalChunks} 个切片`,metrics:{totalFiles:c.totalFiles,totalChunks:c.totalChunks}},{id:e,type:"project_graph",status:"completed",startedAt:g,completedAt:g,outputSummary:`${f}:${d.works.length}工程 ${d.resources.length}资源 ${d.schedule.length}工期 ${d.standards.length}标准`,metrics:{facts:a.facts.length,precomputed:!!a.projectGraph,source:a.projectGraphSource||"runtime"}}],facts:a.facts,baseProjectGraph:d,issues:[],createdAt:g}}function v(a,b=200,c=50){if(a.nodes.length<=b)return;let d=a.nodes.slice(-c),e=a.nodes.slice(0,a.nodes.length-c),f=e.filter(a=>"project_graph"!==a.type&&("completed"===a.status||"failed"===a.status||"skipped"===a.status)),g=e.filter(a=>!f.includes(a));if(0===f.length)return;let h={id:`nodes-archive-${Date.now()}`,type:"summary",status:"completed",startedAt:f[0].startedAt,completedAt:f[f.length-1].completedAt||Date.now(),outputSummary:`已归档 ${f.length} 个历史节点(${[...new Set(f.map(a=>a.type))].join("、")})`,metrics:{archivedNodes:f.length}};a.nodes.splice(0,a.nodes.length,...g,h,...d)}function w(a){let b=a.nodes.find(a=>"project_graph"===a.type),c=!!b?.metrics?.precomputed,d=[(0,g.X5)({type:"validation",roleId:"agent-material-scope",status:"success",message:`资料范围已锁定:${a.materialScope.selectedRoots.join("、")}`,details:[`${a.materialScope.reason}`,`入选资料:${a.materialScope.selectedFiles.length}/${a.materialScope.totalAvailableFiles}`,`已排除资料组:${a.materialScope.rejectedRoots.slice(0,8).join("、")||"无"}`]},{subtitle:"Agent 资料范围锁定"}),(0,g.X5)({type:"knowledge_retrieval",roleId:"agent-material-snapshot",status:"success",message:`资料快照已固定:${a.materialSnapshot.totalFiles} 份资料、${a.materialSnapshot.totalChunks} 个切片`,details:a.materialSnapshot.files.slice(0,10).map(a=>`${a.root}|${a.fileName}|${a.chunkCount}切片`)},{subtitle:"Agent 资料快照"})];return c||d.push((0,g.X5)({type:"file_understanding",roleId:"agent-project-graph-runtime",status:"success",message:`运行期项目图谱草案已建立:${a.baseProjectGraph.works.length}工程 ${a.baseProjectGraph.resources.length}资源 ${a.baseProjectGraph.schedule.length}工期 ${a.baseProjectGraph.standards.length}标准`,details:["缓存缺失时用于资料范围和 Planner 预备分析;正式完整项目图谱会随后由 LLM 构建",`事实数:${a.facts.length}`]},{subtitle:"Agent 项目图谱预备分析"})),d}function x(a){let b=a.split(/\r?\n/u),c=[];return b.forEach((a,b)=>{i.test(a)&&c.push({level:"error",severity:"blocker",category:"style",owner:"system",message:`正式正文不得出现后台或兜底话术:第 ${b+1} 行`,suggestion:"必须改为有事实依据的正式表达;非必填缺失字段应删除,必填事实缺失应阻断生成。"})}),[...c,...(0,f.bx)(a),...(0,f.uv)(a),...(0,f.nP)(a)].slice(0,20)}},36003:(a,b,c)=>{c.d(b,{AI:()=>R,N1:()=>Z,Ym:()=>G,eL:()=>p.eL,eu:()=>D,hZ:()=>z,nl:()=>aa,qX:()=>B,uQ:()=>S,uV:()=>p.uV,w9:()=>w,xu:()=>p.xu});var d=c(76760),e=c(78217),f=c(70933),g=c(30836),h=c(61373),i=c(95734),j=c(22157),k=c(46482),l=c(71001),m=c(43378),n=c(40693),o=c(22496),p=c(22213),q=c(18274),r=c(41991),s=c(1358),t=c(3063),u=c(54185),v=c(80572);function w(a,b,c){let d=[...a.errors.map(a=>({level:"error",message:a,suggestion:"请补充配置或资料后重新生成。"})),...a.warnings.map(a=>({level:"warning",message:a,suggestion:"建议人工确认或补充对应资料。"}))];return c.some(a=>/资料未提供|系统暂未从知识库确认/u.test(a.content))&&d.push({level:"warning",message:"存在系统暂未从知识库确认的章节内容",suggestion:"请检查项目角色配置、文件绑定顺序和事实抽取落位结果。"}),b.conflicts.length>0&&d.push(...b.conflicts.map(a=>({level:"warning",message:a,suggestion:"请根据当前模板绑定的角色、文件证据和用户要求复核取值口径。"}))),d}let x=/\b\d+(?:\.\d+)?\s*(?:日历天|小时|分钟|天|周|月|年|万元|元|台|套|个|项|批|次|份|人)(?=[。,,;;::、\s]|$)/gu;function y(a){let b=new Set;for(let c of a){let a=(0,j.lG)(c.content).replace(/\s+/gu," ");if((!/报价明细|投标报价|单价|合价|综合单价|预留金|税率|增值税|利润|结算/u.test(a)||/合同估算价|合同估算价格|投资估算|最高投标限价|招标控制价/u.test(a))&&!/OCR|识别错误|乱码|无法确认|疑似|不确定|语义断裂/u.test(a)){for(let c of a.matchAll(q._W))b.add(c[0].trim());for(let c of a.matchAll(x))b.add(c[0].trim());if(b.size>=40)break}}return[...b].slice(0,40)}function z(a){let b=a.spec?.chapterRules.find(b=>b.id===a.chapter.id||b.title===a.chapter.title),c=(b?.requiredFactIds||[]).map(b=>a.spec?.factFields.find(a=>a.id===b)?.name).filter(Boolean),d=[...new Set([...a.chapter.requiredFacts,...c,...a.plan?.requiredContents||[],...a.plan?.evidenceNeeds||[],...(a.resolvedFactNeeds||[]).filter(a=>a.need.required).map(a=>a.need.label)].filter(Boolean))],e=a.roleFacts.map(({fact:a})=>`- ${a.key}:${(0,f.eE)((0,j.lG)(a.value))}`),g=(a.resolvedFactNeeds||[]).flatMap(a=>a.facts),h=a.indexedFacts||[],i=g.length>0?[]:h.map(a=>`- ${a.key||a.fieldName||"资料事实"}:${(0,f.eE)((0,j.lG)(a.value))}${a.sourceFile?`(来源:${a.sourceFile.split("/").pop()})`:""}`),k=[...g,...h].filter(a=>/建设地点|建设规模|招标范围|计划工期|合同工期|周期要求|质量标准|合同估算|投资估算|最高投标限价|招标控制价/u.test(`${a.key||""}${a.fieldName||""}${a.fieldId||""}`)).filter((a,b,c)=>c.findIndex(b=>`${b.key||b.fieldName}:${(0,j.lG)(b.value)}`==`${a.key||a.fieldName}:${(0,j.lG)(a.value)}`)===b),l=[...new Set([...y(a.evidence),...g.map(a=>(0,j.lG)(a.value)).filter(a=>q.sv.test(a)),...h.map(a=>(0,j.lG)(a.value)).filter(a=>q.sv.test(a))])],m=new Set([...a.evidence.map(a=>a.filePath),...g.map(a=>a.sourceFile),...(a.indexedFacts||[]).map(a=>a.sourceFile)]).size,n=(a.resolvedFactNeeds||[]).filter(a=>"satisfied"!==a.status&&a.need.required).map(a=>a.need.label),o=function(a){if(!a)return[];let b=[];for(let[c,d]of Object.entries(a)){if(d.length<2)continue;let a=d.filter((a,b,c)=>c.findIndex(b=>b.location===a.location&&b.spec===a.spec)===b);a.length<2||b.push(`- ${c}:${a.slice(0,8).map(a=>`${a.location}:${a.spec}`).join("|")}`)}return b.slice(0,12)}(a.specAuthorityMap);return["【本章事实覆盖与参数落位要求】",d.length?`必须优先覆盖的事实/要求:
|
|
32
|
+
${b.join("\n")}`,d=new Set,e=(a,b)=>{b.test(c)&&d.add(a)};return e("工期进度",/工期|进度|计划|节点/u),e("质量验收",/质量|验收|复试|见证|控制点/u),e("安全危大",/安全|危大|风险|应急/u),e("施工部署",/部署|总平面|施工组织|现场/u),e("施工方法",/施工方案|施工方法|分部分项|工艺|新技术|新工艺/u),e("人材机",/人材机|劳动力|材料|机械|周转|人、材、机|人员设备/u),e("环境文明",/环保|文明|扬尘|绿色/u),e("工程概况",/概况|工程特点|重点|难点|整体理解|项目理解|工程理解|项目概况/u),[...d]}(c.title,c.sections||[]);if(0===d.length)continue;let e=new Set(d),f=a.entries.filter(b=>a.selected.has(b.filePath)&&e.has(b.intent)).sort((a,b)=>b.score-a.score).slice(0,24).map(a=>({chapterId:c.id,filePath:a.filePath,score:a.score,content:a.content,roleId:a.roleId,processingType:"project_intelligence",sectionTitle:a.intent,source:"project-intelligence"}));f.length&&(b[c.id]=f)}return b}({template:a.template,entries:a.cache.chapterIntentIndex||[],selected:b}),h={version:n,projectRoot:a.projectRoot,createdAt:Date.now(),scopeHash:a.scopeHash,selectedRoots:a.selectedRoots,selectedFiles:a.selectedFiles,sourceHash:(0,l.c6)(c.map(a=>({path:a.relativePath,hash:a.contentHash,chunkCount:a.chunkCount})).sort((a,b)=>a.path.localeCompare(b.path))),files:c,facts:d,projectGraph:e,constructionOrganizationGraph:f,evidenceByChapterId:g};return r(q(a.projectRoot,a.scopeHash),h),h}({projectRoot:a.projectRoot,template:a.template,cache:b,selectedFiles:c.selectedFiles,selectedRoots:c.selectedRoots,scopeHash:e});if(f)return{cache:b,scope:c,scopeSnapshot:f,files:f.files,facts:f.facts,evidenceByChapterId:f.evidenceByChapterId,projectGraph:f.projectGraph,constructionOrganizationGraph:f.constructionOrganizationGraph,constructionOrganizationContext:F(f.constructionOrganizationGraph)}}let I=new Map,J=new Set;function K(a,b,c){(0,h.Qf)(a,{id:b,type:"reindex",title:"项目理解缓存",...c})}function L(a){if(I.has(a))return void J.add(a);let b=`project-intelligence-${Date.now()}`;K(a,b,{stage:"generating",status:"processing",percent:5,message:"正在构建项目级蓝图、图谱、事实索引和章节意图索引"});let c=G(a,(c,d,e)=>{K(a,b,{stage:"generating",status:"processing",percent:d,message:e})});I.set(a,c),c.then(c=>{K(a,b,{stage:"done",status:"success",percent:100,message:`项目理解缓存完成:${c.fileCount} 份资料,${c.facts.length} 条事实,${c.chapterIntentIndex.length} 条章节意图证据`})}).catch(c=>{let d=c instanceof Error?c.message:String(c);K(a,b,{stage:"error",status:"error",percent:100,message:d,error:d}),console.warn("[project-intelligence] build failed",d)}).finally(()=>{I.delete(a),J.delete(a)&&L(a)})}async function M(a){let b=I.get(a);if(b)return b;let c=`project-intelligence-${Date.now()}`;K(a,c,{stage:"generating",status:"processing",percent:5,message:"正在构建项目级蓝图、图谱、事实索引和章节意图索引"});let d=G(a,(b,d,e)=>{K(a,c,{stage:"generating",status:"processing",percent:d,message:e})});I.set(a,d);try{let b=await d;return K(a,c,{stage:"done",status:"success",percent:100,message:`项目理解缓存完成:${b.fileCount} 份资料,${b.facts.length} 条事实,${b.chapterIntentIndex.length} 条章节意图证据`}),b}catch(d){let b=d instanceof Error?d.message:String(d);throw K(a,c,{stage:"error",status:"error",percent:100,message:b,error:b}),d}finally{I.delete(a),J.delete(a)&&L(a)}}},29055:(a,b,c)=>{c.d(b,{y:()=>e});var d=c(70208);function e(a){var b;let c=(b=`${a.template.name} ${a.template.outputTitle||""} ${a.requirement||""} ${a.chapters.map(a=>a.title).join(" ")}`,(0,d.GQ)(b).replace(/\s+/gu,"").toLowerCase()),e=[];return/市政|道路|管网|雨污|污水|给水|沟槽|交通导|沥青|水稳|检查井/u.test(c)&&e.push("municipal"),/老旧小区|小区改造|改造|修缮|飞线|居民|雨污分流/u.test(c)&&e.push("renovation"),/装饰|装修|精装|吊顶|墙地面|乳胶漆|瓷砖|石材|室内/u.test(c)&&e.push("decoration"),/房建|住宅|办公楼|厂房|主体结构|基础|屋面|二次结构|塔吊|建筑/u.test(c)&&e.push("building"),e.length?[...new Set(e)]:["general"]}},32434:(a,b,c)=>{c.d(b,{IA:()=>x,Qu:()=>u,SU:()=>w,ZR:()=>o,cN:()=>v,hw:()=>p,rj:()=>t});var d=c(76760),e=c(44533),f=c(61373),g=c(80439),h=c(22157);let i=/知识库|系统暂未|项目资料暂未|资料未明确|暂未明确|待确认|待资料复核|待系统|通用兜底(?:段落|模板)?|兜底(?:占位|模板|内容)|未检索到|资料不足|无法确认|建议补充|不适用|COL\d+|可核验信息|以本项目招标文件明确内容为准/u;function j(a){return a.replace(/\\/gu,"/").replace(/^\/+|\/+$/gu,"")}function k(a){let b=j(a).split("/").filter(Boolean);return b.length>1?b[0]:d.basename(b[0]||"当前项目")}function l(a){return a.replace(/[\s_\-—()()【】、,,.。·]/gu,"").replaceAll("[","").replaceAll("]","").toLowerCase()}function m(a){return"disk"!==a.status&&"error"!==a.status&&Number(a.indexedAt||0)>0&&Number(a.chunkCount||0)>0}function n(a){let b=new Set;for(let c of a)for(let a of c.relativePath.match(/\b\d{4}[A-Z]{2,}\d{4,}\b/gu)||[])b.add(a);return[...b]}function o(a,b,c=""){let d=(0,e.Yy)(a).filter(m),f=(b.projectBindings||[]).filter(a=>a.materialRootPath).map(a=>({materialRootPath:j(a.materialRootPath)})).map(a=>a.materialRootPath).filter(Boolean),g=f.length?d.filter(a=>f.some(b=>j(a.relativePath)===b||j(a.relativePath).startsWith(`${b}/`))):d,i=function(a){let b=new Map;for(let c of a){let a=k(c.relativePath);b.set(a,[...b.get(a)||[],c])}return b}(g),p=c.trim(),q=[...i.keys()];if(p){let a=[...i.entries()].map(([a,b])=>({root:a,files:b,score:function(a,b){let c=l(a),d=l(b);if(c.length>=4&&d.includes(c.slice(0,Math.min(16,c.length))))return 100;let e=new Set(["项目","工程","施工","总承包","资料","招标","图纸","清单"]);return a.split(/(?:\s|_|-|—|(|)|\(|\)|【|】|\[|\]|、|,|,|\.)+/u).filter(a=>a.length>=2&&!e.has(a)).reduce((a,c)=>a+(b.includes(c)?Math.min(20,c.length):0),0)}(a,p)})).filter(a=>a.score>0).sort((a,b)=>b.score-a.score);if(1===a.length||a.length>1&&a[0].score>a[1].score){let b=[a[0].root],c=a[0].files.map(a=>a.relativePath),e=n(a[0].files);return e.length>=2?{selectedRoots:[],selectedFiles:[],totalAvailableFiles:d.length,ambiguous:!0,locked:!1,reason:`资料组「${a[0].root}」内检测到 ${e.length} 个不同项目编号(${e.join("、")}),疑似多份项目资料混放,已阻断生成避免跨项目污染`,rejectedRoots:q,scopeHash:(0,h.c6)({ambiguous:!0,mixedProjectNos:e})}:{selectedRoots:b,selectedFiles:c,totalAvailableFiles:d.length,ambiguous:!1,locked:!0,reason:`用户需求唯一匹配资料组:${a[0].root}`,rejectedRoots:q.filter(a=>!b.includes(a)),scopeHash:(0,h.c6)({selectedRoots:b,selectedFiles:c})}}if(a.length>1){let b=a.filter(b=>b.score===a[0].score).map(a=>a.root);return{selectedRoots:[],selectedFiles:[],totalAvailableFiles:d.length,ambiguous:!0,locked:!1,reason:`用户需求同时匹配多个资料组:${b.join("、")}`,rejectedRoots:q,scopeHash:(0,h.c6)({ambiguous:!0,selectedRoots:b})}}}if(1===f.length){let a=g.map(a=>a.relativePath),b=n(g);return b.length>=2?{selectedRoots:[],selectedFiles:[],totalAvailableFiles:d.length,ambiguous:!0,locked:!1,reason:`模板绑定资料组「${f[0]}」内检测到 ${b.length} 个不同项目编号(${b.join("、")}),疑似多份项目资料混放,已阻断生成避免跨项目污染`,rejectedRoots:q,scopeHash:(0,h.c6)({ambiguous:!0,mixedProjectNos:b})}:{selectedRoots:f,selectedFiles:a,totalAvailableFiles:d.length,ambiguous:!1,locked:!0,reason:`模板绑定唯一资料组:${f[0]}`,rejectedRoots:q.filter(a=>!f.includes(a)),scopeHash:(0,h.c6)({selectedRoots:f,selectedFiles:a})}}return{selectedRoots:[],selectedFiles:[],totalAvailableFiles:d.length,ambiguous:!0,locked:!1,reason:f.length>1?`模板绑定多个资料组但需求未唯一指定:${f.join("、")}`:"未绑定资料组且需求未唯一指定资料范围,禁止回退全量资料",rejectedRoots:q,scopeHash:(0,h.c6)({ambiguous:!0,boundRoots:f,requirement:c})}}function p(a,b){let c=new Map((0,e.Yy)(a).map(a=>[a.relativePath,a])),f=b.selectedFiles.map(a=>{let b=c.get(a),e=Number(b?.chunkCount||0);return{path:a,root:k(a),fileName:d.basename(a),chunkCount:e,indexedAt:b?.indexedAt,status:b?.status,hash:(0,h.c6)({filePath:a,chunkCount:e,indexedAt:b?.indexedAt,status:b?.status})}});return{files:f,totalFiles:f.length,totalChunks:f.reduce((a,b)=>a+b.chunkCount,0),roots:[...new Set(f.map(a=>a.root))],createdAt:Date.now(),snapshotHash:(0,h.c6)(f.map(a=>({path:a.path,hash:a.hash})))}}function q(a,b){return a.filter(a=>b.test(`${a.fieldId||""} ${a.fieldName||""} ${a.key} ${(0,h.lG)(a.value)}`))}function r(a){return(0,h.lG)(a.value).replace(/\s+/gu," ").trim()}let s=new Set(["资料文件","资料组","资料角色","章节意图候选","项目名称候选"]);function t(a){let b=a.facts.filter(a=>!s.has(a.key)&&r(a)),c=q(b,/项目名称|工程名称|招标项目名称|建设地点|建设规模|招标范围|施工范围|建设内容/u),d=q(b,/工期|日历天|进度|开工|竣工/u),e=q(b,/质量|验收|合格|标准|规范/u),f=q(b,/清单|工程量|材料|设备|机械|劳动力|资源/u),g=q(b,/安全|文明|环保|危大|风险/u),h=c.slice(0,8).map(a=>`${a.key}:${r(a)}`).join(";");return{works:h?[{name:a.materialSnapshot.roots[0]||"当前项目",scope:h,sourceFiles:[...new Set(c.map(a=>a.sourceFile).filter(Boolean))],relatedItems:f.slice(0,8).map(a=>r(a))}]:[],methods:[],resources:f.slice(0,30).map(a=>({name:a.key,type:"material",spec:r(a),quantity:"",unit:"",sourceFiles:a.sourceFile?[a.sourceFile]:[]})),schedule:d.slice(0,10).map(a=>({milestone:a.key,duration:r(a),startDate:"",endDate:"",sourceFiles:a.sourceFile?[a.sourceFile]:[]})),standards:e.slice(0,16).map(a=>({code:a.key,description:r(a),sourceFiles:a.sourceFile?[a.sourceFile]:[]})),risks:g.slice(0,16).map(a=>({risk:r(a),level:"medium",mitigation:"",sourceFiles:a.sourceFile?[a.sourceFile]:[]})),requirements:q(b,/招标|投标|合同|承包|响应|要求|补疑|澄清|答疑/u).slice(0,20).map(a=>({category:a.key,detail:r(a),sourceFiles:a.sourceFile?[a.sourceFile]:[]})),siteConditions:q(b,/现场|周边|交通|既有|保护|场地/u).slice(0,12).map(a=>({condition:r(a),impact:"",sourceFiles:a.sourceFile?[a.sourceFile]:[]})),addendumChanges:[],gaps:[],generatedAt:Date.now()}}function u(a){let b=a.materialScope||o(a.projectRoot,a.template,a.requirement||"");if(b.ambiguous||!b.locked||0===b.selectedFiles.length)throw Error(`资料范围未锁定:${b.reason}`);let c=p(a.projectRoot,b),d=a.projectGraph||t({facts:a.facts,materialSnapshot:c,requirement:a.requirement}),e=a.projectGraph?"project-graph":"project-graph-runtime",f=a.projectGraph?"预处理完整项目图谱":"运行期项目图谱草案",g=Date.now();return{runId:`run-${g}-${(0,h.c6)({templateId:a.template.id,requirement:a.requirement||"",scopeHash:b.scopeHash}).slice(0,8)}`,templateId:a.template.id,requirement:a.requirement||"",projectRoot:a.projectRoot,materialScope:b,materialSnapshot:c,nodes:[{id:"material-scope",type:"material_scope",status:"completed",startedAt:g,completedAt:g,outputSummary:b.reason,metrics:{selectedFiles:b.selectedFiles.length,rejectedRoots:b.rejectedRoots.length}},{id:"material-snapshot",type:"material_snapshot",status:"completed",startedAt:g,completedAt:g,outputSummary:`${c.totalFiles} 份资料,${c.totalChunks} 个切片`,metrics:{totalFiles:c.totalFiles,totalChunks:c.totalChunks}},{id:e,type:"project_graph",status:"completed",startedAt:g,completedAt:g,outputSummary:`${f}:${d.works.length}工程 ${d.resources.length}资源 ${d.schedule.length}工期 ${d.standards.length}标准`,metrics:{facts:a.facts.length,precomputed:!!a.projectGraph,source:a.projectGraphSource||"runtime"}}],facts:a.facts,baseProjectGraph:d,issues:[],createdAt:g}}function v(a,b=200,c=50){if(a.nodes.length<=b)return;let d=a.nodes.slice(-c),e=a.nodes.slice(0,a.nodes.length-c),f=e.filter(a=>"project_graph"!==a.type&&("completed"===a.status||"failed"===a.status||"skipped"===a.status)),g=e.filter(a=>!f.includes(a));if(0===f.length)return;let h={id:`nodes-archive-${Date.now()}`,type:"summary",status:"completed",startedAt:f[0].startedAt,completedAt:f[f.length-1].completedAt||Date.now(),outputSummary:`已归档 ${f.length} 个历史节点(${[...new Set(f.map(a=>a.type))].join("、")})`,metrics:{archivedNodes:f.length}};a.nodes.splice(0,a.nodes.length,...g,h,...d)}function w(a){let b=a.nodes.find(a=>"project_graph"===a.type),c=!!b?.metrics?.precomputed,d=[(0,g.X5)({type:"validation",roleId:"agent-material-scope",status:"success",message:`资料范围已锁定:${a.materialScope.selectedRoots.join("、")}`,details:[`${a.materialScope.reason}`,`入选资料:${a.materialScope.selectedFiles.length}/${a.materialScope.totalAvailableFiles}`,`已排除资料组:${a.materialScope.rejectedRoots.slice(0,8).join("、")||"无"}`]},{subtitle:"Agent 资料范围锁定"}),(0,g.X5)({type:"knowledge_retrieval",roleId:"agent-material-snapshot",status:"success",message:`资料快照已固定:${a.materialSnapshot.totalFiles} 份资料、${a.materialSnapshot.totalChunks} 个切片`,details:a.materialSnapshot.files.slice(0,10).map(a=>`${a.root}|${a.fileName}|${a.chunkCount}切片`)},{subtitle:"Agent 资料快照"})];return c||d.push((0,g.X5)({type:"file_understanding",roleId:"agent-project-graph-runtime",status:"success",message:`运行期项目图谱草案已建立:${a.baseProjectGraph.works.length}工程 ${a.baseProjectGraph.resources.length}资源 ${a.baseProjectGraph.schedule.length}工期 ${a.baseProjectGraph.standards.length}标准`,details:["缓存缺失时用于资料范围和 Planner 预备分析;正式完整项目图谱会随后由 LLM 构建",`事实数:${a.facts.length}`]},{subtitle:"Agent 项目图谱预备分析"})),d}function x(a){let b=a.split(/\r?\n/u),c=[];return b.forEach((a,b)=>{i.test(a)&&c.push({level:"error",severity:"blocker",category:"style",owner:"system",message:`正式正文不得出现后台或兜底话术:第 ${b+1} 行`,suggestion:"必须改为有事实依据的正式表达;非必填缺失字段应删除,必填事实缺失应阻断生成。"})}),[...c,...(0,f.bx)(a),...(0,f.uv)(a),...(0,f.nP)(a)].slice(0,20)}},36003:(a,b,c)=>{c.d(b,{AI:()=>Q,Ym:()=>F,eL:()=>p.eL,hZ:()=>z,nl:()=>W,qX:()=>B,uQ:()=>R,w9:()=>w,xu:()=>p.xu});var d=c(76760),e=c(78217),f=c(70933),g=c(30836),h=c(61373),i=c(95734),j=c(22157),k=c(46482),l=c(71001),m=c(43378),n=c(40693),o=c(22496),p=c(22213),q=c(18274),r=c(41991),s=c(1358),t=c(3063),u=c(54185),v=c(80572);function w(a,b,c){let d=[...a.errors.map(a=>({level:"error",message:a,suggestion:"请补充配置或资料后重新生成。"})),...a.warnings.map(a=>({level:"warning",message:a,suggestion:"建议人工确认或补充对应资料。"}))];return c.some(a=>/资料未提供|系统暂未从知识库确认/u.test(a.content))&&d.push({level:"warning",message:"存在系统暂未从知识库确认的章节内容",suggestion:"请检查项目角色配置、文件绑定顺序和事实抽取落位结果。"}),b.conflicts.length>0&&d.push(...b.conflicts.map(a=>({level:"warning",message:a,suggestion:"请根据当前模板绑定的角色、文件证据和用户要求复核取值口径。"}))),d}let x=/\b\d+(?:\.\d+)?\s*(?:日历天|小时|分钟|天|周|月|年|万元|元|台|套|个|项|批|次|份|人)(?=[。,,;;::、\s]|$)/gu;function y(a){let b=new Set;for(let c of a){let a=(0,j.lG)(c.content).replace(/\s+/gu," ");if((!/报价明细|投标报价|单价|合价|综合单价|预留金|税率|增值税|利润|结算/u.test(a)||/合同估算价|合同估算价格|投资估算|最高投标限价|招标控制价/u.test(a))&&!/OCR|识别错误|乱码|无法确认|疑似|不确定|语义断裂/u.test(a)){for(let c of a.matchAll(q._W))b.add(c[0].trim());for(let c of a.matchAll(x))b.add(c[0].trim());if(b.size>=40)break}}return[...b].slice(0,40)}function z(a){let b=a.spec?.chapterRules.find(b=>b.id===a.chapter.id||b.title===a.chapter.title),c=(b?.requiredFactIds||[]).map(b=>a.spec?.factFields.find(a=>a.id===b)?.name).filter(Boolean),d=[...new Set([...a.chapter.requiredFacts,...c,...a.plan?.requiredContents||[],...a.plan?.evidenceNeeds||[],...(a.resolvedFactNeeds||[]).filter(a=>a.need.required).map(a=>a.need.label)].filter(Boolean))],e=a.roleFacts.map(({fact:a})=>`- ${a.key}:${(0,f.eE)((0,j.lG)(a.value))}`),g=(a.resolvedFactNeeds||[]).flatMap(a=>a.facts),h=a.indexedFacts||[],i=g.length>0?[]:h.map(a=>`- ${a.key||a.fieldName||"资料事实"}:${(0,f.eE)((0,j.lG)(a.value))}${a.sourceFile?`(来源:${a.sourceFile.split("/").pop()})`:""}`),k=[...g,...h].filter(a=>/建设地点|建设规模|招标范围|计划工期|合同工期|周期要求|质量标准|合同估算|投资估算|最高投标限价|招标控制价/u.test(`${a.key||""}${a.fieldName||""}${a.fieldId||""}`)).filter((a,b,c)=>c.findIndex(b=>`${b.key||b.fieldName}:${(0,j.lG)(b.value)}`==`${a.key||a.fieldName}:${(0,j.lG)(a.value)}`)===b),l=[...new Set([...y(a.evidence),...g.map(a=>(0,j.lG)(a.value)).filter(a=>q.sv.test(a)),...h.map(a=>(0,j.lG)(a.value)).filter(a=>q.sv.test(a))])],m=new Set([...a.evidence.map(a=>a.filePath),...g.map(a=>a.sourceFile),...(a.indexedFacts||[]).map(a=>a.sourceFile)]).size,n=(a.resolvedFactNeeds||[]).filter(a=>"satisfied"!==a.status&&a.need.required).map(a=>a.need.label),o=function(a){if(!a)return[];let b=[];for(let[c,d]of Object.entries(a)){if(d.length<2)continue;let a=d.filter((a,b,c)=>c.findIndex(b=>b.location===a.location&&b.spec===a.spec)===b);a.length<2||b.push(`- ${c}:${a.slice(0,8).map(a=>`${a.location}:${a.spec}`).join("|")}`)}return b.slice(0,12)}(a.specAuthorityMap);return["【本章事实覆盖与参数落位要求】",d.length?`必须优先覆盖的事实/要求:
|
|
33
33
|
${d.map(a=>`- ${a}`).join("\n")}`:"",e.length?`角色节点已抽取事实:
|
|
34
34
|
${e.join("\n")}`:"",k.length?`项目基础事实卡片(资料已明确,必须优先使用,不得输出任何占位话术;其中工程地点、建设规模、计划工期等总述数据只在项目概况/工程概况类章节集中交代,其他章节仅可引用所需的具体数字,不得复述完整概况段):
|
|
35
35
|
${k.map(a=>`- ${a.key||a.fieldName}:${(0,f.eE)((0,j.lG)(a.value))}${a.sourceFile?`(来源:${a.sourceFile.split("/").pop()})`:""}`).join("\n")}
|
|
@@ -42,38 +42,38 @@ ${b}`,`事实行清单(编号|事实原文):
|
|
|
42
42
|
${c}`].filter(Boolean).join("\n\n"),f={l0:d.length,l1:(0,i.CX)([a.promptTexts?`配置写作主控提示词:
|
|
43
43
|
${a.promptTexts}`:""]),l2:(0,i.CX)([`文档模板:${a.template.name}`,`章节目的:${a.chapter.purpose}`,a.requiredFacts.length?`模板要求覆盖的事实:${a.requiredFacts.join("、")}`:"",a.missingFacts.length?`当前检索未充分命中的事实(如材料中确实没有,写入对应小节的 missingFacts):${a.missingFacts.join("、")}`:"",'返回 JSON:{"sections":[{"title":"小节名","factIds":["F1","F3"],"missingFacts":["该小节需要但清单缺失的事实"]}]};factIds 必须是上方清单中的编号,不得编造编号;每条事实只分配给一个小节,不得跨小节重复分配;每条事实都必须分配出去,不得遗漏。']),l3:(0,i.CX)([`章节标题:${a.chapter.title}`,`预设小节:
|
|
44
44
|
${b}`,`事实行清单(编号|事实原文):
|
|
45
|
-
${c}`])},g=new Map(a.factLines.map((a,b)=>[`F${b+1}`,a]));for(let b=0;b<2;b+=1){let b=await (0,i.bb)(d,e,{maxTokens:1600,temperature:0,signal:a.signal,diagnostics:a.diagnostics,contextLayers:f,prefixKey:`outline:${a.chapter.id}`});if(b&&Array.isArray(b.sections)&&b.sections.length>0){let c=new Set,d=b.sections.map(a=>{let b=(a.factIds||[]).filter(a=>{let b=g.has(a);return b||c.add(a),b}).map(a=>g.get(a));return{title:a.title,facts:b,missingFacts:a.missingFacts||[]}});return c.size>0&&a.diagnostics&&(a.diagnostics.llm.lastInfo=`大纲编号校验:剔除非法编号 ${[...c].join("、")}`),{sections:d}}}}async function D(a,b,c,d,e,j,k,
|
|
46
|
-
${a.content}`).join("\n"),d=a.split(/[\s、,,。;;::()()【】[\]《》]/u).map(a=>a.trim()).filter(a=>a.length>=4);return 0!==d.length&&(d.filter(a=>c.includes(a)).length>=2||[...new Set(a.match(/.{6,}/gu)||[])].some(a=>c.includes(a)))}(a,e)))).size<a.length&&(
|
|
45
|
+
${c}`])},g=new Map(a.factLines.map((a,b)=>[`F${b+1}`,a]));for(let b=0;b<2;b+=1){let b=await (0,i.bb)(d,e,{maxTokens:1600,temperature:0,signal:a.signal,diagnostics:a.diagnostics,contextLayers:f,prefixKey:`outline:${a.chapter.id}`});if(b&&Array.isArray(b.sections)&&b.sections.length>0){let c=new Set,d=b.sections.map(a=>{let b=(a.factIds||[]).filter(a=>{let b=g.has(a);return b||c.add(a),b}).map(a=>g.get(a));return{title:a.title,facts:b,missingFacts:a.missingFacts||[]}});return c.size>0&&a.diagnostics&&(a.diagnostics.llm.lastInfo=`大纲编号校验:剔除非法编号 ${[...c].join("、")}`),{sections:d}}}}async function D(a,b,c,d,e,j,k,o="",p={}){let q,r=(0,f.QO)(b,c),s=!!p.sharedFactLayerText,u={requiredFacts:b.requiredFacts,skipT0:s,skipT2Catalog:!!p.skipT2Catalog,rankBoost:p.evidenceRankBoost,onlyRankBoosted:p.onlyRankBoosted,diagnostics:p.diagnostics},w=(0,f.ks)(r,{maxChars:(0,f.Pc)(p.targetWords||p.minWords,p.evidenceFloorChars,p.evidenceCeilingChars),...u}),x=!1!==p.twoStep&&c.length>=3&&w.length>0,y="",z=new Set,B=c;if(x){let h=(0,v.z)().outlineEvidenceChars||2500,i=Number.isFinite(h)&&h>0?Math.floor(h):2500,j=[...new Set(B.flatMap(a=>(0,f.oW)(a.content).split("\n").filter(Boolean)))].join("\n"),k=j.length>i?j.slice(0,i).split("\n").filter(Boolean):j.split("\n").filter(Boolean);if(q=await C({template:a,chapter:b,sections:b.sections?.filter(Boolean)||[],requiredFacts:b.requiredFacts,missingFacts:d,promptTexts:e,factLines:k,signal:p.signal,diagnostics:p.diagnostics})){var E,F;let a=[...new Set((q=function(a,b,c,d){let e=0,f=a.sections.map(a=>{let d=(a.facts||[]).filter(a=>{let d=(a=>{let d=(0,g.ll)(a);return 0===d.length||d.every(a=>b.includes(a)||c.includes(a))})(a);return d||(e+=1),d});return{...a,facts:d}});return e>0&&d&&(d.llm.lastInfo=`大纲事实对账:剔除 ${e} 条未在绑定材料中命中的事实(疑似编造)`),{sections:f}}(q,j,B.map(a=>a.content).join("\n"),p.diagnostics)).sections.flatMap(a=>(a.missingFacts||[]).filter(Boolean)))];if(a.length>0&&p.supplementEvidenceProvider){let d=(await p.supplementEvidenceProvider(a).catch(()=>[])).filter(a=>!c.some(b=>b.filePath===a.filePath&&(b.sectionTitle||"")===(a.sectionTitle||"")));if(d.length>0){let e=[...c,...d];B=e,w=(0,f.ks)((0,f.QO)(b,e),{maxChars:(0,f.Pc)(p.targetWords||p.minWords,p.evidenceFloorChars,p.evidenceCeilingChars),...u}),(z=new Set(a.filter(a=>!function(a,b){let c=b.map(a=>`${a.sectionTitle||""}
|
|
46
|
+
${a.content}`).join("\n"),d=a.split(/[\s、,,。;;::()()【】[\]《》]/u).map(a=>a.trim()).filter(a=>a.length>=4);return 0!==d.length&&(d.filter(a=>c.includes(a)).length>=2||[...new Set(a.match(/.{6,}/gu)||[])].some(a=>c.includes(a)))}(a,e)))).size<a.length&&(w=`${w}
|
|
47
47
|
|
|
48
|
-
【定向补充检索】以下大纲缺失事实已找到对应材料并追加在上方,请一并落位:${a.filter(a=>!
|
|
49
|
-
${b.map(a=>`- ${a}`).join("\n")}`:"",c.length?`材料缺失(禁止编造具体值;可用公共专业知识补做法与要求,补做法不得引入任何数值/规格/型号/参数):${c.join("、")}`:""].filter(Boolean).join("\n")})].join("\n\n");{let a=Math.floor(.6*(0,f.Pc)(
|
|
48
|
+
【定向补充检索】以下大纲缺失事实已找到对应材料并追加在上方,请一并落位:${a.filter(a=>!z.has(a)).join("、")}`)}else z=new Set(a)}else z=new Set(a);E=q,F=z,y=["【事实大纲——由事实规划阶段生成,写作时必须逐条落位】","大纲事实为绑定材料事实行原文(已通过确定性数值对账),落位不构成编造;数值、单位、标准编号必须与大纲完全一致。",...E.sections.map(a=>{let b=[...new Set([...a.facts||[],...a.quantifiedFacts||[]])].filter(Boolean),c=(a.missingFacts||[]).filter(a=>a&&F.has(a));return[`### ${a.title||"正文"}`,b.length?`必须写入的事实(数值必须原样):
|
|
49
|
+
${b.map(a=>`- ${a}`).join("\n")}`:"",c.length?`材料缺失(禁止编造具体值;可用公共专业知识补做法与要求,补做法不得引入任何数值/规格/型号/参数):${c.join("、")}`:""].filter(Boolean).join("\n")})].join("\n\n");{let a=Math.floor(.6*(0,f.Pc)(p.targetWords||p.minWords,p.evidenceFloorChars,p.evidenceCeilingChars)),c=w.split("\n\n【定向补充检索】")[1];w=(0,f.ks)((0,f.QO)(b,B),{maxChars:a,...u})+(c?`
|
|
50
50
|
|
|
51
51
|
【定向补充检索】${c}`:"")}}}let G=A(k),H=b.sections?.length?`本章小节由生成前规划得到,请完整包含并展开以下小节:
|
|
52
|
-
${b.sections.map(a=>`- ${a}`).join("\n")}`:"本章没有预设小节;请按用户提示词、模板章节、角色要求和绑定材料自然组织正文。",I=function(a,b){let c=
|
|
53
|
-
${e}`:"",`文档模板:${a.name}`,`章节目的:${b.purpose}`,k?`用户要求:${k}`:"",G,
|
|
54
|
-
${N}`:"",
|
|
52
|
+
${b.sections.map(a=>`- ${a}`).join("\n")}`:"本章没有预设小节;请按用户提示词、模板章节、角色要求和绑定材料自然组织正文。",I=function(a,b){let c=function(a,b){let c=(0,l.k2)(a.sections?.filter(Boolean)||[],a.title);if(0===c.length)return[];let d=Math.floor(b/c.length),e=Math.max(b>=900*c.length?900:Math.max(520,Math.floor(.9*d)),d);return c.map(a=>({title:a,targetWords:e}))}(a,b);return 0===c.length?"":["本章小节篇幅计划(首轮生成应尽量一次达成,避免后续补写):",...c.map(a=>`- ${a.title}:约 ${a.targetWords} 字,至少达到 ${Math.floor(.9*a.targetWords)} 字,并写入与该小节相关的材料事实、适用边界和必要说明。`)].join("\n")}(b,p.targetWords||p.minWords||0),J=(0,m.T4)(b),K=(0,n.Ls)(b),L=(0,n.db)(b),M=(0,t.vN)(b.title,b.sections||[]),N=p.compactProjectContext?p.scopedProjectContext?T(j):S(j):j,O=[(0,h.b_)(h.rd),p.forbidDrawingImages?"图片类材料只作为文本事实依据;禁止插入图片或 Markdown 图片语法。":""].filter(Boolean).join("\n\n"),P=[e?`配置写作主控提示词:
|
|
53
|
+
${e}`:"",`文档模板:${a.name}`,`章节目的:${b.purpose}`,k?`用户要求:${k}`:"",G,p.blueprintDataText||"",p.blueprintSliceText||"",j?`上下文/历史记忆(仅作偏好、历史纠偏和连续性参考;如与知识库证据冲突,以知识库证据为准):
|
|
54
|
+
${N}`:"",p.sharedFactLayerText||"",p.factCoverageContext||"",d.length?`需要特别补足的信息:${d.join("、")}`:"",p.chapterLevelContext||"",y,"请生成可直接导出的 Markdown 章节,要求:","- 内容必须遵循用户提示词、模板章节、提示词角色、项目资料包和自动识别的资料类型;不得编造材料未提供的项目专属事实;任何带数值、工程量、规格、型号、品牌、参数的表述必须逐字来自绑定材料、蓝图参数桶或清单事实锁,材料中没有对应值时不得猜测填充、不得以行业惯例或公共知识为由虚构数值;公共知识豁免仅限法律法规名称、标准规范名称与编号(不带本项目数值)以及通用工艺做法表述,可依据现行有效版本直接引用。","- 将材料要点自然融入正文;不要输出系统证据清单、中间分析过程或后台流程话术。",h.KX,`章节标题:${b.title}`,`- 保留章节标题;内容不少于 ${p.minWords||1e3} 字${p.targetWords?`,目标约 ${p.targetWords} 字`:""}${p.maxWords?`,最多不超过 ${p.maxWords} 字`:""}。`,b.sections?.length?"- 必须完整包含已规划小节;不要新增未规划的二级小节。":"- 未预设小节时,不要为了凑结构强行新增小节。",b.tablePlans?.length?"- 本章存在结构化表格规划时,必须输出正式 Markdown 表格;表头必须严格使用规划字段,不得擅自改字段、删字段或增加后台溯源列。":b.tableSections?.length?`- 以下小节可使用表格辅助表达:${b.tableSections.join("、")}。`:"",b.tablePlans?.length?"- 表格字段值必须优先来自项目图谱、可信事实和绑定材料;projectFactOnly 字段不得编造,也不得写任何固定占位话术。":"",H,I,J,K,L,...M,o||"","",w?"绑定材料:":"",w,p.userWriterRules?`
|
|
55
55
|
【用户写作指令——必须严格遵守】
|
|
56
|
-
${
|
|
57
|
-
${e}`:"",k?`用户要求:${k}`:"",G,
|
|
58
|
-
${N}`:"",
|
|
56
|
+
${p.userWriterRules}`:""].filter(Boolean).join("\n"),Q={l0:O.length,l1:(0,i.CX)([e?`配置写作主控提示词:
|
|
57
|
+
${e}`:"",k?`用户要求:${k}`:"",G,p.blueprintDataText||"",p.blueprintSliceText||"","请生成可直接导出的 Markdown 章节,要求:","- 内容必须遵循用户提示词、模板章节、提示词角色、项目资料包和自动识别的资料类型;不得编造材料未提供的项目专属事实;任何带数值、工程量、规格、型号、品牌、参数的表述必须逐字来自绑定材料、蓝图参数桶或清单事实锁,材料中没有对应值时不得猜测填充、不得以行业惯例或公共知识为由虚构数值;公共知识豁免仅限法律法规名称、标准规范名称与编号(不带本项目数值)以及通用工艺做法表述,可依据现行有效版本直接引用。","- 将材料要点自然融入正文;不要输出系统证据清单、中间分析过程或后台流程话术。",h.KX]),l2:(0,i.CX)([`文档模板:${a.name}`,`章节目的:${b.purpose}`,j?`上下文/历史记忆(仅作偏好、历史纠偏和连续性参考;如与知识库证据冲突,以知识库证据为准):
|
|
58
|
+
${N}`:"",p.sharedFactLayerText||"",p.factCoverageContext||"",d.length?`需要特别补足的信息:${d.join("、")}`:"",p.chapterLevelContext||"",y]),l3:(0,i.CX)([`章节标题:${b.title}`,`- 保留章节标题;内容不少于 ${p.minWords||1e3} 字${p.targetWords?`,目标约 ${p.targetWords} 字`:""}${p.maxWords?`,最多不超过 ${p.maxWords} 字`:""}。`,b.sections?.length?"- 必须完整包含已规划小节;不要新增未规划的二级小节。":"- 未预设小节时,不要为了凑结构强行新增小节。",b.tablePlans?.length?"- 本章存在结构化表格规划时,必须输出正式 Markdown 表格;表头必须严格使用规划字段,不得擅自改字段、删字段或增加后台溯源列。":b.tableSections?.length?`- 以下小节可使用表格辅助表达:${b.tableSections.join("、")}。`:"",b.tablePlans?.length?"- 表格字段值必须优先来自项目图谱、可信事实和绑定材料;projectFactOnly 字段不得编造,也不得写任何固定占位话术。":"",H,I,J,K,L,...M,o||"",w?"绑定材料:":"",w,p.userWriterRules?`
|
|
59
59
|
【用户写作指令——必须严格遵守】
|
|
60
|
-
${
|
|
60
|
+
${p.userWriterRules}`:""])},R=await (0,i.rI)(O,P,!1,{maxTokens:p.maxTokens,signal:p.signal,diagnostics:p.diagnostics,contextLayers:Q,prefixKey:`writer-block:${b.id}`});if(R&&!(R.length<120))return(0,h.kT)((0,h.FD)(R.startsWith("## ")?R:`## ${b.title}
|
|
61
61
|
|
|
62
|
-
${R}`,!!
|
|
62
|
+
${R}`,!!p.forbidDrawingImages))}function E(a){return[...new Set((a.match(/[\p{Script=Han}]{2,}|[A-Za-z0-9_-]{3,}/gu)||[]).map(a=>a.toLowerCase()))]}function F(a,b,c){let d=E([a,b.title,...b.requiredFacts||[]].join(" ")),e=/项目概况|工程概况|总体|部署|施工方案|工期|进度|质量|安全|资源|材料|设备/u.test(a),f=c.map((b,c)=>{let f=`${b.filePath}
|
|
63
63
|
${b.sectionTitle||""}
|
|
64
64
|
${b.content}`.toLowerCase(),g=`${b.filePath}
|
|
65
65
|
${b.sectionTitle||""}
|
|
66
66
|
${b.content}`,h=d.reduce((a,b)=>a+ +!!f.includes(b),0),i=b.sectionTitle&&(a.includes(b.sectionTitle)||b.sectionTitle.includes(a))?4:0,j=q.sv.test(g)||/合同估算价|合同估算价格|计划工期/u.test(g)?1.5:0,k=e&&/计划工期|合同工期|合同估算价|合同估算价格|投资估算|建设地点|建设规模|质量标准|招标范围/u.test(g)?5:0,l=.8*!!/table|sheet|bill|data|drawing|图纸|表格|清单|参数|数据|说明/u.test(`${b.roleId||""} ${b.processingType||""} ${b.filePath}`);return{item:b,score:h+i+j+k+l+.1*b.score-.001*c}}).sort((a,b)=>b.score-a.score),g=f.filter(a=>a.score>0).map(a=>a.item);if(0===g.length)return c;let h=new Set(g);return[...g,...f.filter(({item:a})=>!h.has(a)).filter(({item:a})=>/招标范围|建设规模|建设地点|计划工期|质量标准|施工内容|管理机构|岗位职责|施工部署|现场交通|人车分流/u.test(`${a.sectionTitle||""}
|
|
67
|
-
${a.content}`)).map(a=>a.item)]}let
|
|
67
|
+
${a.content}`)).map(a=>a.item)]}let G=/计划工期|合同工期|建设地点|建设规模|质量标准|招标范围|施工范围|工作内容|项目特征|材料|设备|规格|型号|数量|单位|做法|节点|系统|管径|标高|尺寸|厚度|强度|等级|验收|检测|试验|安全|文明|扬尘|环保|消防|临时用电|临水|排水|交叉施工|地下管线|有限空间|危大|专项方案|专家论证|进度节点|保修|移交/iu,H=/报价明细|综合单价|税率|增值税|利润|结算|预留金|暂列金额|暂估价/u,I=/合同估算价|合同估算价格|投资估算|估算价格|工程估算价|最高投标限价|招标控制价/u,J=/材料价格|商务报价|投标总价|合同总价|工程总价/u,K=["暂列金额与暂估价的报价明细","综合单价与清单合价的商务数据","材料价格与商务报价的商务条款"],L=["合同估算价与投资估算的项目信息","最高投标限价与招标控制价的公开信息"];async function M(a){return(0,r.A)({prototypes:[...K],negativePrototypes:[...L],embedDocuments:a})}function N(a){return(0,j.lG)(a).replace(/\s+/gu,"").replace(/[,。,.;;::、()()【】[\]《》“”"'`]/gu,"")}function O(a){return(0,j.lG)(a).replace(/^\s*#{1,6}\s*/u,"").replace(/^\s*\d+(?:\.\d+)*\s*/u,"").replace(/\s+/gu," ").trim()}function P(a,b){let c=N(b),d=function(a){let b=O(a),c=N(b),d=new Set,e=a=>{let b=N(a);b.length<2||/^(本项目|施工|工程|资料|要求|进行|应当|按照|落实|管理|检查|验收)$/u.test(b)||d.add(b)};for(let a of b.split(/[,。,.;;::、()()【】[\]\s]+/u))e(a);let f=b.match(/^\s*([^::]{2,12})[::]\s*(.+)$/u);for(let a of(f&&(e(f[1]||""),e(f[2]||"")),c.matchAll(/\d+(?:\.\d+)?(?:mm|cm|m|km|㎡|m²|m3|m³|kg|g|t|L|ml|MPa|kPa|℃|%|台|套|个|项|批|次|份|人|小时|分钟|日历天|天|周|月|年)?|DN\d+|φ\d+|Φ\d+|GB\d+|JGJ\d+/giu)))e(a[0]);return[...d].slice(0,18)}(a);if(0===d.length)return 0;let e=d.filter(a=>/\d/u.test(a));return e.length>0?e.filter(a=>c.includes(a)).length:d.filter(a=>c.includes(a)).length}async function Q(a,b,c){let e=[],f=new Set,g=E(a).filter(a=>a.length>=2),h=[];for(let a of b)for(let b of(0,j.lG)(a.content).split(/\r?\n/u)){let c=(0,s.rj)(O(b));!(c.length<4)&&!(c.length>280)&&(0,s.SR)(c)&&!(/^(?:工作表|序号|COL\d+|资料类型|PDF\s*第|第\d+页)/iu.test(c)||/\|.*\|/u.test(c)&&!/(工程名称|建设地点|建设规模|计划工期|招标范围|合同估算|暂列金额|建筑面积)/u.test(c)||/^(?:[.。;;、\s]+)?(?:工程重点难点|确保安全文明生产|项目概况与招标范围)$/u.test(c)||/^[.。;;、\s]*[^::]{2,40}(?:是否|符合|在采购范围内).{0,30}\d{3,}$/u.test(c)||/^[.。;;、\s]*(?:系统|综合布线系统|智能化设备).{0,40}\d{3,}$/u.test(c)||/^[.。;;、\s]*(?:工程重点难点及危大工程的保障体系与措施|确保安全文明生产的管理体系与措施)$/u.test(c)||/第二章投标人须知|不得存在|报价|中标后不予调整|清单不再单独列项|自行踏勘|元\/条|安全生产许可证|营业执照|联合体投标|投标人资格|投标人资质|资质要求|资格审查|资格后审|业绩要求|信誉要求|财务要求|中标通知书|签订合同|评标办法|电子交易系统|踏勘现场|投标预备会/u.test(c))&&1&&h.push({line:c,filePath:a.filePath,roleId:a.roleId})}let i=await M(c),k=h.filter(({line:a})=>{let b=H.test(a),c=I.test(a),d=J.test(a);return b&&(c||d)||d&&!b}),l=k.length>0?await i(k.map(({line:a})=>a)):[],m=new Set(k.filter((a,b)=>l[b]).map(({line:a})=>a));for(let{line:a,filePath:b,roleId:c}of h){let d=H.test(a),h=I.test(a),i=J.test(a);if(d&&!h&&!i||m.has(a))continue;let j=q.AM.test(a),k=G.test(a),l=g.some(b=>a.includes(b));if(!j&&!k&&!l)continue;let n=N(a).slice(0,160);if(!f.has(n)&&(f.add(n),e.push({text:a,sourceFile:b,roleId:c,quantified:j}),e.length>=16))break}let n=e.map(a=>`- ${a.text}(来源:${d.basename(a.sourceFile)}${a.roleId?`,角色:${a.roleId}`:""})`),o=n.length?`【当前小节写作任务卡】
|
|
68
68
|
小节:${a}
|
|
69
69
|
必须优先落位的资料事实:
|
|
70
70
|
${n.join("\n")}
|
|
71
71
|
成稿要求:1)至少自然写入其中 2 条资料事实;2)如存在数字、规格、标准编号、数量、工期,必须至少原样写入 1 条;3)围绕“资料依据—对象范围—实施做法—检查验收/闭环”展开,不得写成“结合实际、按规范执行”的泛化空话;4)不得改写、换算或编造资料未提供的参数;5)量化参数落位硬性要求:本节正文每千字不少于 2 个不同量化参数(优先使用上方清单参数与资料原文参数),同一参数不得反复堆砌凑数;当本节资料可落位参数不足 2 个/千字时,以全部可落位参数写入为准,不得虚构参数凑数——「参数不足」仅在资料中仍有未落位参数时构成打回理由。`:"",p=y(b),r=p.length?`【量化参数落位清单】
|
|
72
|
-
本节资料中可直接落位的可靠精确参数/编号:${p.join("、")}。这些参数来自绑定资料,不属于编造;涉及对应对象、部位、工序、材料、设备、质量验收或安全控制时必须自然写入正文,并保持原样或等价专业表达。`:"";return{items:e,quantifiedCount:e.filter(a=>a.quantified).length,preciseTokens:p,prompt:[o,r].filter(Boolean).join("\n\n")}}function
|
|
72
|
+
本节资料中可直接落位的可靠精确参数/编号:${p.join("、")}。这些参数来自绑定资料,不属于编造;涉及对应对象、部位、工序、材料、设备、质量验收或安全控制时必须自然写入正文,并保持原样或等价专业表达。`:"";return{items:e,quantifiedCount:e.filter(a=>a.quantified).length,preciseTokens:p,prompt:[o,r].filter(Boolean).join("\n\n")}}function R(a,b,c){if(0===c.items.length)return;let d=(0,e.V7)(b);if(d<180)return`小节正文过短,需补写专业做法和证据依据`;let f=/概况|范围|清单|图纸|设计|材料|设备|工期|质量|安全|危大|资源|验收/u.test(a),g=c.items.filter(a=>P(a.text,b)>=(a.quantified?1:2)),h=c.items.filter(a=>a.quantified&&P(a.text,b)>=1),i=f?Math.min(c.items.length,2):Math.min(c.items.length,1),j=f&&c.quantifiedCount>0?1:0;if(g.length>=i&&h.length>=j||!f&&d>=650&&/复核|检查|验收|交底|台账|整改|闭环|进场|协调|保护/u.test(b))return;let k=c.items.filter(a=>!g.includes(a)).slice(0,f?4:2).map(a=>a.text);return`知识库事实落位不足:当前小节已落位 ${g.length}/${c.items.length} 条知识库事实、${h.length}/${c.quantifiedCount} 条量化事实;建议补入:${k.join(";")}`}function S(a,b=2e3){let c=a.split(/\r?\n/u).map(a=>a.trim()).filter(Boolean),d=[],e=[],f=!1;for(let a of c){if(a.startsWith("【招标文件评分项要求")){f=!0,d.push(a);continue}f&&a.startsWith("【")&&(f=!1),(f?d:e).push(a)}let g=[],h=[],i=!1;for(let a of e){if(a.startsWith("可信基础事实主表")){i=!0,g.push(a);continue}if(i&&a.startsWith("- ")){g.push(a);continue}i&&!a.startsWith("- ")&&(i=!1),h.push(a)}let j=h.filter(a=>/【.+】/u.test(a)||/=/u.test(a)||/^\d+\.\s+/u.test(a)||/:\S{1,40}$/u.test(a)),k=j.length>=8?j:h,l=d.join("\n").trim(),m=g.join("\n").trim(),n=k.join("\n").trim(),o=(a,b)=>a.length<=b?a:`${a.slice(0,b)}
|
|
73
73
|
(上下文已截断,完整信息见绑定材料与证据)`,p=[l,m].filter(Boolean).join("\n");return p?`${p}
|
|
74
|
-
${o(n,Math.max(400,b-p.length-20))}`:o(n,b)}function
|
|
74
|
+
${o(n,Math.max(400,b-p.length-20))}`:o(n,b)}function T(a,b=2e3){let c=a.split(/\r?\n/u).map(a=>a.trim()).filter(Boolean),d=[],e=[],f=[],g=[],h=[],i="body";for(let a of c){if(a.startsWith("【招标文件评分项要求")){i="requirements",d.push(a);continue}if(a.startsWith("可信基础事实主表")){i="facts",e.push(a);continue}if(a.startsWith("章节专业任务卡:")){i="taskCard",f.push(a);continue}if(a.startsWith("章节实施方案:")){i="executionPlan",g.push(a);continue}if("requirements"===i)if(a.startsWith("【"))i="body";else{d.push(a);continue}if("facts"===i){if(a.startsWith("- ")){e.push(a);continue}i="body"}if("taskCard"===i){f.push(a);continue}if("executionPlan"===i){if(a.startsWith("- ")){g.push(a);continue}i="body"}h.push(a)}let j=h.filter(a=>/【.+】/u.test(a)||/=/u.test(a)||/^\d+\.\s+/u.test(a)||/:\S{1,40}$/u.test(a)),k=j.length>=8?j:h,l=[d.join("\n").trim(),e.join("\n").trim(),f.join("\n").trim(),g.join("\n").trim()].filter(Boolean).join("\n"),m=k.join("\n").trim(),n=(a,b)=>a.length<=b?a:`${a.slice(0,b)}
|
|
75
75
|
(上下文已截断,完整信息见绑定材料与证据)`;return l?`${l}
|
|
76
|
-
${n(m,Math.max(400,b-l.length-20))}`:n(m,b)}async function
|
|
76
|
+
${n(m,Math.max(400,b-l.length-20))}`:n(m,b)}async function U(a){let b=F(a.sectionTitle,a.chapter,a.evidence),c=await Q(a.sectionTitle,b),d=(0,v.z)().blockEvidenceChars||1e3,g=Number.isFinite(d)&&d>0?Math.floor(d):1e3,m=!!a.sharedFactLayerText,n=(0,f.ks)((0,f.QO)(a.chapter,b),{maxChars:(0,f.Pc)(a.targetWords,1e3,g),requiredFacts:a.chapter.requiredFacts,skipT0:m,skipT2Catalog:!0,rankBoost:a.sectionRankBoost,onlyRankBoosted:!!a.sectionRankBoost,diagnostics:a.diagnostics}),q=a.compactProjectContext?a.scopedProjectContext?T(a.projectContext):S(a.projectContext):a.projectContext,r=a.skeletonProjectContext??a.projectContext,s=t.Yp.test(a.sectionTitle)||t.gG.test(a.sectionTitle)?(0,p.Dz)(r,b):[],u=s.length>0?(0,o.cn)(s.map(a=>a.name)):[],w=u.length>0?(0,o.we)(u,s.map(a=>a.name)):"",x=t.Yp.test(a.sectionTitle)||t.gG.test(a.sectionTitle)?(0,p.Bk)(r,b):"",y=[a.promptTexts?`配置写作主控提示词:
|
|
77
77
|
${a.promptTexts}`:"",`文档模板:${a.template.name}`,`章节标题:${a.chapter.title}`,a.requirement?`用户要求:${a.requirement}`:"",A(a.requirement),a.blueprintDataText||"",a.blueprintSliceText||"",a.projectContext?`上下文:
|
|
78
78
|
${q}`:"",a.factCoverageContext||"",a.sharedFactLayerText||"",a.roleContext,a.missingFacts.length?`需要特别补足的信息:${a.missingFacts.join("、")}`:"","本章节结构已由系统按模板和提示词锁定;不得删除、重命名、合并或重排当前节标题;每个节下必须自然展开三级小节,三级小节承载正文。",h.KX,`当前二级小节:${a.sectionTitle}`,(0,l.av)(a.chapter.title,a.sectionTitle),a.tablePlanInstruction||"",c.prompt,...(0,t.zC)(a.sectionTitle),w,x,`请只生成当前节内容,使用“### ${a.sectionTitle}”作为节标题;正文必须下沉到若干“#### 三级小节标题”下面,不得在 ### 标题后直接写大段正文。目标约 ${a.targetWords} 字${a.maxWords?`,最多不超过 ${a.maxWords} 字`:""}。`,a.qualityFeedback?`上轮小节未通过质量检查,必须修正:${a.qualityFeedback}`:"",n?`绑定材料:
|
|
79
79
|
${n}`:""].filter(Boolean).join("\n\n"),z=[(0,h.b_)("你是专业文档的小节生成专家。\n\n"+h.rd)].filter(Boolean).join("\n\n"),B={l0:z.length,l1:(0,i.CX)([a.promptTexts?`配置写作主控提示词:
|
|
@@ -82,25 +82,9 @@ ${q}`:"",a.factCoverageContext||"",a.sharedFactLayerText||"",a.roleContext,a.mis
|
|
|
82
82
|
${c||""}`.matchAll(/(?:开挖深度|基坑深度|坡底线|坑底标高)[^。;;\n\d]{0,16}?-?(\d+(?:\.\d+)?)/gu)].map(a=>Math.abs(Number(a[1]))).filter(a=>Number.isFinite(a)&&a>=1&&a<50),e=d.length>0?Math.max(...d):void 0;return["【危大工程判定规则卡】依据住建部《危险性较大的分部分项工程安全管理规定》(住建部令第37号):开挖深度≥3m 的基坑工程属危大工程,必须编制专项施工方案并组织专家论证以外的审核流程;开挖深度≥5m 的基坑工程属超过一定规模的危大工程,专项施工方案必须经专家论证。",void 0!==e?`本工程资料基坑开挖深度为 ${e}m${e>=5?"(属超过一定规模的危大工程,专项方案必须专家论证)":e>=3?"(属危大工程,必须编制专项施工方案)":"(未达危大工程判定阈值,仍须按一般土方工程管控)"}`:"资料中暂未锁定本工程基坑开挖深度数值:不得编造深度数值,必须从绑定证据(基坑支护设计图/地质勘察报告)锁定实际深度后落位危大分级结论。","本节基坑内容必须同时写明:①本工程实际开挖深度数值,②对应的危大分级判定结论(危大工程/超过一定规模的危大工程+专家论证)与管控要求,不得只写判定规则不落地本项目深度与分级。\n本节若涉及基坑支护形式与做法,必须写明具体支护参数并与资料支护形式一致:土钉墙写明土钉规格(钢管Φ及壁厚)、长度、竖向/水平间距、喷射混凝土面层厚度与钢筋网规格;放坡开挖写明放坡坡率(如1:0.75)与坡面防护做法;禁止「按设计坡率」「放坡或支护」类参数留白或两可表述。\n若本节输出危大工程(辨识)清单表格或排除性声明,两者必须同口径:清单只列资料参数确认达到判定阈值的类别;正文声明「本工程无/未涉及某类危大工程」的类别不得再列入危大清单表格(反之亦然),参数阈值表述不得两处不一致。"].join("\n")}(a.sectionTitle,a.projectContext,c.prompt),...(0,t.zC)(a.sectionTitle),w,x,`请只生成当前节内容,使用“### ${a.sectionTitle}”作为节标题;正文必须下沉到若干“#### 三级小节标题”下面,不得在 ### 标题后直接写大段正文。目标约 ${a.targetWords} 字${a.maxWords?`,最多不超过 ${a.maxWords} 字`:""}。`,a.qualityFeedback?`上轮小节未通过质量检查,必须修正:${a.qualityFeedback}`:"",n?`绑定材料:
|
|
83
83
|
${n}`:""])},C=()=>(0,i.rI)(z,y,!1,{maxTokens:Math.min(8192,Math.max(2800,Math.ceil(2.6*a.targetWords))),temperature:0,signal:a.signal,diagnostics:a.diagnostics,contextLayers:B,prefixKey:`writer-section:${a.chapter.id}`}),D=a.diagnostics?await (0,k.X6)(a.diagnostics,`section-draft:${a.chapter.id}:${a.sectionTitle}`,C):await C();if(!D||D.length<80)return;let E=(0,h.kT)((0,h.FD)(D.startsWith("### ")?D:`### ${a.sectionTitle}
|
|
84
84
|
|
|
85
|
-
${D}`,a.forbidDrawingImages)).replace(/^##\s+.*\n+/u,"").trim(),
|
|
86
|
-
${d}`:""])},k=await (0,i.rI)(g,[`章节标题:${a.chapter.title}`,a.requirement?`用户要求:${a.requirement}`:"",a.blueprintDataText||"",a.blueprintSliceText||"","禁止写“根据/依据招标文件、补疑澄清文件、工程量清单及设计图纸”等资料来源罗列话术;直接写项目事实、施工内容、控制措施和验收要求。",`指定节标题:### ${a.sectionTitle}`,(0,p.Uz)(a.sectionTitle),(0,l.av)(a.chapter.title,a.sectionTitle),...(0,t.zC)(a.sectionTitle),a.tablePlanInstruction||"",c.prompt,`目标正文约 ${a.targetWords} 字,最多 ${a.maxWords||Math.ceil(1.18*a.targetWords)} 字。正文必须分布在 #### 三级小节下,包含对象范围、执行措施、检查验收和资料闭环;没有精确数值时写正式过程控制,不编造数值。`,(0,p.hf)(a.sectionTitle)?"该小节属于施工组织设计通用管理小节:允许基于项目基础事实、招标范围、工期质量目标、现场组织要求和施工总承包管理逻辑形成正式措施,但不得编造具体姓名、品牌、型号、金额或不存在的日期。":"",a.qualityFeedback||"",d?`压缩证据:
|
|
87
|
-
${d}`:""].filter(Boolean).join("\n\n"),!1,{maxTokens:Math.min(6e3,Math.max(3e3,Math.ceil(2.4*a.targetWords))),temperature:0,signal:a.signal,diagnostics:a.diagnostics,contextLayers:j,prefixKey:`writer-focused:${a.chapter.id}`});if(!k||k.length<40){let b=a.diagnostics?.llm.lastError;a.diagnostics&&(a.diagnostics.llm.lastError=`focused writer 无正文:${a.chapter.title} / ${a.sectionTitle} / ${b&&b!==e?b:"空响应"}`);return}let m=(0,h.kT)((0,h.FD)(k.startsWith("### ")?k:`### ${a.sectionTitle}
|
|
85
|
+
${D}`,a.forbidDrawingImages)).replace(/^##\s+.*\n+/u,"").trim(),G=(0,p.ap)(a.sectionTitle),H=Math.min(Math.max(Math.floor(.7*a.targetWords),G),Math.max(500,a.targetWords)),I=(0,p.eK)(a.sectionTitle,E),J=E,K=t.Yp.test(a.sectionTitle)||t.gG.test(a.sectionTitle);if(K){let b=(0,p.YK)((0,p.DD)(J));b&&(I||=b);let c=(0,p.I6)(J);c!==J&&(J=c,I=(0,p.eK)(a.sectionTitle,J))}if(I&&a.allowLenientStructureGate&&K){let b=(0,p.sE)(a.sectionTitle,J),c=(b.match(/^####\s+/gmu)||[]).length,d=b.split(/^####\s+/gmu).slice(1).map(a=>a.trim()).filter(Boolean),f=d.length>0&&d.every(a=>(0,j._R)(a)),g=(0,p.y7)((0,p.DD)(b));c>=3&&f&&!g&&(0,e.V7)(J)>=H&&(I="")}if(I){a.diagnostics&&(a.diagnostics.llm.lastError=`${I}:${a.chapter.title} / ${a.sectionTitle}`);return}if((0,p.zJ)(a.sectionTitle)&&(0,e.V7)(J)<H){a.diagnostics&&(a.diagnostics.llm.lastError=`section writer 正文不足:${a.chapter.title} / ${a.sectionTitle} / ${(0,e.V7)(J)}/${H}字`);return}let L=/项目主要施工内容/u.test(a.sectionTitle)?(0,p.h$)(J):J;return(0,p.ev)(a.sectionTitle,L)}async function V(a,b){let c;for(let d=0;d<b;d+=1){let b,f=await U({...a,qualityFeedback:c});if(!f){c=`上一轮未生成有效正文${a.diagnostics?.llm.lastError?`(被拒原因:${a.diagnostics.llm.lastError})`:""}。请定向修正:保留上一轮已通过检查的内容不变,只补写缺失的要素段(作业对象与工程量/工序顺序/施工方法,缺哪项补哪项),不得整体重写已正确的部分。`;continue}let h=function(a,b){let c=b.replace(/^#{3,4}\s+.*\n+/u,"").split(/\r?\n/u).filter(a=>!/^\s*\|/u.test(a)).filter(a=>!/^\s*\|?\s*:?-{3,}:?/u.test(a)).join("\n"),d=(0,e.V7)(c);return d<360?`正文有效内容不足:${a} 当前约 ${d} 字`:/资料未提供|信息有限|无法确定|待补充|建议扩大本地知识库检索|以下是|本文档|本小节围绕/u.test(c)?`存在空泛或说明性话术:${a}`:void 0}(a.sectionTitle,f);if(0===d&&!h){let c=(0,g.I)(f,a.evidence.map(a=>a.content).join("\n"));c.mismatched.length>0&&(a.diagnostics&&(a.diagnostics.llm.lastInfo=`数值核验:${a.sectionTitle} 发现 ${c.mismatched.length} 处疑似错误数值(${c.mismatched.map(a=>`${a.found}→${a.expected}`).join("、")})`),b=(0,g.n8)(c))}if(!h&&!b)return f;c=h||b}}async function W(a,b){let c,d=b.blocks;if(0===d.length)return;let l=(a,b)=>a.replace(/^###\s+[^\n]*\n+/u,a=>{let c=a.replace(/^###\s+/u,"").trim();return(0,j.Sw)(c)===b?"":a}),n=(a,b,c)=>`${a}
|
|
88
86
|
|
|
89
|
-
${
|
|
90
|
-
${a.promptTexts}`:"",a.requirement?`用户要求:${a.requirement}`:"",`当前小节约 ${b} 字,目标约 ${a.targetWords} 字,本轮补充约 ${n} 字。`,"请输出可直接追加或插入到本小节的补充段落;不要重复小节标题,不要解释生成过程;优先使用绑定资料中的事实和量化参数,不得输出“该小节围绕”等模板化占位句。"]),l2:(0,i.CX)([`章节标题:${a.chapter.title}`,a.factCoverageContext||"",(0,l.av)(a.chapter.title,a.sectionTitle)]),l3:(0,i.CX)([`当前小节:${a.sectionTitle}`,k.prompt,m?`绑定材料:
|
|
91
|
-
${m}`:"",`已有小节正文:
|
|
92
|
-
${(0,p.DD)(a.currentContent).slice(0,12e3)}`,q])},t=await (0,i.rI)(r,[a.promptTexts?`配置写作主控提示词:
|
|
93
|
-
${a.promptTexts}`:"",`章节标题:${a.chapter.title}`,`当前小节:${a.sectionTitle}`,a.requirement?`用户要求:${a.requirement}`:"",a.blueprintDataText||"",a.blueprintSliceText||"",a.factCoverageContext||"",(0,l.av)(a.chapter.title,a.sectionTitle),k.prompt,`当前小节约 ${b} 字,目标约 ${a.targetWords} 字,本轮补充约 ${n} 字。`,"请输出可直接追加或插入到本小节的补充段落;不要重复小节标题,不要解释生成过程;优先使用绑定资料中的事实和量化参数,不得输出“该小节围绕”等模板化占位句。",m?`绑定材料:
|
|
94
|
-
${m}`:"",`已有小节正文:
|
|
95
|
-
${(0,p.DD)(a.currentContent).slice(0,12e3)}`,q].filter(Boolean).join("\n\n"),!1,{maxTokens:Math.min(8192,Math.max(2800,Math.ceil(2.6*n))),temperature:0,signal:a.signal,diagnostics:a.diagnostics,contextLayers:s,prefixKey:`writer-supplement:${a.chapter.id}`}),u=(0,h.kT)((0,h.FD)(t||"",a.forbidDrawingImages)).replace(/^#{3,4}\s+.*\n+/u,"").trim();return u?`${a.currentContent.trim()}
|
|
96
|
-
|
|
97
|
-
${u}`:a.currentContent}async function Y(a){if((0,p.hf)(a.sectionTitle)){let b=await W({...a,targetWords:a.targetWords,maxWords:Math.ceil(1.22*a.targetWords),qualityFeedback:`本小节使用 focused writer 优先成稿。必须直接输出“### ${a.sectionTitle}”及正式正文。`}).catch(b=>{a.diagnostics&&(a.diagnostics.llm.lastError=`focused writer 异常:${a.chapter.title} / ${a.sectionTitle} / ${b instanceof Error?b.message:String(b)}`)});if(b)return(0,h.kT)((0,h.FD)(b,a.forbidDrawingImages))}let b=function(a,b){if(/项目主要施工内容/u.test(a))return[{sectionTitle:a,taskTitle:a,targetWords:Math.max(b,2200),index:1,total:1}];let c=(0,p.zJ)(a)?760:Math.max(1400,Math.floor((0,v.z)().writingTaskMaxWords??2800)),d=(0,p.zJ)(a)?Math.max(3,Math.ceil(b/c)):b>1.5*c?Math.ceil(b/c):1,e=Math.max(800,Math.ceil(b/d));return d<=1?[{sectionTitle:a,taskTitle:a,targetWords:b,index:1,total:1}]:Array.from({length:d},(b,c)=>({sectionTitle:a,taskTitle:function(a,b,c){if(/项目特点.*重点.*难点|重点.*难点.*分析/u.test(a))return["项目特点与基础事实","施工重点识别","施工难点成因与影响","应对措施与责任闭环","重点难点与施工内容对应关系"][b%5];if(/项目主要施工内容/u.test(a))return["专业工程识别与作业对象","专业工程工序顺序","专业工程施工方法与工艺参数","工程量参数与资源穿插","验收检测与资料闭环"][b%5];if(/主要分部分项工程施工方案|主要施工方法/u.test(a))return["分部分项工程识别与作业对象","主要工艺流程与施工顺序","材料设备与参数控制","质量安全控制点","验收移交与资料闭环"][b%5];let d=a.toLowerCase(),e=/资源|材料|设备|人材机/u.test(a)?["资源配置依据","材料设备规格与数量","进场组织与保管要求","使用调配与过程核验","验收记录与动态调整"]:/施工|工艺|技术|安装|土建|结构|给排水|电气/u.test(a)||/method|technical/u.test(d)?["施工准备与技术依据","主要工艺流程","材料设备与参数控制","质量验收要点","成品保护与问题处置"]:/安全|文明|危大|风险/u.test(a)?["风险识别与控制边界","防护设施与作业条件","人员设备安全管理","检查频次与整改闭环","应急响应与资料留存"]:/质量|验收|标准/u.test(a)?["质量目标与验收依据","过程控制点","材料设备复核","检验批与验收资料","问题整改与成品保护"]:["资料依据与适用范围","对象范围与关键参数","实施方法与组织安排","质量安全控制要求","检查验收与闭环管理"];return c<=1?a:`${a}:${e[b%e.length]}`}(a,c,d),targetWords:e,index:c+1,total:d}))}(a.sectionTitle,a.targetWords),c=Array(b.length),d=async b=>{let c,d;(0,j.Te)(a.signal);let e=b.total>1?2:3;for(let f=0;f<e&&!c;f+=1){let g=b.targetWords;try{c=await V({...a,sectionTitle:b.sectionTitle,targetWords:g,maxWords:Math.ceil(1.18*g),qualityFeedback:[b.total>1?`这是首轮生成的主题任务 ${b.index}/${b.total},只聚焦“${b.taskTitle}”。不得重复同小节其他主题的通用表述;优先写入与本主题相关的资料事实、规格、数量、标准、检查要求和执行动作。`:a.qualityFeedback,f>0?`上一轮未生成有效正文${d?`(被拒原因:${d})`:""}。本轮必须直接输出“### ${a.sectionTitle}”及正式正文,逐条修正被拒原因,优先完成可审查、可落位事实的核心内容。`:""].filter(Boolean).join("\n")})}catch{c=void 0}if(c||(d=a.diagnostics?.llm.lastError),!c&&f===e-1)try{c=await W({...a,sectionTitle:b.sectionTitle,targetWords:g,maxWords:Math.ceil(1.18*g),qualityFeedback:`前序 Writer 未完成${d?`(被拒原因:${d})`:""}。本轮使用轻量定向 Writer,只完成“${a.sectionTitle}”正式正文,逐条修正被拒原因;保留已有正确内容,只补缺失要素段(作业对象与工程量/工序顺序/施工方法,缺哪项补哪项)。`})}catch(d){a.diagnostics&&(a.diagnostics.llm.lastError=`focused writer 后置异常:${a.chapter.title} / ${b.sectionTitle} / ${d instanceof Error?d.message:String(d)}`),c=void 0}}return c?(0,p.DD)(c):void 0},f=(0,v.z)().writingTaskConcurrency||2,g=Math.max(1,Math.min(b.length,2,Number.isFinite(f)?Math.floor(f):2));for(let e=0;e<b.length;e+=g){(0,j.Te)(a.signal);let f=b.slice(e,e+g);(await Promise.all(f.map(a=>d(a)))).forEach((a,b)=>{c[e+b]=a})}let i=c.filter(a=>!!a);if(0===i.length){a.diagnostics&&!a.diagnostics.llm.lastError&&(a.diagnostics.llm.lastError=`task writer 未产出有效正文:${a.chapter.title} / ${a.sectionTitle}`);return}let k=`### ${a.sectionTitle}
|
|
98
|
-
|
|
99
|
-
${i.join("\n\n")}`;if(200>(0,e.V7)((0,p.DD)(k))){a.diagnostics&&(a.diagnostics.llm.lastError=`task writer 正文空壳:${a.chapter.title} / ${a.sectionTitle} / ${(0,e.V7)((0,p.DD)(k))}字`);return}let l=(0,p.eK)(a.sectionTitle,k);if(l){a.diagnostics&&(a.diagnostics.llm.lastError=`task writer ${l}:${a.chapter.title} / ${a.sectionTitle}`);return}return k=await X({...a,currentContent:k,targetWords:a.targetWords}),(0,h.kT)((0,h.FD)(k,a.forbidDrawingImages))}async function Z(a){let b=E(a.chapter,a.targetWords);if(b.length<2)return;let c=(0,v.z)().sectionConcurrency||b.length||1,d=Math.max(1,Math.min(b.length,Number.isFinite(c)?Math.floor(c):b.length||1)),e=Array(b.length),g=Array(b.length),k=0,l=(0,v.z)().chapterPoolChars||8e3,n=(0,f.R7)((0,f.QO)(a.chapter,a.evidence),a.chapter.requiredFacts||[],Number.isFinite(l)?Math.floor(l):8e3),o=b.map(a=>a.title),p=(0,m.nn)(a.chapter,o),q=b.length-1,r=async(c,d=!1)=>{a.onSectionProgress?.({completed:k,total:b.length,sectionTitle:c.title,phase:d?"retry":"start",partialSections:[...g]});try{let d=a.sectionEvidenceProvider?await a.sectionEvidenceProvider(c.title).catch(()=>[]):[],e=F(c.title).filter(a=>a.length>=2),f={...a,evidence:d.length?[...a.evidence,...d]:a.evidence,projectContext:a.projectContext,roleContext:a.roleContext||"",factCoverageContext:a.factCoverageContext,compactProjectContext:a.compactProjectContext,scopedProjectContext:a.scopedProjectContext,sectionTitle:c.title,targetWords:c.targetWords,maxWords:a.maxWords?Math.max(c.targetWords,Math.ceil(a.maxWords/b.length)):Math.ceil(1.12*c.targetWords),tablePlanInstruction:function(a,b,c=[]){let d=(0,m.El)(a,b),e=[...d,...c.filter(a=>!d.some(b=>b.id===a.id))];return(0,m.Gl)(e,b)}(a.chapter,c.title,c.index===q?p:[]),sharedFactLayerText:n,sectionRankBoost:a=>Math.min(24,e.reduce((b,c)=>b+6*!!a.content.includes(c),0))},h=c.targetWords>=1400?await Y({...f,signal:a.signal}):await _({...f,signal:a.signal},$(b.length));return h&&(k+=1,g[c.index]=h,a.onSectionProgress?.({completed:k,total:b.length,sectionTitle:c.title,phase:"complete",partialSections:[...g]})),h}catch(b){console.warn(`[document-workflow] 小节生成失败:${a.chapter.title} / ${c.title}`,b);return}},s=b.length;if(s>0){(0,j.Te)(a.signal);let c=await r({...b[0],index:0});e[0]=c}for(let c=1;c<s;){(0,j.Te)(a.signal);let f=(0,i.bU)(a.diagnostics)>=5?1:d,g=b.slice(c,Math.min(s,c+f));(await Promise.all(g.map((a,b)=>r({...a,index:c+b})))).forEach((a,b)=>{e[c+b]=a}),c+=f}let t=e.map((a,b)=>a?-1:b).filter(a=>a>=0),u=t;if(u.length>0){for(let c=0;c<u.length;){(0,j.Te)(a.signal);let f=(0,i.bU)(a.diagnostics)>=5?1:d,g=u.slice(c,c+f);(await Promise.all(g.map(a=>r({...b[a],index:a},!0)))).forEach((a,b)=>{a&&(e[g[b]]=a)}),c+=f}t=e.map((a,b)=>a?-1:b).filter(a=>a>=0);for(let c=0;c<t.length;){(0,j.Te)(a.signal);let f=(0,i.bU)(a.diagnostics)>=5?1:d,g=t.slice(c,c+f);(await Promise.all(g.map(a=>r({...b[a],targetWords:Math.max(b[a].targetWords,900),index:a},!0)))).forEach((a,b)=>{a&&(e[g[b]]=a)}),c+=f}}(t=e.map((a,b)=>a?-1:b).filter(a=>a>=0)).length>0&&a.diagnostics&&(a.diagnostics.llm.lastError=`章级生成缺失小节:${a.chapter.title} / ${t.map(a=>b[a].title).join("、")}`);let w=e.map(a=>a||"");return(0,h.kT)((0,h.FD)(`## ${a.chapter.title}
|
|
100
|
-
|
|
101
|
-
${w.join("\n\n")}`,a.forbidDrawingImages))}function $(a){return Math.max(1,Math.min(3,2,a))}async function _(a,b){let c;for(let d=0;d<b;d+=1){let b,f=await V({...a,qualityFeedback:c});if(!f){c=`上一轮未生成有效正文${a.diagnostics?.llm.lastError?`(被拒原因:${a.diagnostics.llm.lastError})`:""}。请定向修正:保留上一轮已通过检查的内容不变,只补写缺失的要素段(作业对象与工程量/工序顺序/施工方法,缺哪项补哪项),不得整体重写已正确的部分。`;continue}let h=function(a,b){let c=b.replace(/^#{3,4}\s+.*\n+/u,"").split(/\r?\n/u).filter(a=>!/^\s*\|/u.test(a)).filter(a=>!/^\s*\|?\s*:?-{3,}:?/u.test(a)).join("\n"),d=(0,e.V7)(c);return d<360?`正文有效内容不足:${a} 当前约 ${d} 字`:/资料未提供|信息有限|无法确定|待补充|建议扩大本地知识库检索|以下是|本文档|本小节围绕/u.test(c)?`存在空泛或说明性话术:${a}`:void 0}(a.sectionTitle,f);if(0===d&&!h){let c=(0,g.I)(f,a.evidence.map(a=>a.content).join("\n"));c.mismatched.length>0&&(a.diagnostics&&(a.diagnostics.llm.lastInfo=`数值核验:${a.sectionTitle} 发现 ${c.mismatched.length} 处疑似错误数值(${c.mismatched.map(a=>`${a.found}→${a.expected}`).join("、")})`),b=(0,g.n8)(c))}if(!h&&!b)return f;c=h||b}}async function aa(a,b){let c,d=b.blocks;if(0===d.length)return;let l=(a,b)=>a.replace(/^###\s+[^\n]*\n+/u,a=>{let c=a.replace(/^###\s+/u,"").trim();return(0,j.Sw)(c)===b?"":a}),n=(a,b,c)=>`${a}
|
|
102
|
-
|
|
103
|
-
${l(b,(0,j.Sw)(c))}`,o=d.flatMap(a=>a.subPoints.flatMap(a=>a.sources)),q=(0,m.nn)(a.chapter,o),r=d.map((b,c)=>{let e=(a.chapter.tablePlans||[]).filter(a=>{if(q.includes(a))return!1;let c=a.title||"";return b.subPoints.some(a=>a.sources.some(a=>c.includes(a)||a.includes(c))||c.includes(a.title)||a.title.includes(c))});return c===d.length-1?[...e,...q]:e}),s=(0,v.z)().plannedBlockConcurrency||d.length,w=Math.max(1,Math.min(d.length,(0,i.Sq)(),Number.isFinite(s)?Math.floor(s):d.length)),x=Array(d.length).fill(void 0),y=[...new Set(a.evidence.flatMap(a=>(0,f.oW)(a.content).split("\n").filter(Boolean)))],z=d.map(a=>new Set(F(`${a.title} ${a.subPoints.map(a=>a.title).join(" ")}`).filter(a=>a.length>=2))),A=d.map(()=>[]);if(y.length>0)for(let a of y){let b=F(a).filter(a=>a.length>=2),c=-1,d=0;z.forEach((a,e)=>{let f=b.reduce((b,c)=>b+ +!!a.has(c),0);f>d&&(d=f,c=e)}),c>=0&&d>0&&A[c].push(a)}let B=(0,v.z)().chapterPoolChars||8e3,C=(0,f.R7)((0,f.QO)(a.chapter,a.evidence),a.chapter.requiredFacts||[],Number.isFinite(B)?Math.floor(B):8e3),E=(0,v.z)().blockEvidenceChars||1e3,G=Number.isFinite(E)&&E>0?Math.floor(E):1e3,H=async(b,c)=>{var f;let h=(0,j.Sw)(b.title),i=b.subPoints.filter(a=>(0,j.Sw)(a.title)!==h).map(a=>a.title),l=new Set([b.title,...b.subPoints.map(a=>a.title)].map(j.Sw).filter(Boolean)),m=new Set(d.flatMap(a=>[a.title,...a.subPoints.map(a=>a.title)]).filter(a=>!l.has((0,j.Sw)(a))).map(j.Sw).filter(Boolean)),o=F(`${b.title} ${i.join(" ")}`).filter(a=>a.length>=2),q=a=>Math.min(24,o.reduce((b,c)=>b+6*!!a.content.includes(c),0)),s=[...a.evidence.map(a=>({item:a,score:o.reduce((b,c)=>b+ +!!a.content.includes(c),0)})).sort((a,b)=>b.score-a.score).map(a=>a.item),...a.sectionEvidenceProvider?await a.sectionEvidenceProvider(b.title).catch(()=>[]):[]],v=t.Yp.test(b.title)?"major":t.gG.test(b.title)||t.gG.test(a.chapter.title)?"division":"",w=t.gG.test(a.chapter.title)&&t.gG.test(b.title),x=a.skeletonProjectContext??a.projectContext,y=v&&!w?(0,p.sh)(x,s):[],z=b.subPoints.map(a=>a.title).filter(Boolean),B=w?[]:(0,p.iA)(y,z),E=w?[]:B.length>0?B:z.length>=3?z:[],I=v?(0,p.Bk)(x,s,3,E):"",J="division"!==v||0!==E.length||w?"":`【分部工程施工方案要素要求】本节为一个分部分项工程的施工方案,写成连贯散文叙述(禁止 Markdown 表格;禁止以“施工概况/施工流程/施工方法”等结构标签充当小节标题或段落开头):
|
|
87
|
+
${l(b,(0,j.Sw)(c))}`,o=d.flatMap(a=>a.subPoints.flatMap(a=>a.sources)),q=(0,m.nn)(a.chapter,o),r=d.map((b,c)=>{let e=(a.chapter.tablePlans||[]).filter(a=>{if(q.includes(a))return!1;let c=a.title||"";return b.subPoints.some(a=>a.sources.some(a=>c.includes(a)||a.includes(c))||c.includes(a.title)||a.title.includes(c))});return c===d.length-1?[...e,...q]:e}),s=(0,v.z)().plannedBlockConcurrency||d.length,w=Math.max(1,Math.min(d.length,(0,i.Sq)(),Number.isFinite(s)?Math.floor(s):d.length)),x=Array(d.length).fill(void 0),y=[...new Set(a.evidence.flatMap(a=>(0,f.oW)(a.content).split("\n").filter(Boolean)))],z=d.map(a=>new Set(E(`${a.title} ${a.subPoints.map(a=>a.title).join(" ")}`).filter(a=>a.length>=2))),A=d.map(()=>[]);if(y.length>0)for(let a of y){let b=E(a).filter(a=>a.length>=2),c=-1,d=0;z.forEach((a,e)=>{let f=b.reduce((b,c)=>b+ +!!a.has(c),0);f>d&&(d=f,c=e)}),c>=0&&d>0&&A[c].push(a)}let B=(0,v.z)().chapterPoolChars||8e3,C=(0,f.R7)((0,f.QO)(a.chapter,a.evidence),a.chapter.requiredFacts||[],Number.isFinite(B)?Math.floor(B):8e3),F=(0,v.z)().blockEvidenceChars||1e3,G=Number.isFinite(F)&&F>0?Math.floor(F):1e3,H=async(b,c)=>{var f;let h=(0,j.Sw)(b.title),i=b.subPoints.filter(a=>(0,j.Sw)(a.title)!==h).map(a=>a.title),l=new Set([b.title,...b.subPoints.map(a=>a.title)].map(j.Sw).filter(Boolean)),m=new Set(d.flatMap(a=>[a.title,...a.subPoints.map(a=>a.title)]).filter(a=>!l.has((0,j.Sw)(a))).map(j.Sw).filter(Boolean)),o=E(`${b.title} ${i.join(" ")}`).filter(a=>a.length>=2),q=a=>Math.min(24,o.reduce((b,c)=>b+6*!!a.content.includes(c),0)),s=[...a.evidence.map(a=>({item:a,score:o.reduce((b,c)=>b+ +!!a.content.includes(c),0)})).sort((a,b)=>b.score-a.score).map(a=>a.item),...a.sectionEvidenceProvider?await a.sectionEvidenceProvider(b.title).catch(()=>[]):[]],v=t.Yp.test(b.title)?"major":t.gG.test(b.title)||t.gG.test(a.chapter.title)?"division":"",w=t.gG.test(a.chapter.title)&&t.gG.test(b.title),x=a.skeletonProjectContext??a.projectContext,y=v&&!w?(0,p.sh)(x,s):[],z=b.subPoints.map(a=>a.title).filter(Boolean),B=w?[]:(0,p.iA)(y,z),F=w?[]:B.length>0?B:z.length>=3?z:[],I=v?(0,p.Bk)(x,s,3,F):"",J="division"!==v||0!==F.length||w?"":`【分部工程施工方案要素要求】本节为一个分部分项工程的施工方案,写成连贯散文叙述(禁止 Markdown 表格;禁止以“施工概况/施工流程/施工方法”等结构标签充当小节标题或段落开头):
|
|
104
88
|
要素自然融入叙述:作业对象与部位、工程量或规模、材料设备规格型号(数量类数值优先取工程量清单数据);工序先后顺序清晰;工艺做法与工艺参数(数值+单位);验收检测与记录闭环。
|
|
105
89
|
数值来源优先级:工程量、材料规格、设备型号等数量类数值优先取工程量清单数据;清单未覆盖的参数(标高、坡率、构造做法等)才取图纸数据;禁止“按设计图纸执行”“详见设计图纸”“按设计文件确定”式概括话术——必须落到具体数值或具体规范条文。${i.length>0?`
|
|
106
90
|
本节覆盖以下分部分项工作内容,正文必须逐项落实、不得遗漏任何一项:${i.join("、")}。`:""}`,K=w?(f=b.targetWords,`【分部分项工程施工方案总述】本节为本章各分部分项工程施工方案的总体概述小节:各分部工程的具体施工方案已在本章其他小节逐项展开,本节不得复写任何单个分部工程的施工方案,也不得把本章其他小节(各分部工程方案)标题作为本节任何标题。正文直接展开、无需四级标题,禁止 Markdown 表格,按以下四部分组织:
|
|
@@ -109,14 +93,14 @@ ${l(b,(0,j.Sw)(c))}`,o=d.flatMap(a=>a.subPoints.flatMap(a=>a.sources)),q=(0,m.nn
|
|
|
109
93
|
三、施工组织与资源配置:按专业划分的施工队伍与作业面安排、总体资源投入与调配原则、多专业协调管理机制;
|
|
110
94
|
四、质量、安全与进度接口:各分部工程间的成品保护与工序交接安排、总体质量控制与检测验收安排、安全文明施工总体要求。
|
|
111
95
|
每部分不少于 ${Math.floor(f/4)} 字,全文合计不少于 ${f} 字;结合本项目资料中的具体工程内容(单体、部位、专业、工程量)展开,禁止空泛原则表述。`):"",L={...a.chapter,title:b.title,sections:i,tablePlans:r[c]||[]},M=[...b.facts||[],...A[c]].slice(0,8),N=M.length?`【本主题块专属事实(只能在本节使用,不得重复出现在本章其他节;本章其他节已认领各自专属事实,本节不得重复展开其他节专属事实)】${M.map(a=>`- ${a}`).join("\n")}`:"",O=b.subPoints.map(a=>(0,j.Sw)(a.title)===h?`- ### ${b.title}(本节标题,覆盖评分细目:${a.sources.join("、")};正文直接展开,无需四级标题;如按细目分节,仅可使用上述细目标题作为四级标题)`:a.sources.length>1?`- #### ${a.title}(覆盖评分细目:${a.sources.join("、")})`:`- #### ${a.title}`).join("\n"),P=m.size>0?`严禁将以下属于本章其他小节的标题作为本节任何标题输出(H3 仅允许「${b.title}」,H4 仅允许上面清单中的标题):${[...m].join("、")}。`:"",Q=b.halfFocus?`
|
|
112
|
-
${b.halfFocus}`:"",R=[N,I,K,J,v&&!w?(0,u.gn)(c):""
|
|
96
|
+
${b.halfFocus}`:"",R=[N,I,K,J,v&&!w?(0,u.gn)(c):"",b.subPoints.length>0?`本节是「${a.chapter.title}」章的一个主题小节,只写本节标题覆盖的内容,不得重复本章其他节内容;必须按以下清单逐点写出实施性正文,标题必须与给定标题完全一致,不得改名、合并或遗漏;每个要点必须覆盖其标注的全部评分细目内容,但不得为这些细目单独开设小节标题:
|
|
113
97
|
${O}${P?`
|
|
114
|
-
${P}`:""}${Q}`,"【防复读硬约束】本节内同一句话只允许出现一次:同一段落内不得复读任何已写出的句子,不同段落之间不得整句复制,同一工艺/措施只在一处完整表述、其余位置引用结论不重述原文;段落结尾不得复读段内前句(禁止“为此/综上/因此”后接照抄句)。"].filter(Boolean).join("\n\n"),S=[],T=[],U=[],
|
|
98
|
+
${P}`:""}${Q}`:`本节是「${a.chapter.title}」章的唯一小节(本章无细分小节规划):正文在 H3 标题下直接展开为连贯的正式叙述,不使用四级标题;覆盖本节标题对应的全部实质内容,不得重复章外内容。${Q}`,"【防复读硬约束】本节内同一句话只允许出现一次:同一段落内不得复读任何已写出的句子,不同段落之间不得整句复制,同一工艺/措施只在一处完整表述、其余位置引用结论不重述原文;段落结尾不得复读段内前句(禁止“为此/综上/因此”后接照抄句)。"].filter(Boolean).join("\n\n"),S=[],T=[],U=[],W=0,X="",Y="";for(let d=0;d<2;d+=1){let f=0===d?"":["【上一轮未通过质检】",S.length?`缺失 H4 要点标题:${S.join("、")}。必须逐点补齐以上 H4 标题并展开正式正文,H4 标题与给定标题完全一致。`:"",T.length?`重复展开的 H4 要点标题:${T.join("、")}。同一小节内相同要点被重复展开多轮,必须只保留一轮完整展开,其余重复小节连同标题整体删除,不得以换编号方式重复同一内容。`:"",U.length?`清单外标题(属于本章其他小节或不在本节要点清单内):${U.join("、")}。这些标题连同其正文整块删除,本节只允许输出上面清单中的 H4 标题与「${b.title}」H3 标题。`:"",0===S.length&&0===T.length&&0===U.length?"必须完整包含每个 H4 要点标题并展开正文,不得合并或遗漏要点。":"",X,Y,a.blueprintMustCiteHint?`【蓝图锁定数值检查】正文必须逐条出现以下蓝图锁定数值且与给定值完全一致:${a.blueprintMustCiteHint}。`:"",W>0?`当前输出仅 ${W} 字,距目标 ${b.targetWords} 字还缺 ${Math.max(0,b.targetWords-W)} 字,必须逐点展开到不少于 ${Math.floor(.9*b.targetWords)} 字。`:"总字数不少于目标字数。"].filter(Boolean).join("");try{let h=()=>D(a.template,L,s,a.missingFacts,a.promptTexts,a.projectContext,a.requirement,f?`${R}
|
|
115
99
|
|
|
116
|
-
${f}`:R,{forbidDrawingImages:a.forbidDrawingImages,compactProjectContext:a.compactProjectContext,scopedProjectContext:a.scopedProjectContext,chapterLevelContext:a.roleContext||"",minWords:b.targetWords,targetWords:b.targetWords,maxWords:Math.ceil(1.1*b.targetWords),maxTokens:Math.max(3200,Math.ceil(1.5*b.targetWords)),
|
|
100
|
+
${f}`:R,{forbidDrawingImages:a.forbidDrawingImages,compactProjectContext:a.compactProjectContext,scopedProjectContext:a.scopedProjectContext,chapterLevelContext:a.roleContext||"",minWords:b.targetWords,targetWords:b.targetWords,maxWords:Math.ceil(1.1*b.targetWords),maxTokens:Math.max(3200,Math.ceil(1.5*b.targetWords)),sharedFactLayerText:C,evidenceRankBoost:q,onlyRankBoosted:!0,skipT2Catalog:!0,evidenceFloorChars:1e3,evidenceCeilingChars:G,factCoverageContext:a.factCoverageContext||"",blueprintDataText:a.blueprintDataText,blueprintSliceText:a.blueprintSliceText,twoStep:!1,signal:a.signal,diagnostics:a.diagnostics}),l=a.diagnostics?await (0,k.X6)(a.diagnostics,`block-draft:${a.chapter.id}:${c}:a${d}`,h):await h();if(!l){console.error(`[gen][block-qc] 块写作返回空内容 attempt=${d}: ${b.title}(目标 ${b.targetWords} 字)`);continue}let n=l.replace(/^##\s+.+$/mu,"").trim(),o=(0,p.KJ)(i,n),r=/^###\s+\S+/mu.test(o)?o:`### ${b.title}
|
|
117
101
|
|
|
118
|
-
${o}`,t=[];if(v){let a=(0,p.I6)(r);a!==r&&(r=a);let b=(r.match(/^#{3,4}\s+(.+)$/gmu)||[]).map(a=>a.replace(/^#{3,4}\s+/u,""));t=
|
|
119
|
-
${s.map(a=>a.content).join("\n")}`,z=a.evidence.map(a=>a.content).join("\n"),A=(0,g.I)(r,y,z);A.mismatched.length>0&&a.diagnostics&&(a.diagnostics.llm.lastInfo=`数值核验:${b.title} 发现 ${A.mismatched.length} 处疑似错误数值(${A.mismatched.map(a=>`${a.found}→${a.expected}`).join("、")})`),t.length>0&&t.length<=2&&console.error(`[gen][block-qc] 骨架小缺口豁免(交修复链兑底 ${t.length} 个): ${b.title}: ${t.join("、")}`);let B=t.length<=2?[]:t,
|
|
102
|
+
${o}`,t=[];if(v){let a=(0,p.I6)(r);a!==r&&(r=a);let b=(r.match(/^#{3,4}\s+(.+)$/gmu)||[]).map(a=>a.replace(/^#{3,4}\s+/u,""));t=F.filter(a=>!b.some(b=>(0,j.Sw)(b).includes((0,j.Sw)(a))))}let x=(0,e.V7)(r);W=x;let y=`${C}
|
|
103
|
+
${s.map(a=>a.content).join("\n")}`,z=a.evidence.map(a=>a.content).join("\n"),A=(0,g.I)(r,y,z);A.mismatched.length>0&&a.diagnostics&&(a.diagnostics.llm.lastInfo=`数值核验:${b.title} 发现 ${A.mismatched.length} 处疑似错误数值(${A.mismatched.map(a=>`${a.found}→${a.expected}`).join("、")})`),t.length>0&&t.length<=2&&console.error(`[gen][block-qc] 骨架小缺口豁免(交修复链兑底 ${t.length} 个): ${b.title}: ${t.join("、")}`);let B=t.length<=2?[]:t,E=r.split("\n").map(a=>(0,j.Sw)(a)).filter(Boolean),H=[...i.filter(a=>{let b=(0,j.Sw)(a);return!!b&&!E.some(a=>a.includes(b))}),...B.map(a=>`工作包小节:${a}`)],I=(0,j.W6)(r),J=(0,j.wx)(r,b.title,i,[...m],[...b.subPoints.flatMap(a=>a.sources),...F]),K=0===d&&A.mismatched.length>0,M=v&&!w?(0,u.V0)(c):void 0,N=M?(0,u.v_)(r):void 0,O=0===d&&void 0!==M&&void 0!==N&&N!==M;if(x>=Math.floor(.9*b.targetWords)&&0===H.length&&0===I.length&&0===J.length&&!K&&!O)return r;if(S=H,T=I,U=J,X=(0,g.n8)(A),Y=void 0!==M&&N!==M?`【上一轮工序表达形式不符】本块指定的工序顺序表达形式为「${M}」,上一轮正文${N?`使用了「${N}」形式`:"未见明确的工序顺序表达"}。必须改用「${M}」形式重写工序顺序表达,内容与数值保持不变。`:"",0===H.length){let c=(0,j.dY)((0,j.wq)(r),b.title,i,[...b.subPoints.flatMap(a=>a.sources)]),d=(0,e.V7)(c);if(d>=Math.floor(.9*b.targetWords))return a.diagnostics&&(J.length>0||I.length>0)&&(a.diagnostics.llm.lastInfo=`块标题层已确定性修复:${b.title}(清单外 ${J.length} 个、重复 H4 ${I.length} 个;${x}→${d} 字)`),c}a.diagnostics&&(a.diagnostics.llm.lastError=`规划块质检未达标:${b.title}(${x} 字,缺 ${H.join("、")||"无"}${I.length?`,重复 H4 ${I.join("、")}`:""}${J.length?`,清单外 ${J.slice(0,5).join("、")}${J.length>5?" 等":""}`:""})`),console.error(`[gen][block-qc] 块质检不达标 attempt=${d}: ${b.title}(目标 ${b.targetWords} 字,实际 ${x} 字,缺 ${H.join("、")||"无"},重复 ${I.join("、")||"无"},清单外 ${J.join("、")||"无"},keySection=${v||"none"})`)}catch(b){a.diagnostics&&(a.diagnostics.llm.lastError=b instanceof Error?b.message:String(b))}}if(b.subPoints.length>=4||b.subPoints.length>=2&&b.targetWords>2400){let d=Math.ceil(b.subPoints.length/2),e=Math.max(800,Math.floor(b.targetWords/2)),f=[{...b,subPoints:b.subPoints.slice(0,d),targetWords:e},{...b,subPoints:b.subPoints.slice(d),targetWords:e}],g=await Promise.all(f.map(a=>H(a,c)));if(g.every(a=>!!a))return n(g[0],g[1],b.title);let h=async(b,c)=>{if(g[c])return g[c];let d=Math.max(600,Math.floor(b.targetWords/Math.max(1,b.subPoints.length))),e=Math.max(1,Math.max(1,Math.min(3,2,b.subPoints.length))),f=await Promise.all(b.subPoints.map(b=>V({template:a.template,chapter:a.chapter,sectionTitle:b.title,evidence:a.evidence,missingFacts:a.missingFacts,promptTexts:a.promptTexts,projectContext:a.projectContext,requirement:a.requirement,roleContext:a.roleContext||"",targetWords:d,forbidDrawingImages:a.forbidDrawingImages,factCoverageContext:a.factCoverageContext,compactProjectContext:a.compactProjectContext,scopedProjectContext:a.scopedProjectContext,blueprintDataText:a.blueprintDataText,blueprintSliceText:a.blueprintSliceText,signal:a.signal,diagnostics:a.diagnostics},e)));if(!f.every(Boolean))return;let h=f.map((a,c)=>{let d=(a||"").replace(/^###\s+.+$/mu,"").trim();return`#### ${b.subPoints[c].title}
|
|
120
104
|
|
|
121
105
|
${d}`});return`### ${b.title}
|
|
122
106
|
|
|
@@ -130,4 +114,4 @@ ${(a.sections||[]).join("\n")}
|
|
|
130
114
|
${a.content}`).join("\n\n"),f=a.filter(a=>/项目主要施工内容|主要施工内容/u.test(`${a.title} ${(a.sections||[]).join(" ")}`)),g=/施工组织设计|施工组织|计划工期|质量标准|项目经理|工程概况/u.test(d)&&/施工/u.test(d),h=(a,b)=>{let d=b.replace(/^####\s+(?:\d+(?:\.\d+)*\s+)?(?:项目主要施工\s*内容|主要施工\s*内容)\s*\n+/mu,""),f=(d.match(/^####\s+(?:\d+(?:\.\d+)*\s+)?[一二三四五六七八九十\d]*[、..]?\s*\S+/gmu)||[]).length||(d.match(/^[一二三四五六七八九十]+、\S+/gmu)||[]).length,g=d.split(/^####\s+/gmu).slice(1).map(a=>a.trim()).filter(Boolean),h=g.filter(a=>!(0,e.Jb)(a)),i=g.filter(a=>/资料内容事实|#{2,6}\s+|\*\*[^*]+\*\*|未尽事宜|专业施工内容统筹|招标范围还包含|具备有效的.*资质/u.test(a)),j=g.filter(a=>{if(!/施工方法[::]/u.test(a))return!1;let b=a.match(/施工方法[::]([\s\S]*?)(?=\n施工|$)/u)?.[1]||"";return b.length<30||(b.match(/工程|维修|改造|安装|设备/gu)||[]).length>=4&&!/\d|㎡|m2|m²|mm|厚|验收|检测|调试|试验|复试|记录|报告/u.test(b)}),k=g.filter(a=>{let b=a.match(/施工流程[::]([\s\S]*?)(?=\n施工方法|$)/u)?.[1]||"";return/未尽事宜|本项目为|总建筑面积|保留现状|专业施工内容统筹|招标文件列明|招标范围/u.test(b)}),l=g.map(a=>(a.split("\n")[0]||"").replace(/^\d+(?:\.\d+)*\s+/u,"").replace(/工程$/u,"").replace(/[、..]/gu,"").trim()),m=[...new Set(l.filter((a,b)=>a&&l.indexOf(a)!==b))];m.length>0&&c.push({level:"error",severity:"blocker",message:`${a} 主要施工内容存在 ${m.length} 组重复专业工程小节:${m.slice(0,5).join("、")}`,suggestion:"同一专业工程只保留一个小节,将重复小节的独有内容合并后删除冗余小节,避免专业工程重复铺陈。"}),f<5&&c.push({level:"error",severity:"blocker",message:`${a} 主要施工内容专业工程不足:当前 ${f} 个,要求不少于 5 个`,suggestion:"按资料识别专业工程/分部分项工程逐项展开,每项覆盖作业对象与工程量、工序顺序、施工方法三方面要素(融入连贯叙述,不得以结构标签充当小节标题或段落开头引导)。"}),h.length>0&&c.push({level:"error",severity:"blocker",message:`${a} 主要施工内容存在 ${h.length} 个专业工程内容要素不全(作业对象与工程量/工序顺序/施工方法至少缺一)`,suggestion:"每个专业工程需覆盖作业对象与工程量、工序安排、施工方法三方面要素,融入连贯段落叙述(禁止以“施工概况/施工流程/施工方法”等结构标签充当标题或段落开头引导)。"});let n=g.filter(a=>/按设计图纸执行|按设计文件执行|详见设计图纸|按.{0,10}设计总说明执行|详见图纸|以设计图纸为准|按设计确定/u.test(a));n.length>0&&c.push({level:"error",severity:"blocker",message:`${a} 主要施工内容存在 ${n.length} 个工作包正文含“按设计图纸执行”式概括话术`,suggestion:"工作包正文必须落到具体数值与参数:工程量、材料规格、设备型号等数量类数值优先取工程量清单数据,清单未覆盖的参数(标高、坡率、构造做法)取图纸具体数值;禁止“按设计图纸执行/详见设计图纸/按设计文件确定”式留白。"}),i.length>0&&c.push({level:"error",severity:"blocker",message:`${a} 主要施工内容存在脏事实或标题污染`,suggestion:"清理“资料内容事实”、嵌入的 ### 标题、粗体伪标题、未尽事宜、招标范围罗列等污染内容,只保留可交付正文。"}),j.length>0&&c.push({level:"error",severity:"blocker",message:`${a} 主要施工内容存在 ${j.length} 个专业工程施工方法过弱`,suggestion:"施工方法不能只是专业工程名称或专业范围罗列,必须写资料已确认的工程量、材料、检测、调试、验收或记录要求。"}),k.length>0&&c.push({level:"error",severity:"blocker",message:`${a} 主要施工内容存在 ${k.length} 个专业工程流程污染`,suggestion:"施工流程只能写工序链条,不能混入项目概况、总建筑面积、招标范围、未尽事宜等说明性事实。"}),(0,e.Z1)(b)||c.push({level:"error",severity:"blocker",message:`${a} 主要施工内容缺少工序顺序表达`,suggestion:"施工流程须有明确的工序顺序表达,形式按专业工程序号轮换使用(顺序词叙述(先测量放线,再基层处理,随后工序实施,然后检查验收,最后资料归档)、编号步骤、有序列表、箭头链),禁止相邻专业工程同一形式、禁止通篇同一形式。"});let o=(b.match(/\d+(?:\.\d+)?\s*(?:㎡|m²|mm|cm|m|MPa|kPa|%|日历天|层|台|套|个|项|批|次|小时|年)/giu)||[]).length,p=(b.match(/工程量|材料|设备|范围|流程|验收|检测|复试|调试|隐蔽|检验批|资料|记录|系统|部位|接口|规格|标准/gu)||[]).length;(o<2||p<12)&&c.push({level:"error",severity:"blocker",message:`${a} 主要施工内容事实细度不足:参数 ${o} 项、事实细节 ${p} 项`,suggestion:"主要施工内容必须落到资料已确认的范围、工程量/材料、流程、验收和记录要求;资料未明确的工具、型号、参数不得编造。"});let q=b.split(/\r?\n/u).filter(a=>/^\s*\|.+\|\s*$/u.test(a.trim())),r=b.split(/\r?\n/u).filter(a=>!/^\s*\|.+\|\s*$/u.test(a.trim())).join("").replace(/[\s#*_`>-]/gu,"").length;q.length>=3&&r<50&&c.push({level:"error",severity:"blocker",message:`${a} 主要施工内容不应使用 Markdown 表格替代专业工程正文`,suggestion:"主要施工内容应采用三级小节和段落式专业工程写法,不使用表格承载主体内容。"})};if(0===f.length&&g){let a=u(d);return a?(h("全文",a),c):[{level:"error",severity:"blocker",message:"施工组织设计缺少“项目主要施工内容”小节",suggestion:"必须生成“### 项目主要施工内容”,并在该小节内部使用“#### 专业工程名称”逐项展开。"}]}for(let a of f){let b=u(a.content)||u(d);if(!b){c.push({level:"error",severity:"blocker",message:`${a.title} 主要施工内容小节缺失或标题结构异常`,suggestion:"必须生成“### 项目主要施工内容”,并在该小节内部使用“#### 专业工程名称”逐项展开。"});continue}h(a.title,b)}return c}function w(a){let b=[];for(let c of a){let a=`${c.title} ${(c.sections||[]).join(" ")} ${c.content}`;for(let d of n)d.pattern.test(a)&&!c.content.includes(d.title)&&b.push({level:"info",message:`${c.title} 可补充隐藏高分模块:${d.title}`,suggestion:d.prompt})}return b}function x(a){let b=a.split("\n"),c=b.findIndex(a=>/^#{3,4}\s+(?:\d+(?:\.\d+)*\s+)?[^\n]*?(?:主要分部分项(?:工程)?施工方案|主要施工方法)[^\n]*$/u.test(a.trim()));if(c>=0){let a=b.length;for(let d=c+1;d<b.length;d+=1)if(/^#{2,3}\s+/u.test(b[d].trim())){a=d;break}return b.slice(c+1,a).join("\n")}let d=b.findIndex(a=>{let b=a.trim();return!(!/^##\s+/u.test(b)||/主要分部分项(?:工程)?施工方案/u.test(b))&&/^##\s+(?:\d+(?:\.\d+)*\s+)?[^\n]*?主要施工方法[^\n]*$/u.test(b)});if(d>=0){let a=b.length;for(let c=d+1;c<b.length;c+=1)if(/^##\s+/u.test(b[c].trim())){a=c;break}let c=b.slice(d+1,a).join("\n");return/^#{3,4}\s+/mu.test(c)?c:""}return/^#{3,4}\s+/mu.test(a)?a.trim():""}function y(a,b=""){let c=[],f=b||a.map(a=>`${a.title}
|
|
131
115
|
${(a.sections||[]).join("\n")}
|
|
132
116
|
${a.content}`).join("\n\n"),g=a.filter(a=>d.gG.test(`${a.title} ${(a.sections||[]).join(" ")}`)),h=(a,b)=>{let f=b.split(/^####\s+/gmu).slice(1).map(a=>a.trim()).filter(Boolean);0===f.length&&(f=[...b.matchAll(/^\*\*[^*]+\*\*[\s\S]*?(?=^\*\*[^*]+\*\*|\s*$)/gmu)].map(a=>a[0].trim()).filter(Boolean)),0===f.length&&(f=b.split(/^###\s+/gmu).slice(1).map(a=>a.trim()).filter(Boolean));let g=f.length,h=f.filter(a=>{let b=/(?:施工)?(?:概况|范围)[::]\s*\S|工程量|作业对象|部位/u.test(a),c=d.fM.test(a)||(0,e.Z1)(a),f=/(?:施工)?方法[::]\s*\S|工艺参数|验收标准|检测|试验|记录/u.test(a);return!b||!c||!f}),i=f.filter(a=>/资料内容事实|#{2,6}\s+|\*\*[^*]+\*\*|未尽事宜|按规范施工|结合实际执行|招标范围还包含/u.test(a)),j=f.filter(a=>{let b=a.match(/(?:\*\*)?施工方法(?:\*\*)?[::]([\s\S]*?)(?=\n施工|$)/u)?.[1]||"";if(b.trim()&&(0,e.Z1)(b))return!1;let c=a.match(/(?:\*\*)?(?:施工流程|工艺流程)(?:\*\*)?[::]([\s\S]*?)(?=\n(?:施工|工艺)|$)/u)?.[1]||"";return!(0,e.Z1)(c)}),k=/\d+(?:\.\d+)?\s*(?:㎡|m²|m2|m3|m³|mm|cm|m|MPa|kPa|%|日历天|天|小时|层|台|套|个|次|kN|t|N|颗|樘|扇)/giu,l=/(?:间距|偏差|坡度|养护|搭接|试验压力|含水率|饱满度|压实度|厚度|饱满)[^\n]{0,10}\d/giu,m=f.filter(a=>(a.match(k)||[]).length+(a.match(l)||[]).length<d.Ck.minParamsPerPackage);g<d.Ck.blockerMinPackages?c.push({level:"error",severity:"blocker",message:`${a} 分部分项工程施工方案分项不足:当前 ${g} 个,要求不少于 ${d.Ck.blockerMinPackages} 个`,suggestion:"按资料识别的专业工程/分部分项工程逐项展开,每项覆盖作业对象与工程量、工序顺序、施工方法三方面要素(融入连贯叙述,不得以结构标签充当标题或段落开头引导)。"}):g<d.Ck.minPackages&&c.push({level:"warning",message:`${a} 分部分项工程施工方案建议扩充:当前 ${g} 个分项方案,建议不少于 ${d.Ck.minPackages} 个`,suggestion:"优先覆盖资料明确的专业工程范围(土方、基础、主体、装饰、安装、室外等)。"}),h.length>0&&c.push({level:"error",severity:"blocker",message:`${a} 分部分项工程施工方案存在 ${h.length} 个分项方案内容要素不全(作业对象与工程量/工序顺序/施工方法至少缺一)`,suggestion:"每个分项方案需覆盖作业对象与工程量、工序安排、施工方法三方面要素,融入连贯段落叙述(禁止以“施工概况/工艺流程/施工方法”等结构标签充当标题或段落开头引导)。"});let n=f.filter(a=>/按设计图纸执行|按设计文件执行|详见设计图纸|按.{0,10}设计总说明执行|详见图纸|以设计图纸为准|按设计确定/u.test(a));n.length>0&&c.push({level:"error",severity:"blocker",message:`${a} 分部分项工程施工方案存在 ${n.length} 个分项方案正文含“按设计图纸执行”式概括话术`,suggestion:"分项方案正文必须落到具体数值与参数:工程量、材料规格、设备型号等数量类数值优先取工程量清单数据,清单未覆盖的参数取图纸具体数值;禁止“按设计图纸执行/详见设计图纸/按设计文件确定”式留白。"}),i.length>0&&c.push({level:"error",severity:"blocker",message:`${a} 分部分项工程施工方案存在脏事实或空话污染`,suggestion:"清理“资料内容事实”、嵌入的 ### 标题、粗体伪标题、未尽事宜、“按规范施工/结合实际执行”式空话,只保留可交付正文。"}),j.length>0&&c.push({level:"error",severity:"blocker",message:`${a} 分部分项工程施工方案存在 ${j.length} 个分项方案施工方法缺少工序顺序表达`,suggestion:"每个分项方案的施工方法段/施工流程段必须有明确的工序顺序表达,形式按分项序号轮换使用(顺序词叙述、编号步骤、有序列表、箭头链,如“先进行基层清理,再放线定位,随后分层摊铺,然后碾压,最后做压实度检测并验收”),禁止相邻分项同一形式,保证工序先后顺序清晰。"}),m.length>0&&c.push({level:"error",severity:"blocker",message:`${a} 分部分项工程施工方案存在 ${m.length} 个分项方案工艺参数不足(少于 ${d.Ck.minParamsPerPackage} 个)`,suggestion:"每个分项方案必须落位至少 4 个具体工艺参数(mm、MPa、间距、偏差、坡度、养护天数、试验压力、搭接长度等),参数来自绑定材料或行业通用规范值,不得编造。"});let o=f.filter(a=>a.replace(/\s/gu,"").length<d.Ck.minPackageChars);o.length>0&&c.push({level:"error",severity:"blocker",message:`${a} 分部分项工程施工方案存在 ${o.length} 个分项方案正文过短(少于 ${d.Ck.minPackageChars} 字)`,suggestion:"每个分项方案都要写足作业对象与工程量、工序安排、施工方法三方面要素,门窗维修、立面修补等小分项同样需要展开,不得一句话带过。"});let p=f.map(a=>a.replace(/\s/gu,"").length);p.length>1&&Math.min(...p)>0&&Math.min(...p)<Math.max(...p)*d.Ck.balanceRatio&&c.push({level:"warning",message:`${a} 分部分项工程施工方案分项深度失衡:最短分项不足最长分项三分之一`,suggestion:"参照最长分项(如拆除、结构加固)的展开深度,为偏短分项补足机具、材料规格、工艺参数与验收标准。"})};if(0===g.length){let a=x(f);return a&&h("全文",a),c}for(let a of g){let b=x(/^##\s+/mu.test(a.content)?a.content:`## ${a.title}
|
|
133
|
-
${a.content}`);if(!b){c.push({level:"error",severity:"blocker",message:`${a.title} 分部分项工程施工方案小节缺失或标题结构异常`,suggestion:"主要施工方法章下必须逐项展开分项工程方案:既可用「### 主要分部分项工程施工方案」包装后在内部使用「#### 分项工程方案」,也可章下 H3 小节直接承载各分项方案。"});continue}h(a.title,b)}return c}let z=/^####\s+(?:\d+(?:\.\d+)*\s+)?(?:施工概况|施工流程|施工方法|工艺流程)(?:[::]|\s*$)/u;function A(a){let b=[];return a.scope||b.push("作业对象与工程量"),a.process||b.push("工序顺序"),a.method||b.push("施工方法"),b.join("、")}function B(a){let b=a.split(/\r?\n/u),c=[],e=(a,c)=>{for(let d=a;d<b.length;d+=1){let a=/^(#{1,6})\s+/u.exec(b[d].trim());if(a&&a[1].length<=c)return d}return b.length};for(let a=0;a<b.length;a+=1){let f=/^##\s+(.+)$/u.exec(b[a].trim());if(f){let g=f[1].trim();if(!d.Yp.test(g)&&!d.gG.test(g))continue;let h=e(a+1,2),i=b.slice(a+1,h),j=i.map((a,b)=>({line:a.trim(),offset:b})).filter(a=>/^###\s+/u.test(a.line));if(0===j.length){c.push({title:g,bodyLines:i});continue}for(let a=0;a<j.length;a+=1){let b=j[a].offset,d=a+1<j.length?j[a+1].offset:i.length;c.push({title:j[a].line.replace(/^###\s+/u,""),bodyLines:i.slice(b+1,d)})}continue}let g=/^###\s+(.+)$/u.exec(b[a].trim());if(g){let f=g[1].trim();if(!d.Yp.test(f)&&!d.gG.test(f))continue;let h=e(a+1,3);c.push({title:f,bodyLines:b.slice(a+1,h)})}}return c}function C(a){let b=[],c=(a,c,d)=>{let e=d.includes("作业对象")?"作业对象与工程量(本项目部位、规模/工程量、系统边界,工程量取工程量清单汇总值)":"",f=d.includes("工序")?"工序顺序(先后清晰,至少 1 处不少于 4 个环节的工序顺序表达)":"",g=d.includes("施工方法")?"施工方法(工具机具、工艺参数、验收闭环)":"";b.push({level:"error",severity:"blocker",message:c?`「${a}」${c}专业工程块缺少三要素:${d}`:`「${a}」小节缺少三要素:${d}`,suggestion:`请在「${c||a}」补写缺失要素:${[e,f,g].filter(Boolean).join(";")}。要素融入连贯段落叙述,禁止以“施工概况/施工流程/施工方法”等结构标签充当标题或段落开头引导。`})};for(let b of B(a)){let a=b.bodyLines.map((a,b)=>({line:a.trim(),offset:b})).filter(a=>/^####\s+/u.test(a.line));if(0===a.length||a.every(a=>z.test(a.line))){let a=A((0,e.se)(b.bodyLines.join("\n")));a&&c(b.title,"",a);continue}for(let d=0;d<a.length;d+=1){let f=a[d].offset,g=d+1<a.length?a[d+1].offset:b.bodyLines.length;if(z.test(a[d].line))continue;let h=a[d].line.replace(/^####\s+(?:\d+(?:\.\d+)*\s+)?/u,"").replace(/[::]\s*$/u,""),i=b.bodyLines.slice(f,g).join("\n"),j=A((0,e.se)(i));j&&c(b.title,h,j)}}return b}function D(a){let b=[];for(let c of B(a)){let a=c.bodyLines.join("\n");if(!a.trim())continue;let d=a.split(/\r?\n/u).filter(a=>/^\s*\|.+\|\s*$/u.test(a.trim())),e=a.split(/\r?\n/u).filter(a=>!/^\s*\|.+\|\s*$/u.test(a.trim())).join("").replace(/[\s#*_`>-]/gu,"").length;d.length>=3&&e<50&&b.push({level:"error",severity:"blocker",message:`「${c.title}」小节不应使用 Markdown 表格承载专业工程正文`,suggestion:"主要施工内容/主要施工方法应采用三级小节与段落式专业工程写法:每个专业工程一个 #### 小节,覆盖作业对象与工程量、工序顺序、施工方法三方面要素;表格数据改写成连贯叙述。"});let f=[...new Set((a.match(/[^\n]{0,18}(?:分部小计|本页小计|按实|暂估|综合单价|规费|税金)[^\n]{0,18}/gu)||[]).map(a=>a.trim()))],g=[...new Set([...f,...new Set((a.match(/[^\n]{0,18}(?:措施项目费|措施项目[^\n]{0,8}(?:清单|计价|费率))[^\n]{0,18}/gu)||[]).map(a=>a.trim())),...new Set((a.match(/[^\n]{0,10}(?:合计|小计)[^\n]{0,16}(?:㎡|m²|m2|m³|m3|吨|t|项|处|座|樘)/gu)||[]).map(a=>a.trim()))])];g.length>0&&b.push({level:"error",severity:"blocker",message:`「${c.title}」小节正文含工程量清单内部口径词:${g.slice(0,6).join(";")}`,suggestion:"“分部小计/本页小计/合计/按实/暂估/综合单价/措施项目费/规费/税金”等清单计价表专用口径不得进入正式正文:工程量只写清单汇总的项目总量(数值与工程量清单一致),删除全部清单内部口径行。"})}return b}},43378:(a,b,c)=>{function d(a){return a.replace(/\s+/gu,"").toLowerCase()}function e(a){return[...new Set(a)]}function f(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},e=c(d(b)),f=[...c(d(a))];return 0===f.length?0:f.filter(a=>e.has(a)).length/f.length}function g(a){let b=new Map,c=(a,c)=>{let d=c.title.trim();if(!d)return;let e=b.get(a)||[];e.some(a=>a.title===d||a.title.includes(d)||d.includes(a.title))||(e.push({id:`planned-table-${a}-${e.length+1}`,title:d,chapterTitle:"",section:c.section||"",required:c.required,reason:c.reason,fields:c.fields.filter(Boolean).map(a=>({name:a})).slice(0,12)}),b.set(a,e))};for(let b of a.chapters)for(let d of a.plannedTables.get(b.id)||[])c(b.id,{title:d.title,fields:d.fields,required:!1,reason:"本章小节规划产出的表格需求(按章按节规划)。"});let g=[];for(let b of a.requiredTables||[]){let e,h=b.trim();if(!h)continue;let i=0;for(let b of a.chapters){let a=function(a,b){let c=d(a).replace(/表$/u,"");if(!c)return 0;let e=0;for(let a of[b.title,...b.sections||[]]){let b=d(a);if(b){if(b.includes(c)||c.includes(b)){e=Math.max(e,1);continue}e=Math.max(e,f(c,b))}}return e}(h,b);a>i&&(i=a,e=b)}if(!e||i<.3){g.push(h);continue}c(e.id,{title:h,fields:[],required:!0,reason:"用户提示词声明的必需表格。"})}return{chapters:a.chapters.map(a=>{let c=b.get(a.id);return c?.length?{...a,tableSections:e([...a.tableSections||[],...c.map(a=>a.title)]),tableRequirements:e([...a.tableRequirements||[],...c.filter(a=>a.required).map(a=>`${a.title}:用户提示词声明的必需表格,必须真实输出为 markdown 表格,表头与行数据必须与本章内容一致。`)]),tablePlans:c.map(b=>({...b,chapterTitle:a.title}))}:a}),unattachedRequiredTables:g}}function h(a,b){let c=a.tablePlans||[];if(0===c.length)return[];let e=d(b||"");return e?c.filter(a=>{let b=d(a.section||"");if(b&&(e.includes(b)||b.includes(e)))return!0;let c=d(a.title);if(c&&(e.includes(c)||c.includes(e)))return!0;let g=c.replace(/表$/u,"");return!!(g&&(e.includes(g)||g.includes(e))||g&&f(e,g)>=.6)}):c}function i(a,b){let c=a.tablePlans||[];return 0===c.length?[]:c.filter(c=>!b.some(b=>h(a,b).some(a=>a.id===c.id)))}function j(a,b){let c=[];for(let d of a){let a=d.tablePlans||[];if(0===a.length)continue;let e=b.find(a=>a.title===d.title)||b.find(a=>d.title.includes(a.title)||a.title.includes(d.title));if(!e)continue;let f=function(a){let b=0;for(let c of a.split(/\r?\n/u))/^\s*\|?\s*:?-{3,}:?/u.test(c)&&c.includes("|")&&(b+=1);return b}(e.content);f>=.6*a.length||a.length-f<2||c.push({chapterTitle:d.title,planned:a.length,actual:f,plans:a})}return c}c.d(b,{El:()=>h,Gl:()=>n,T4:()=>m,Xi:()=>j,lR:()=>g,nn:()=>i});let k=["【表格排版硬约束】每个 markdown 表格必须独立成行:表头行必须以“|”开头单独占一行,下一行紧跟“|---|”分隔行,数据行逐行以“|”开头;严禁把表头接在正文段落同一行(如“正文……。| 表头1 | 表头2 |”),输出表格前必须先换行。","每个表格前必须写 1~2 句引导叙述(说明该表的作用、数据口径与关键结论),表格不能替代所在小节全部正文;表格输出后还应围绕表中关键节点、责任分工与纠偏措施展开至少一段实施性正文。","只输出表格/清单本体和用户提示词明确要求的文字;不得输出系统来源说明、后台溯源列、固定表前后说明或占位话术。","【字段填写约束】项目特有数字、日期、工程量、规格必须来自项目资料或项目图谱,不得编造;人数、台班、进度时间等投标人计划编制类字段必须基于项目工程量、总工期与工序流水推导具体数值,不得留空、不得写“按需配置”“根据进度灵活调配”等空话。"];function l(a,b){return[`${b+1}. ${a.required?"必写":"应写"}:${a.title}`,a.fields.length?` - 表头必须为:${a.fields.map(a=>a.name).join(" | ")}(不得擅自改字段、删字段或增加后台溯源列)`:"",a.section?` - 归属小节:${a.section}`:"",` - 来源:${a.reason}`].filter(Boolean).join("\n")}function m(a){let b=a.tablePlans||[];return 0===b.length?"":["【本章表格/清单结构化生成要求(硬性验收项)】","以下表格来自用户提示词声明与本章小节规划,不得按数量机械增减;每个应输出的表格都必须真实输出为 markdown 表格;输出后按本清单逐表自检,缺失即视为正文不足。",...k,...b.map((a,b)=>l(a,b))].filter(Boolean).join("\n")}function n(a,b){return a.length?[`【本节“${b}”必须输出的表格(硬性验收项)】`,"以下表格归属于本节,必须真实输出为 markdown 表格(紧跟相关三级小节);输出后逐表自检,缺失即视为正文不足。",...k,...a.map((a,b)=>l(a,b))].filter(Boolean).join("\n"):""}},73186:(a,b,c)=>{c.d(b,{Su:()=>i,U2:()=>k,Zq:()=>f,am:()=>j});var d=c(76760);function e(a){return d.resolve(a).replace(/\\/gu,"/").toLowerCase()}function f(a,b=[]){return{projectId:a,allowedFilePaths:[...new Set(b.filter(Boolean).map(e))]}}function g(a){return!!a?.allowedFilePaths.length}function h(a,b){if(!g(b))return!0;if(!a)return!1;let c=e(a);return b.allowedFilePaths.includes(c)}function i(a,b){return a.filter(a=>h(a.filePath,b))}function j(a,b){return a.filter(a=>h(a.sourceFile,b))}function k(a,b,c){if(!g(b))return;let d=a.filter(a=>!h(a.filePath,b));if(d.length>0){let a=d.slice(0,5).map(a=>a.filePath).join(";");throw Error(`EVIDENCE_SCOPE_VIOLATION:${c}:${a}`)}}},73859:(a,b,c)=>{c.d(b,{$i:()=>f,E1:()=>j,d2:()=>i,oC:()=>g,p4:()=>d,rF:()=>h});let d={id:"default_general_document",name:"通用文档",factFields:[{id:"document_identity",name:"对象名称",aliases:["项目名称","工程名称","文档名称","任务名称","招标项目名称","建设项目名称"],category:"identity",cardinality:"single",derivationPolicy:"source_only",usagePolicy:"must_use",confidencePolicy:{minForGeneration:.75,minForValidation:.85,allowPathOnly:!1},conflictPolicy:"strict"},{id:"schedule_requirement",name:"周期要求",aliases:["计划工期","工期","周期要求","进度节点要求","开工日期","竣工日期"],category:"schedule",cardinality:"single",derivationPolicy:"source_only",usagePolicy:"must_use",confidencePolicy:{minForGeneration:.7,minForValidation:.8,allowPathOnly:!1},conflictPolicy:"strict"},{id:"quality_requirement",name:"质量要求",aliases:["质量要求","质量标准","验收要求","评价标准"],category:"quality",cardinality:"multiple",derivationPolicy:"source_only",usagePolicy:"use_if_relevant",confidencePolicy:{minForGeneration:.65,minForValidation:.75,allowPathOnly:!1},conflictPolicy:"allow_multiple"},{id:"safety_requirement",name:"安全合规要求",aliases:["安全要求","安全合规要求","风险控制要求","合规要求"],category:"safety",cardinality:"multiple",derivationPolicy:"source_only",usagePolicy:"use_if_relevant",confidencePolicy:{minForGeneration:.65,minForValidation:.75,allowPathOnly:!1},conflictPolicy:"allow_multiple"},{id:"technical_parameter",name:"技术参数",aliases:["技术参数","参数规格范围","规格","型号","尺寸","标准编号","材料设备"],category:"technical",cardinality:"multiple",derivationPolicy:"source_only",usagePolicy:"must_use",confidencePolicy:{minForGeneration:.7,minForValidation:.8,allowPathOnly:!1},conflictPolicy:"allow_multiple"},{id:"resource_plan",name:"资源配置",aliases:["劳动力","机械","检测设备","应急物资","资源配置","人员配置"],category:"resource",cardinality:"multiple",derivationPolicy:"plan_inferable",usagePolicy:"use_if_relevant",confidencePolicy:{minForGeneration:.45,minForValidation:.55,allowPathOnly:!1},conflictPolicy:"allow_multiple"},{id:"commercial_data",name:"商务数据",aliases:["报价","单价","合价","综合单价","预留金","税率","金额","利润"],category:"commercial",cardinality:"multiple",derivationPolicy:"forbidden",usagePolicy:"do_not_use",confidencePolicy:{minForGeneration:1,minForValidation:1,allowPathOnly:!1},conflictPolicy:"ignore"},{id:"rule_requirement",name:"规则要求",aliases:["规则要求","变更说明","实施范围","对象范围","结构化数据范围"],category:"compliance",cardinality:"multiple",derivationPolicy:"source_only",usagePolicy:"use_if_relevant",confidencePolicy:{minForGeneration:.6,minForValidation:.7,allowPathOnly:!1},conflictPolicy:"allow_multiple"}],forbiddenValuePatterns:[/投标报价|报价明细|单价|合价|综合单价|预留金|暂列金额|税率|增值税|利润|结算/u],diagnosticValuePatterns:[/OCR|识别错误|乱码|无法确认|疑似|不确定|绑定片段|兜底|知识库|提示词|后台|文件路径|PDF|DWG|Excel/u,/^#+\s*/u,/^见(?:招标|投标人|前附|补疑|图纸|清单|文件|资料|公告|须知)/u],lowConfidenceValuePatterns:[/无法确认|疑似|不确定|需复核|文字模糊|语义断裂|识别错误|乱码/u]},e={...d,id:"construction_organization_design",name:"施工组织设计"};function f(a,b=""){let c=`${a?.id||""} ${a?.name||""} ${a?.category||""} ${a?.description||""} ${a?.outputTitle||""} ${b}`;return/施工组织设计|施工方案|危大工程|人、材、机|安全文明施工/u.test(c)?e:d}function g(a,b){if(b)return a.factFields.find(a=>a.name===b||a.aliases.some(a=>b.includes(a)||a.includes(b)))}function h(a,b){return a.forbiddenValuePatterns.some(a=>a.test(b))}function i(a,b){return a.diagnosticValuePatterns.some(a=>a.test(b))}function j(a,b){return a.lowConfidenceValuePatterns.some(a=>a.test(b))}}};
|
|
117
|
+
${a.content}`);if(!b){c.push({level:"error",severity:"blocker",message:`${a.title} 分部分项工程施工方案小节缺失或标题结构异常`,suggestion:"主要施工方法章下必须逐项展开分项工程方案:既可用「### 主要分部分项工程施工方案」包装后在内部使用「#### 分项工程方案」,也可章下 H3 小节直接承载各分项方案。"});continue}h(a.title,b)}return c}let z=/^####\s+(?:\d+(?:\.\d+)*\s+)?(?:施工概况|施工流程|施工方法|工艺流程)(?:[::]|\s*$)/u;function A(a){let b=[];return a.scope||b.push("作业对象与工程量"),a.process||b.push("工序顺序"),a.method||b.push("施工方法"),b.join("、")}function B(a){let b=a.split(/\r?\n/u),c=[],e=(a,c)=>{for(let d=a;d<b.length;d+=1){let a=/^(#{1,6})\s+/u.exec(b[d].trim());if(a&&a[1].length<=c)return d}return b.length};for(let a=0;a<b.length;a+=1){let f=/^##\s+(.+)$/u.exec(b[a].trim());if(f){let g=f[1].trim();if(!d.Yp.test(g)&&!d.gG.test(g))continue;let h=e(a+1,2),i=b.slice(a+1,h),j=i.map((a,b)=>({line:a.trim(),offset:b})).filter(a=>/^###\s+/u.test(a.line));if(0===j.length){c.push({title:g,bodyLines:i});continue}for(let a=0;a<j.length;a+=1){let b=j[a].offset,d=a+1<j.length?j[a+1].offset:i.length;c.push({title:j[a].line.replace(/^###\s+/u,""),bodyLines:i.slice(b+1,d)})}continue}let g=/^###\s+(.+)$/u.exec(b[a].trim());if(g){let f=g[1].trim();if(!d.Yp.test(f)&&!d.gG.test(f))continue;let h=e(a+1,3);c.push({title:f,bodyLines:b.slice(a+1,h)})}}return c}function C(a){let b=[],c=(a,c,d)=>{let e=d.includes("作业对象")?"作业对象与工程量(本项目部位、规模/工程量、系统边界,工程量取工程量清单汇总值)":"",f=d.includes("工序")?"工序顺序(先后清晰,至少 1 处不少于 4 个环节的工序顺序表达)":"",g=d.includes("施工方法")?"施工方法(工具机具、工艺参数、验收闭环)":"";b.push({level:"error",severity:"blocker",message:c?`「${a}」${c}专业工程块缺少三要素:${d}`:`「${a}」小节缺少三要素:${d}`,suggestion:`请在「${c||a}」补写缺失要素:${[e,f,g].filter(Boolean).join(";")}。要素融入连贯段落叙述,禁止以“施工概况/施工流程/施工方法”等结构标签充当标题或段落开头引导。`})};for(let b of B(a)){let a=b.bodyLines.map((a,b)=>({line:a.trim(),offset:b})).filter(a=>/^####\s+/u.test(a.line));if(0===a.length||a.every(a=>z.test(a.line))){let a=A((0,e.se)(b.bodyLines.join("\n")));a&&c(b.title,"",a);continue}for(let d=0;d<a.length;d+=1){let f=a[d].offset,g=d+1<a.length?a[d+1].offset:b.bodyLines.length;if(z.test(a[d].line))continue;let h=a[d].line.replace(/^####\s+(?:\d+(?:\.\d+)*\s+)?/u,"").replace(/[::]\s*$/u,""),i=b.bodyLines.slice(f,g).join("\n"),j=A((0,e.se)(i));j&&c(b.title,h,j)}}return b}function D(a){let b=[];for(let c of B(a)){let a=c.bodyLines.join("\n");if(!a.trim())continue;let d=a.split(/\r?\n/u).filter(a=>/^\s*\|.+\|\s*$/u.test(a.trim())),e=a.split(/\r?\n/u).filter(a=>!/^\s*\|.+\|\s*$/u.test(a.trim())).join("").replace(/[\s#*_`>-]/gu,"").length;d.length>=3&&e<50&&b.push({level:"error",severity:"blocker",message:`「${c.title}」小节不应使用 Markdown 表格承载专业工程正文`,suggestion:"主要施工内容/主要施工方法应采用三级小节与段落式专业工程写法:每个专业工程一个 #### 小节,覆盖作业对象与工程量、工序顺序、施工方法三方面要素;表格数据改写成连贯叙述。"});let f=[...new Set((a.match(/[^\n]{0,18}(?:分部小计|本页小计|按实|暂估|综合单价|规费|税金)[^\n]{0,18}/gu)||[]).map(a=>a.trim()))],g=[...new Set([...f,...new Set((a.match(/[^\n]{0,18}(?:措施项目费|措施项目[^\n]{0,8}(?:清单|计价|费率))[^\n]{0,18}/gu)||[]).map(a=>a.trim())),...new Set((a.match(/[^\n]{0,10}(?:合计|小计)[^\n]{0,16}(?:㎡|m²|m2|m³|m3|吨|t|项|处|座|樘)/gu)||[]).map(a=>a.trim()))])];g.length>0&&b.push({level:"error",severity:"blocker",message:`「${c.title}」小节正文含工程量清单内部口径词:${g.slice(0,6).join(";")}`,suggestion:"“分部小计/本页小计/合计/按实/暂估/综合单价/措施项目费/规费/税金”等清单计价表专用口径不得进入正式正文:工程量只写清单汇总的项目总量(数值与工程量清单一致),删除全部清单内部口径行。"})}return b}},43378:(a,b,c)=>{function d(a){return a.replace(/\s+/gu,"").toLowerCase()}function e(a){return[...new Set(a)]}function f(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},e=c(d(b)),f=[...c(d(a))];return 0===f.length?0:f.filter(a=>e.has(a)).length/f.length}function g(a){let b=new Map,c=(a,c)=>{let d=c.title.trim();if(!d)return;let e=b.get(a)||[];e.some(a=>a.title===d||a.title.includes(d)||d.includes(a.title))||(e.push({id:`planned-table-${a}-${e.length+1}`,title:d,chapterTitle:"",section:c.section||"",required:c.required,reason:c.reason,fields:c.fields.filter(Boolean).map(a=>({name:a})).slice(0,12)}),b.set(a,e))};for(let b of a.chapters)for(let d of a.plannedTables.get(b.id)||[])c(b.id,{title:d.title,fields:d.fields,required:!1,reason:"本章小节规划产出的表格需求(按章按节规划)。"});let g=[];for(let b of a.requiredTables||[]){let e,h=b.trim();if(!h)continue;let i=0;for(let b of a.chapters){let a=function(a,b){let c=d(a).replace(/表$/u,"");if(!c)return 0;let e=0;for(let a of[b.title,...b.sections||[]]){let b=d(a);if(b){if(b.includes(c)||c.includes(b)){e=Math.max(e,1);continue}e=Math.max(e,f(c,b))}}return e}(h,b);a>i&&(i=a,e=b)}if(!e||i<.3){g.push(h);continue}c(e.id,{title:h,fields:[],required:!0,reason:"用户提示词声明的必需表格。"})}return{chapters:a.chapters.map(a=>{let c=b.get(a.id);return c?.length?{...a,tableSections:e([...a.tableSections||[],...c.map(a=>a.title)]),tableRequirements:e([...a.tableRequirements||[],...c.filter(a=>a.required).map(a=>`${a.title}:用户提示词声明的必需表格,必须真实输出为 markdown 表格,表头与行数据必须与本章内容一致。`)]),tablePlans:c.map(b=>({...b,chapterTitle:a.title}))}:a}),unattachedRequiredTables:g}}function h(a,b){let c=a.tablePlans||[];return 0===c.length?[]:c.filter(c=>!b.some(b=>(function(a,b){let c=a.tablePlans||[];if(0===c.length)return[];let e=d(b||"");return e?c.filter(a=>{let b=d(a.section||"");if(b&&(e.includes(b)||b.includes(e)))return!0;let c=d(a.title);if(c&&(e.includes(c)||c.includes(e)))return!0;let g=c.replace(/表$/u,"");return!!(g&&(e.includes(g)||g.includes(e))||g&&f(e,g)>=.6)}):c})(a,b).some(a=>a.id===c.id)))}function i(a,b){let c=[];for(let d of a){let a=d.tablePlans||[];if(0===a.length)continue;let e=b.find(a=>a.title===d.title)||b.find(a=>d.title.includes(a.title)||a.title.includes(d.title));if(!e)continue;let f=function(a){let b=0;for(let c of a.split(/\r?\n/u))/^\s*\|?\s*:?-{3,}:?/u.test(c)&&c.includes("|")&&(b+=1);return b}(e.content);f>=.6*a.length||a.length-f<2||c.push({chapterTitle:d.title,planned:a.length,actual:f,plans:a})}return c}c.d(b,{T4:()=>k,Xi:()=>i,lR:()=>g,nn:()=>h});let j=["【表格排版硬约束】每个 markdown 表格必须独立成行:表头行必须以“|”开头单独占一行,下一行紧跟“|---|”分隔行,数据行逐行以“|”开头;严禁把表头接在正文段落同一行(如“正文……。| 表头1 | 表头2 |”),输出表格前必须先换行。","每个表格前必须写 1~2 句引导叙述(说明该表的作用、数据口径与关键结论),表格不能替代所在小节全部正文;表格输出后还应围绕表中关键节点、责任分工与纠偏措施展开至少一段实施性正文。","只输出表格/清单本体和用户提示词明确要求的文字;不得输出系统来源说明、后台溯源列、固定表前后说明或占位话术。","【字段填写约束】项目特有数字、日期、工程量、规格必须来自项目资料或项目图谱,不得编造;人数、台班、进度时间等投标人计划编制类字段必须基于项目工程量、总工期与工序流水推导具体数值,不得留空、不得写“按需配置”“根据进度灵活调配”等空话。"];function k(a){let b=a.tablePlans||[];return 0===b.length?"":["【本章表格/清单结构化生成要求(硬性验收项)】","以下表格来自用户提示词声明与本章小节规划,不得按数量机械增减;每个应输出的表格都必须真实输出为 markdown 表格;输出后按本清单逐表自检,缺失即视为正文不足。",...j,...b.map((a,b)=>[`${b+1}. ${a.required?"必写":"应写"}:${a.title}`,a.fields.length?` - 表头必须为:${a.fields.map(a=>a.name).join(" | ")}(不得擅自改字段、删字段或增加后台溯源列)`:"",a.section?` - 归属小节:${a.section}`:"",` - 来源:${a.reason}`].filter(Boolean).join("\n"))].filter(Boolean).join("\n")}},73186:(a,b,c)=>{c.d(b,{Su:()=>i,U2:()=>k,Zq:()=>f,am:()=>j});var d=c(76760);function e(a){return d.resolve(a).replace(/\\/gu,"/").toLowerCase()}function f(a,b=[]){return{projectId:a,allowedFilePaths:[...new Set(b.filter(Boolean).map(e))]}}function g(a){return!!a?.allowedFilePaths.length}function h(a,b){if(!g(b))return!0;if(!a)return!1;let c=e(a);return b.allowedFilePaths.includes(c)}function i(a,b){return a.filter(a=>h(a.filePath,b))}function j(a,b){return a.filter(a=>h(a.sourceFile,b))}function k(a,b,c){if(!g(b))return;let d=a.filter(a=>!h(a.filePath,b));if(d.length>0){let a=d.slice(0,5).map(a=>a.filePath).join(";");throw Error(`EVIDENCE_SCOPE_VIOLATION:${c}:${a}`)}}},73859:(a,b,c)=>{c.d(b,{$i:()=>f,E1:()=>j,d2:()=>i,oC:()=>g,p4:()=>d,rF:()=>h});let d={id:"default_general_document",name:"通用文档",factFields:[{id:"document_identity",name:"对象名称",aliases:["项目名称","工程名称","文档名称","任务名称","招标项目名称","建设项目名称"],category:"identity",cardinality:"single",derivationPolicy:"source_only",usagePolicy:"must_use",confidencePolicy:{minForGeneration:.75,minForValidation:.85,allowPathOnly:!1},conflictPolicy:"strict"},{id:"schedule_requirement",name:"周期要求",aliases:["计划工期","工期","周期要求","进度节点要求","开工日期","竣工日期"],category:"schedule",cardinality:"single",derivationPolicy:"source_only",usagePolicy:"must_use",confidencePolicy:{minForGeneration:.7,minForValidation:.8,allowPathOnly:!1},conflictPolicy:"strict"},{id:"quality_requirement",name:"质量要求",aliases:["质量要求","质量标准","验收要求","评价标准"],category:"quality",cardinality:"multiple",derivationPolicy:"source_only",usagePolicy:"use_if_relevant",confidencePolicy:{minForGeneration:.65,minForValidation:.75,allowPathOnly:!1},conflictPolicy:"allow_multiple"},{id:"safety_requirement",name:"安全合规要求",aliases:["安全要求","安全合规要求","风险控制要求","合规要求"],category:"safety",cardinality:"multiple",derivationPolicy:"source_only",usagePolicy:"use_if_relevant",confidencePolicy:{minForGeneration:.65,minForValidation:.75,allowPathOnly:!1},conflictPolicy:"allow_multiple"},{id:"technical_parameter",name:"技术参数",aliases:["技术参数","参数规格范围","规格","型号","尺寸","标准编号","材料设备"],category:"technical",cardinality:"multiple",derivationPolicy:"source_only",usagePolicy:"must_use",confidencePolicy:{minForGeneration:.7,minForValidation:.8,allowPathOnly:!1},conflictPolicy:"allow_multiple"},{id:"resource_plan",name:"资源配置",aliases:["劳动力","机械","检测设备","应急物资","资源配置","人员配置"],category:"resource",cardinality:"multiple",derivationPolicy:"plan_inferable",usagePolicy:"use_if_relevant",confidencePolicy:{minForGeneration:.45,minForValidation:.55,allowPathOnly:!1},conflictPolicy:"allow_multiple"},{id:"commercial_data",name:"商务数据",aliases:["报价","单价","合价","综合单价","预留金","税率","金额","利润"],category:"commercial",cardinality:"multiple",derivationPolicy:"forbidden",usagePolicy:"do_not_use",confidencePolicy:{minForGeneration:1,minForValidation:1,allowPathOnly:!1},conflictPolicy:"ignore"},{id:"rule_requirement",name:"规则要求",aliases:["规则要求","变更说明","实施范围","对象范围","结构化数据范围"],category:"compliance",cardinality:"multiple",derivationPolicy:"source_only",usagePolicy:"use_if_relevant",confidencePolicy:{minForGeneration:.6,minForValidation:.7,allowPathOnly:!1},conflictPolicy:"allow_multiple"}],forbiddenValuePatterns:[/投标报价|报价明细|单价|合价|综合单价|预留金|暂列金额|税率|增值税|利润|结算/u],diagnosticValuePatterns:[/OCR|识别错误|乱码|无法确认|疑似|不确定|绑定片段|兜底|知识库|提示词|后台|文件路径|PDF|DWG|Excel/u,/^#+\s*/u,/^见(?:招标|投标人|前附|补疑|图纸|清单|文件|资料|公告|须知)/u],lowConfidenceValuePatterns:[/无法确认|疑似|不确定|需复核|文字模糊|语义断裂|识别错误|乱码/u]},e={...d,id:"construction_organization_design",name:"施工组织设计"};function f(a,b=""){let c=`${a?.id||""} ${a?.name||""} ${a?.category||""} ${a?.description||""} ${a?.outputTitle||""} ${b}`;return/施工组织设计|施工方案|危大工程|人、材、机|安全文明施工/u.test(c)?e:d}function g(a,b){if(b)return a.factFields.find(a=>a.name===b||a.aliases.some(a=>b.includes(a)||a.includes(b)))}function h(a,b){return a.forbiddenValuePatterns.some(a=>a.test(b))}function i(a,b){return a.diagnosticValuePatterns.some(a=>a.test(b))}function j(a,b){return a.lowConfidenceValuePatterns.some(a=>a.test(b))}}};
|