@customize-agent/server 4.12.18 → 4.12.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/BUILD_ID +1 -1
- package/.next/build-manifest.json +2 -2
- package/.next/prerender-manifest.json +3 -3
- package/.next/server/chunks/208.js +1 -1
- package/.next/server/chunks/2886.js +57 -57
- package/.next/server/chunks/6482.js +3 -3
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/pages/asset-library.html +1 -1
- package/.next/server/pages/document-roles.html +1 -1
- package/.next/server/pages/documents.html +1 -1
- package/.next/server/pages/guide.html +1 -1
- package/.next/server/pages/index.html +1 -1
- package/.next/server/pages/knowledge/file-detail.html +1 -1
- package/.next/server/pages/knowledge/files.html +1 -1
- package/.next/server/pages/knowledge/manage.html +1 -1
- package/.next/server/pages/knowledge.html +1 -1
- package/.next/server/pages/models.html +1 -1
- package/.next/server/pages/overview.html +1 -1
- package/.next/server/pages/prompt.html +1 -1
- package/.next/server/pages/settings.html +1 -1
- package/.next/server/pages/system/logs.html +1 -1
- package/.next/server/pages/template-references.html +1 -1
- package/.next/server/pages-manifest.json +37 -37
- package/package.json +1 -1
- /package/.next/static/{MbBIbm8-I-QxwSUUs3yzl → 0Cdg2rYTCeaGhXnSoq_VE}/_buildManifest.js +0 -0
- /package/.next/static/{MbBIbm8-I-QxwSUUs3yzl → 0Cdg2rYTCeaGhXnSoq_VE}/_ssgManifest.js +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";exports.id=6482,exports.ids=[6482],exports.modules={1358:(a,b,c)=>{c.d(b,{JV:()=>k,O7:()=>h,QP:()=>l,SR:()=>g,c$:()=>j,e$:()=>i,rj:()=>f});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]||"",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}},11248:(a,b,c)=>{c.d(b,{K3:()=>f,zn:()=>g});let d=/[A-Za-z0-9%+-.,]/gu;function e(a){let b=a.charCodeAt(0);return b>=65281&&b<=65374?String.fromCharCode(b-65248):a}function f(a){return a.replace(d,e).replace(/\s+/gu,"").replace(/[×X**]/gu,"x").replace(/[%]/gu,"%").replace(/‰/gu,"permille").replace(/平方米|平方|平米|m²|㎡/giu,"m2").replace(/公顷|hm²/giu,"hm2").replace(/立方米|立方|m³/giu,"m3").replace(/升/gu,"l").replace(/毫升/gu,"ml").replace(/千米|公里/gu,"km").replace(/毫米/gu,"mm").replace(/厘米/gu,"cm").replace(/米/gu,"m").replace(/千克|公斤/gu,"kg").replace(/克/gu,"g").replace(/吨/gu,"t").replace(/人民币万元|万元人民币/gu,"万元").replace(/人民币元|元人民币|¥/gu,"元").replace(/日历天|自然日/gu,"天").replace(/工作日/gu,"工作天").replace(/个月/gu,"月").replace(/小时/gu,"h").replace(/分钟/gu,"min").replace(/兆帕/gu,"mpa").replace(/千帕/gu,"kpa").replace(/千牛/gu,"kn").replace(/牛/gu,"n").replace(/千瓦/gu,"kw").replace(/兆瓦/gu,"mw").replace(/瓦/gu,"w").replace(/千伏/gu,"kv").replace(/伏/gu,"v").replace(/毫安/gu,"ma").replace(/安培|安/gu,"a").replace(/赫兹/gu,"hz").replace(/摄氏度/gu,"℃").replace(/百分之\s*(\d+(?:\.\d+)?)/gu,"$1%").replace(/千分之\s*(\d+(?:\.\d+)?)/gu,"$1permille").replace(/直径\s*(\d+(?:\.\d+)?)/gu,"φ$1").replace(/[Φφ]\s*(\d+(?:\.\d+)?)(?:mm)?/giu,"φ$1").replace(/DN\s*(\d+)/giu,"dn$1").replace(/D\s*(\d+)(?=\b|[^a-z0-9])/giu,"d$1").replace(/\b(KN|MPA|KPA|KW|MW|KV|HZ|DN)\b/giu,a=>a.toLowerCase()).replace(/[,,、。;;::||()()【】\]《》<>"“”'‘’[]/gu,"").toLowerCase()}function g(a){let b=f(a),c=new Set;for(let a of b.matchAll(/\d+(?:\.\d+)?(?:m2|hm2|亩|m3|l|ml|mm|cm|km|m|kg|g|t|万元|亿元|元|天|工作天|月|年|h|min|%|permille|mpa|kpa|pa|kn|n|kn\/m2|kn\/m|kw|mw|w|kv|v|ma|a|hz|℃|台|套|件|个|根|只|组|项|处|座|栋|层|间|批|次|人|工日|人日)?|dn\d+|φ\d+(?:\.\d+)?|d\d+|c\d{2,}|hrb\d+|q\d{3}[a-z]?|m\d+|\d+(?:\.\d+)?x\d+(?:\.\d+)?(?:x\d+(?:\.\d+)?)?|[+-]?\d+\.\d{3}|\d+[:/]\d+/giu))c.add(a[0]);return[...c]}},23760:(a,b,c)=>{c.d(b,{AC:()=>r,Ai:()=>y,BV:()=>C,Ef:()=>x,Ff:()=>p,Fv:()=>K,K1:()=>I,KI:()=>at,M$:()=>aS,N1:()=>aK,NS:()=>L,S2:()=>aL,SN:()=>M,ST:()=>ax,Ty:()=>D,Yb:()=>au,Z2:()=>aE,Zu:()=>av,bM:()=>aN,f8:()=>G,gN:()=>E,hr:()=>aq,i0:()=>aF,iC:()=>A,ji:()=>aG,k0:()=>J,kQ:()=>aR,kw:()=>u,mR:()=>aP,qK:()=>R,qm:()=>ai,t4:()=>aQ,vY:()=>aD,wl:()=>w,xX:()=>aw,yd:()=>aM,yw:()=>Q});var d=c(8753),e=c(74329),f=c(37047),g=c(78217),h=c(11248),i=c(70208),j=c(61373),k=c(91977),l=c(23500),m=c(22157),n=c(52922),o=c(41991);function p(a){let b={blocking:0,important:0,minor:0};for(let c of a)b[function(a){let b="string"==typeof a?a:a.message;if("error"===("string"==typeof a?void 0:a.level))return"blocking";for(let a of e.gr)if(a.pattern.test(b))return a.severity;return"minor"}(c)]+=1;return b}function q(a,b){let c=a.replace(/[\][()`*_>#|{},。、“”‘’:;!?,.!?:;-]+/gu," ").replace(e.ug," ").trim();if(c.length<120)return;let d=c.match(/[A-Za-z][A-Za-z-]{2,}|[\p{Script=Han}]{2,}/gu)||[];if(d.length<30)return;let f=1,g=new Map;for(let a=0;a<d.length;a+=1){let c=d[a].toLowerCase();if(g.set(c,(g.get(c)||0)+1),a>0&&c===d[a-1].toLowerCase()?f+=1:f=1,f>=12)return{level:"error",message:`${b} 存在重复 token 退化输出`,suggestion:"请重新生成该小节,禁止保留连续重复的英文单词或无意义片段。"}}let h=[...g.entries()].sort((a,b)=>b[1]-a[1])[0];if(h&&h[1]>=25&&h[1]/d.length>=.42)return{level:"error",message:`${b} 存在重复 token 退化输出`,suggestion:`检测到“${h[0]}”异常高频重复,请重新生成该小节。`}}function r(a,b=[]){let c=[],d=q(a,"全文");for(let a of(d&&c.push(d),b)){let b=q(a.content,`章节“${a.title}”`);for(let d of(b&&c.push(b),a.sections||[])){let b=d.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&"),e=a.content.match(RegExp(`^#{3,4}\\s+(?:\\d+(?:\\.\\d+)*\\s+)?${b}\\s*\\n([\\s\\S]*?)(?=^#{3,4}\\s+|^##\\s+|$)`,"mu"));if(!e)continue;let f=q(e[1],`小节“${d}”`);f&&c.push(f)}}return c}function s(a){return a.severity&&a.repairability?a:/小节只有标题|空小节|小节内容补写未完成/u.test(a.message)?{...a,severity:"blocker",repairability:"local_deterministic",category:"structure",owner:"system"}:/不得出现|提示词要求|疑似提示词指令标题|项目污染|生成未完成/u.test(a.message)?{...a,severity:"blocker",repairability:"llm_repairable",category:"structure",owner:"system"}:/事实一致性冲突|projectFactOnly|核心事实/u.test(a.message)?{...a,severity:"error"===a.level?"blocker":"warning",repairability:"manual_review",category:"fact_consistency",owner:"user"}:/证据使用覆盖率偏低|BOQ|落位|高分模块|专业链|闭环/u.test(a.message)?"error"===a.level?{...a,severity:"blocker",repairability:"llm_repairable",category:"evidence_coverage",owner:"llm"}:{...a,severity:"warning",repairability:"not_repair_needed",category:"evidence_coverage",owner:"system"}:"error"===a.level?{...a,severity:"blocker",repairability:"llm_repairable",category:"structure",owner:"system"}:"warning"===a.level?{...a,severity:"warning",repairability:"not_repair_needed",category:"style",owner:"system"}:{...a,severity:"suggestion",repairability:"not_repair_needed",category:"style",owner:"system"}}function t(a){let b=s(a);return"blocker"===b.severity&&(!!("qingtian_review"===b.category||"error"===b.level&&"blocker"===b.severity&&/placeholder|source|style|format|structure/u.test(String(b.category||""))||/提示词要求|疑似提示词指令标题|适用性自相矛盾|不得出现/u.test(a.message))||!/目录与正文/u.test(a.message)&&(/配置要求缺少必要内容/u.test(a.message)?"error"===a.level:!!/小节内容补写未完成|空小节|小节只有标题|生成未完成/u.test(a.message)||!/生成后事实反查失败/u.test(a.message)&&(/工序规格冲突/u.test(a.message)?"error"===a.level:!!/项目特点、重点、难点分析 正文不足|项目主要施工内容 正文不足/u.test(a.message)||!(/规划小节正文过短/u.test(a.message)||/事实一致性冲突:项目名称/u.test(a.message))&&(/跨章一致性|专业评分不足|专业缺口|泛化套话|缺少关键线路|缺少材料验收|缺少风险识别|缺少进场/u.test(a.message)?"error"===a.level&&!/证据使用覆盖率偏低|章节逻辑依赖不足|文档交付评分报告/u.test(a.message):!(!e.hc.test(a.message)||/章节审查|最终质量审查|正文篇幅明显低于目标|正文存在空泛占位表达|结构化事实读取不足|正文可能未显式覆盖|仅包含文件类型和占位符|不在本次招标范围内/u.test(a.message))))))}function u(a){let b=[];for(let c of a.split(/^##\s+/gmu).slice(1)){let a=c.split(/\r?\n/u),d=(a.shift()||"").trim(),e=new Map;for(let b of a){let a=/^####\s+(.+)$/u.exec(b.trim());if(!a)continue;let c=a[1].replace(/^\d+(?:\.\d+)*\s*/u,"").replace(/\s+/gu,"");c.length<2||e.set(c,(e.get(c)||0)+1)}for(let[a,c]of e)if(!(c<2)&&(b.push({level:"error",message:`${d||"某章"} 存在同名小节重复:“${a}”出现 ${c} 次`,suggestion:"同主题内容应合并为一个小节;若确为不同方面,请重命名标题以区分内容,避免目录重复堆叠。"}),b.length>=6))return b}return b}let v=new Set(["如有","应用","措施","体系","管理","保障","要求","内容","工程","项目","施工"]);function w(a,b,c={}){let d=[],e=a.replace(/\s+/gu,""),f=c.semanticSimilarity?a.split(/\n/u).filter(a=>/^#{2,4}\s/u.test(a.trim())).map(a=>a.trim().replace(/^#{2,4}\s+/u,"").replace(/^\d+(?:\.\d+)*[\s、.]+/u,"").trim()).filter(Boolean).slice(0,80):[];for(let a of b.slice(0,8)){let b=a.replace(/^拟采用/u,"").replace(/^针对/u,"").replace(/^确保/u,"").replace(/[((][^))]*[))]/gu,"").replace(/的保障体系与措施$|管理体系与措施$|保障体系与措施$/u,"").replace(/^\d{1,3}(?:[.、.]\d{1,3})*\s*/u,"").trim().split(/[、,,;;及与和]+/u).map(a=>a.replace(/^[的了者]+/u,"").trim()).filter(a=>a.length>=2&&!v.has(a));if(0!==b.length&&!b.some(a=>e.includes(a))){if(c.semanticSimilarity&&f.length>0&&Math.max(...f.map(b=>c.semanticSimilarity(a,b)))>=.6)continue;d.push({level:"warning",severity:"warning",message:`招标文件评分条目“${a}”未在正文中出现(核心词:${b.join("/")})`,suggestion:"评审条目必须逐条承接为正文小节;请补写对应内容并确保核心关键词落位,避免评标失分。"})}}return d}function x(a,b){let c=(b||[]).flatMap(a=>(a.sections||[]).filter(a=>/新技术|新工艺|新材料|新设备|四新/u.test(a)));if(0===c.length)return[];let d=[],e=(0,m.Xl)(a,"四新",{fuzzy:!0}),f=e?(0,g.V7)(e):0;for(let b of[...new Set(c)]){let c=(0,m.Xl)(a,b,{fuzzy:!0});if(!c||200>(0,g.V7)(c)){if(f>=200)continue;d.push({level:"warning",severity:"warning",message:`大纲承诺小节“${b}”未在正文成稿(正文 ${c?(0,g.V7)(c):0} 字,要求不少于 200 字)`,suggestion:"请补写四新技术应用小节成稿,落位本项目适用的创新工艺、新材料与新设备应用计划。"})}}return d}function y(a,b,c){let d=c.some(a=>(a.content||"").split(e.A5).filter(a=>!/^#{1,6}\s+/u.test(a.trim())).filter(a=>!/^\s*\|/u.test(a)).filter(a=>!/^\s*:?-{3,}:?/u.test(a)).join("\n").replace(/[|*_`<>#\s]/gu,"").length>=30),f=a.map(s),g=/封面|页眉|页脚|附图|图片引用|CAD图|示意图|插图/u,h=f.filter(a=>"error"===a.level&&t(a)&&!g.test(a.message)),i=f.filter(a=>"error"===a.level&&g.test(a.message)),j=new Set(["structure","style","fact_consistency","qingtian_review"]),k=d?h.filter(a=>j.has(String(a.category||""))):h,l=[{key:"no_errors",label:"无阻断级校验错误",passed:0===k.length},{key:"basic_facts",label:"基础事实齐全",passed:b.project.length>0},{key:"source_traceability",label:"事实具备来源追踪",passed:[...b.project,...b.schedule,...b.quality,...b.safety].every(a=>!!a.sourceFile)},{key:"structured_precision",label:"结构化精确参数已使用",passed:b.preciseFacts.length<e.mu||a.every(a=>"error"!==a.level||!e.Ab.test(a.message))},{key:"chapter_evidence",label:"章节均具备证据",passed:c.every(a=>a.evidence.length>0)},{key:"no_missing_content",label:"无资料未提供章节",passed:c.every(a=>!a.content.includes("资料未提供"))},{key:"no_project_contamination",label:"无项目污染和事实一致性阻断",passed:!a.some(a=>"error"===a.level&&e.Uv.test(a.message)&&t(a))},{key:"numeric_consistency",label:"跨章数值口径与资料一致",passed:!a.some(a=>"error"===a.level&&/跨章一致性冲突|跨章一致性缺口|跨章一致性复核/u.test(a.message)&&t(a))},{key:"manual_postprocess",label:`封面/页眉页脚/附图等 ${i.length} 项由后期人工完善(不阻断导出)`,passed:!0,message:i.length?i.slice(0,5).map(a=>a.message).join(";"):void 0}];return{passed:0===k.length,blockingIssues:k,checklist:l}}function z(a){let b=[],c=a.split(e.A5);for(let a=0;a<c.length;a+=1){if(!e.w7.test(c[a]))continue;let d=[];for(;a<c.length&&e.w7.test(c[a]);)d.push(c[a]),a+=1;a-=1,d.some(a=>e.N3.test(a))&&b.push(d.join("\n"))}return b}function A(a){let b=[...a.matchAll(e.DB)],c=[];for(let d=1;d<b.length;d+=1){let f=b[d].index||0,g=b[d+1]?.index??a.length,h=a.slice(f,g);e.Ks.test(h)&&c.push({level:"warning",message:`第 ${d+1} 章可能重复出现基础信息`,suggestion:"如该信息与本章主题无关,建议合并到更合适的概况类章节,避免重复铺陈。"})}if(0===b.length)return c;let d=b[0].index||0,f=b[1]?.index??a.length,g=a.slice(d,f),h=g.search(e.jM);if(h<=0)return c;let i=g.slice(0,h).replace(e.Dc,""),j=[];for(let a of e.Y8)RegExp(`${a}\\s*[::]`,"u").test(i)&&j.push(a);return j.length>=3&&c.push({level:"warning",message:`基础信息表前重复叙述字段:${j.join("、")}`,suggestion:"基础信息已表格化时,表格前只保留一句引导语,不要重复逐项叙述名称、编号、范围、周期、质量等字段。"}),c}let B=["本节将详细介绍以下内容","本章将从以下几个方面进行阐述","综上所述,通过以上分析得出结论","以下内容将围绕该主题展开论述"];async function C(a){let b=[],c=a.split(/\n+/u).filter(a=>a.trim()&&!/^\s*(#{1,6}\s+|\||[-*+]\s|>)/u.test(a)).flatMap(a=>a.split(/[。;;]/u)).map(a=>a.trim()).filter(a=>a.length>=8),d=await (0,f.Mv)(c,[...B]),e=c.filter(a=>B.some(b=>d(a,b)>=f.Eh));e.length>0&&b.push({level:"warning",message:`存在模板化前缀或套话:${e.slice(0,3).join("、")}`,suggestion:"请删除“本节/本章将/以下从”等前缀,标题后直接进入对象、动作、措施、检查和闭环。"});let g=a.match(/OCR|提示词|绑定片段|后台|文件路径|识别错误|知识库证据|知识库已确认事实|通用兜底段落|兜底占位|兜底模板/giu);return g?.length&&b.push({level:"warning",message:`正文包含后台或资料处理话术:${[...new Set(g)].join("、")}`,suggestion:"建议改为正式文档语言,例如“资料文字不清”“资料口径不一致”“项目资料”,不得暴露后台处理过程。"}),b}function D(a){let b=[];for(let c of a){let a=(c.sections||[]).filter(Boolean),d=a.filter((b,c)=>a.indexOf(b)!==c);d.length>0&&b.push({level:"warning",message:`${c.title} 存在重复小节:${[...new Set(d)].join("、")}`,suggestion:"请保留用户需求、模板或显式大纲中真实需要的小节,删除重复项。"});let e=new Map;for(let b of a){let a=/劳动力|人员|工种/u.test(b)?"劳动力计划":/机械|设备|机具/u.test(b)?"机械设备计划":/材料|物资/u.test(b)?"材料物资计划":/冬季|雨季|高温|台风|大风/u.test(b)?"特殊气候措施":"";a&&e.set(a,[...e.get(a)||[],b])}for(let[a,d]of e)d.length>1&&b.push({level:"warning",message:`${c.title} 存在重复主题小节:${a}(${d.join("、")})`,suggestion:"请合并同类小节,只保留一个主表或主方案,其他位置采用引用或执行说明。"})}return b}function E(a){let b=e.HX.exec(a);if(!b)return[{level:"error",message:"缺少目录页",suggestion:"请在封面后生成“## 目录”,并按一级章父级、二级小节子级组织。"}];let c=0,d=0;for(let a of b[1].split(e.A5))e.ZT.test(a)&&e.EB.test(a)&&(c+=1,e.sr.test(a)&&(d+=1));return c>0&&0===d?[{level:"error",message:"目录二级小节未作为子级缩进",suggestion:"目录应为父子级导航:一级章单独成行,二级小节至少缩进两个空格列在所属章下方。"}]:[]}function F(a){return a.replace(/^#+\s*/u,"").replace(/^第[一二三四五六七八九十百千万\d]+[章节篇部分]\s*/u,"").replace(/^\d+(?:\.\d+)*(?:[..、]|\s)+/u,"").replace(/[()]/gu,a=>"("===a?"(":")").replace(/[\s::.。;;,,、]+$/gu,"").replace(/的(?=保障体系|管理体系|控制体系|措施|方案|计划|要求)/gu,"").replace(/[\s()()::.。;;,,、-]/gu,"").trim()}function G(a){let b=function(a){let b=e.HX.exec(a);return b?b[1].split(e.A5).map(a=>/^\s*\d+\.\d+\s+(.+)$/u.exec(a.trim())).filter(a=>!!a).map(a=>F(a[1]||"")).filter(Boolean):[]}(a),c=[...a.matchAll(/^#{2,4}\s+(\d+\.\d+\s+.+)$/gmu)].map(a=>F(a[1]||"")).filter(Boolean);if(0===b.length||0===c.length)return[];let d=new Set(c),f=new Set(b),g=b.filter(a=>!d.has(a)),h=c.filter(a=>!f.has(a)),i=[];return g.length>0&&i.push({level:"error",message:`目录与正文不一致,目录小节未在正文中找到:${[...new Set(g)].join("、")}`,suggestion:"建议以最终清洗后的正文二级标题为准重新生成目录。"}),h.length>0&&i.push({level:"error",message:`目录与正文不一致,正文小节未进入目录:${[...new Set(h)].join("、")}`,suggestion:"建议重新生成目录,确保正文二级小节完整进入目录。"}),i}function H(a){let b=a.replace(/^#{1,6}\s+/u,"").replace(/^\s*\d+(?:\.\d+)*(?:[..、]|\s)+/u,"").replace(/^第[一二三四五六七八九十百千万\d]+[章节篇部分]\s*/u,"").trim(),c=(0,i.GQ)(b),d=/^(?:\d+(?:\.\d+)*\s*)?(?:[-—–]\s*)?(?:(?:判断|判定|识别|确认)?是否(?:涉及|涉|需要|适用).*|(?:如|若|如果)(?:涉及|不涉及|适用|不适用).*|.*(?:根据|结合).{0,12}(?:实际情况|项目情况|资料情况).{0,8}(?:判断|确定|编写|生成).*|.*(?:按需(?:生成|编写)|视情况|判断后|生成要求|编写要求|注意事项))\s*$/u;return d.test(b)||d.test(c)}function I(a){let b=[...a.matchAll(/^#{2,6}\s+(.+)$/gmu)].map(a=>(0,i.GQ)(a[1]||"")).filter(H);return b.length>0?[{level:"error",message:`正文存在疑似提示词指令标题:${[...new Set(b)].slice(0,8).join("、")}`,suggestion:"请删除或改写为正式施工组织设计小节标题,目录也不得收录该类标题。"}]:[]}function J(a){let b=[],c=a.split(e.A5).map(a=>a.trim()).filter(a=>a&&!/^#{1,6}\s+/u.test(a)&&!/^\s*\|/u.test(a)&&!/^<div\b/iu.test(a)),d=c.find(a=>F(a).length<=1);for(let a of(d&&b.push({level:"warning",message:`正文存在孤立字或残缺段落:${d}`,suggestion:"请删除残缺行或重新生成所在小节。"}),c.filter(a=>/[,、;:和与在为对将]$/u.test(a)||/(通过|包括|如下|主要包括|验收|合格后|复查合格后|设计风|确认后|具体如下|应符合|不少于|以及|且应|不得少于)$/u.test(a)).slice(0,3)))b.push({level:"warning",message:`正文存在疑似截断句:${a}`,suggestion:"请补完整该段落,避免以连接词、逗号、冒号或无句号的动作词结尾。"});let f=c.find(a=>a.length>380);f&&b.push({level:"warning",message:`正文存在过长段落:${f}`,suggestion:"请拆分为多段或表格,改善导出版式和可读性。"});let g=c.find(a=>/\S.+(?:\s|[。;;])(?:\d+[.、](?=\s|\*\*)\s*|[((]\d+[))]\s*|[-*+]\s+)\S.+(?:\s|[。;;])(?:\d+[.、](?=\s|\*\*)\s*|[((]\d+[))]\s*|[-*+]\s+)\S/u.test(a)&&!/\b\d+\.\d+\s*(?:mm|cm|m|㎡|m2|kg|t|MPa|kPa|V|KV|kV|A)\b/iu.test(a));g&&b.push({level:"error",message:`正文存在列表项粘连同一行:${g.slice(0,120)}`,suggestion:"有序列表和无序列表必须逐项独占一行,确保 Markdown/PDF/DOCX 正确排版。"});let h=a.match(/PDF\s*第\s*|(?:PDF\s*)?第\s*\d+\s*(?:[-—至到~~]\s*\d+)?\s*页|(?:图纸|清单|资料|文件|[\u4e00-\u9fa5A-Za-z0-9()()、·-]{2,24}(?:工程)?)\s*(?:[((]?\s*|(?:共|多达|约|合计)\s*)\d+\s*页|[\u4e00-\u9fa5A-Za-z0-9、及与和]{2,24}\s*(?:共|多达|约|合计)\s*\d+\s*页|\d+\s*页\s*(?:图纸|资料|文件|装饰|土建|加固|给排水|电气|智能化|消防)|\d+\s*页/iu)?.[0];h&&b.push({level:"error",message:`正文残留资料页码元信息:${h}`,suggestion:"正式投标正文应引用招标文件、施工图设计文件、工程量清单和相关专业图纸,不写 PDF 页码或资料页数。"});let i=c.find(a=>/仅作为内部事实提取依据|正式正文不得引用文件名|后台事实|内部事实/u.test(a));return i&&b.push({level:"error",message:`正文残留内部处理说明:${i.slice(0,120)}`,suggestion:"正式投标正文不得出现内部事实抽取、后台处理或文件名引用限制说明。"}),b}function K(a){let b=[],c=a.search(/^##\s+第[一二三四五六七八九十百千万\d]+章\s+/mu),d=[...(c>=0?a.slice(c):a.replace(/^##\s+目录[\s\S]*?(?=^##\s+第[一二三四五六七八九十百千万\d]+章\s+)/mu,"")).matchAll(/^##\s+(.+)$/gmu)].map(a=>(a[1]||"").trim()).filter(a=>"目录"!==a&&!/^第[一二三四五六七八九十百千万\d]+章\s+/u.test(a)&&!/^附录/u.test(a)).map(a=>(0,i.GQ)(a));d.length>0&&b.push({level:"error",message:`正文存在非正式章二级标题:${[...new Set(d)].slice(0,8).join("、")}`,suggestion:"正文 ## 只允许用于“第X章”正式章标题;章内小节必须使用 ### X.Y。"});let e=[...a.matchAll(/^##\s+(第[一二三四五六七八九十百千万\d]+章\s+.+)$/gmu)];for(let c=0;c<e.length;c+=1){let d=e[c].index||0,f=e[c+1]?.index??a.length,g=[...a.slice(d,f).matchAll(/^###\s+\d+\.\d+\s+(.+)$/gmu)].map(a=>(0,i.GQ)(a[1]||"")),h=(0,i.GQ)((e[c][1]||"").replace(/^第[一二三四五六七八九十百千万\d]+章\s*/u,""));1===g.length&&F(g[0])===F(h)&&b.push({level:"error",message:`章节只有一个且与章名同名的小节:${e[c][1]}`,suggestion:"应拆分为多个业务小节,不能用章标题重复作为唯一二级小节。"})}return b}function L(a){a=(0,j.BJ)(a);let b=[];{let c=a.split(e.A5);for(let a=1;a<c.length;a+=1){let d=(c[a]||"").trim(),f=(c[a-1]||"").trim();d&&!/^\|/u.test(d)&&d.endsWith("|")&&1===(d.match(/\|/gu)||[]).length&&!/^#{1,6}\s/u.test(d)&&e.w7.test(f)&&b.push({level:"error",message:`表格断行残片:${d}`,suggestion:"该行是表格数据行整列丢失的残片:合并回所属表格行并补齐缺失列,或删除该残行。"})}}/按审批确认执行/u.test(a)&&b.push({level:"error",message:"表格存在自动兜底污染内容:按审批确认执行",suggestion:"正式投标表格不得使用通用兜底短语,应保留真实业务内容或删除该行。"});let c=[];for(let b of a.matchAll(/\|\s*信息项\s*\|\s*内容\s*\|/gu)){let d=a.slice(b.index||0),f=[];for(let a of d.split(e.A5)){if(f.length>0&&!e.w7.test(a))break;f.push(a)}c.push(f.join("\n"))}let d=c.filter(a=>/项目名称|招标人|建设单位|发包人|建设地点|招标范围|计划工期|合同估算价|质量标准/u.test(a)).length;d>1&&b.push({level:"error",message:`项目基础信息类表格重复:${d} 处`,suggestion:"项目名称、招标人、建设地点、工期、质量等基础信息只能集中输出一次。"});let f=a.match(/^\|\s*---\s*\|\s*---\s*\|\s*$/gmu)||[];for(let c of(f.length>60&&b.push({level:"error",message:`表格分隔线异常重复:${f.length} 行`,suggestion:"请修复表格规范化逻辑,禁止把数据行拆成多个碎表。"}),z(a))){let a=c.split(e.A5).filter(a=>e.w7.test(a));if(a.length<2)continue;if(!e.N3.test(a[1]||"")){b.push({level:"error",message:`表格分隔线位置不规范:${a[0]||""}`,suggestion:"Markdown 表格必须紧跟表头输出分隔线,例如 |---|---|,中间不得插入正文或其他管道行。"});continue}let d=a.map(a=>a.trim().replace(/^\|/u,"").replace(/\|$/u,"").split(/(?<!\\)\|/u).map(a=>a.trim())),f=d[0]||[],g=f.filter(a=>/^(?:列|字段|内容|备注)\d+$/u.test(a));g.length>0&&b.push({level:"error",message:`表格存在泛化表头:${g.join("、")}`,suggestion:"正式投标表格必须使用业务字段表头,不得出现“列5/字段1/内容2”等临时表头。"});let h=f.length;d.find((a,b)=>1!==b&&a.length!==h)&&b.push({level:"error",message:`表格列数不一致:${f.join("、")}`,suggestion:"请统一表头和数据行列数;不应通过自动填充兜底词修补表格。"});let i=d.slice(2),j=i.find(a=>a.some(a=>""===a));j&&b.push({level:"error",message:`表格存在空单元格:${f.join("、")}(“${j[0]||""}”行)`,suggestion:"正式交付表格不得出现空单元格;缺失数据应从资料补齐或按业务口径填写具体值,不得留空。"});let k=i.find(a=>a.some((b,c)=>(!!/^(?:—+|-+|-|\/|N\/A|n\/a|待定|待补充|待确认|待查|待补|若干|暂无|无数据)$/u.test(b)||!!/^约\d/u.test(b))&&!(/^(?:合计|小计|总计|累计)/u.test(a[0]||"")&&/^(?:—+|-+)$/u.test(b)&&c>0)));if(k){let a=/^(?:合计|小计|总计|累计)/u.test(k[0]||""),c=k.find((b,c)=>(!!/^(?:—+|-+|-|\/|N\/A|n\/a|待定|待补充|待确认|待查|待补|若干|暂无|无数据)$/u.test(b)||!!/^约\d/u.test(b))&&!(a&&/^(?:—+|-+)$/u.test(b)&&c>0))||"";b.push({level:"error",message:`表格存在占位符单元格:${f.join("、")}(“${k[0]||""}”行“${c}”)`,suggestion:"正式交付表格不得用“—/若干/约/待定”等占位或模糊表达代替具体数据;应从资料补齐具体数值。"})}}return b}function M(a){let b=[],c=a.split(e.A5),d=[];for(let a=0;a<c.length;a+=1){if(!e.w7.test(c[a]))continue;let b=a,f=[];for(;a<c.length&&e.w7.test(c[a]);)f.push(c[a]),a+=1;a-=1;let g=f.filter(a=>e.N3.test(a)).length;if(0===g)continue;let h=(f[0]||"").trim(),i=h.startsWith("|")?h.slice(1):h,j=(i.endsWith("|")?i.slice(0,-1):i).split("|").map(a=>a.split("**").join("").trim()).filter(a=>a.length>0);d.push({headerKey:j.join("|"),headerText:j.join("、"),start:b,end:a,dividerCount:g})}let f=new Map;for(let a of d)f.set(a.headerKey,(f.get(a.headerKey)||0)+1);let g=[...f.entries()].filter(([,a])=>a>=3);if(g.length>0){let a=d.find(a=>f.get(a.headerKey)===g[0]?.[1])?.headerText||"";b.push({level:"warning",message:`同主题表格重复堆叠:${g.length} 组相同表头出现 3 次及以上(如:${a})`,suggestion:"同一主题表格全文只出现一次,禁止拆成多张碎表重复堆叠凑数;请合并同类表格或删除重复内容。"})}let h=0;for(let a=1;a<d.length;a+=1){let b=d[a-1],e=d[a];b&&e&&c.slice(b.end+1,e.start).every(a=>""===a.trim())&&(h+=1)}for(let a of d)a.dividerCount>=2&&(h+=a.dividerCount-1);return h>=2&&b.push({level:"warning",message:`表格连续堆叠:${h} 处相邻表格无正文分隔`,suggestion:"表格之间应有正文引导叙述,禁止连续堆叠多张表格凑数。"}),b}function N(a){return a.split(e.A5).filter(a=>!/^#{1,6}\s+/u.test(a.trim())).filter(a=>!/^\s*\|/u.test(a)).filter(a=>!/^\s*:?-{3,}:?/u.test(a)).filter(a=>!/^<\/?div\b/iu.test(a.trim())).join("\n").replace(/[|*_`<>-]/gu,"").replace(e.ug,"").length}function O(a){let b=[...a.matchAll(/^(#{3,4})\s+(.+)$/gmu)];return b.map((c,d)=>{let e=c[1].length,f=(c.index||0)+c[0].length,g=b.slice(d+1).find(a=>a[1].length<=e),h=g?.index??a.length,i=(c[2]||"").trim();return{rawTitle:i,title:F(i),level:e,body:a.slice(f,h)}}).filter(a=>a.title&&(3===a.level||4===a.level))}function P(a,b,c,d,f){let g=N(d),h=e.w7.test(d)&&d.split(e.A5).some(a=>e.N3.test(a)),i=N(d.split("\n").filter(a=>!e.w7.test(a)&&!e.N3.test(a)).join("\n").replace(/^#{1,6}\s+.+$/gmu,""));if(/\[WRITER_MISSING_SECTION\]|Writer 未完成/u.test(d))return{chapterTitle:a,sectionTitle:b,level:c,bodyLength:g,reason:"empty",planned:f,message:`${a} 小节内容补写未完成:${b}`};if(/【本小节生成未达标,需重新生成】/u.test(d))return{chapterTitle:a,sectionTitle:b,level:c,bodyLength:g,reason:"empty",planned:f,message:`${a} 小节生成未达标:${b}`};if(/项目基本信息|基本信息|工程概况|项目概况|工程概述|项目概述/u.test(b)&&(h||g>=40)||/^附录[一二三四五六七八九十A-Z\d]/u.test(b)&&h)return;let j=/清单|配置|汇总|一览|明细|计划|进度|节点|安排/u.test(b)||/表[^,。;:\s]{0,6}$/u.test(b);if(!(h&&j&&Math.max(0,d.split(e.A5).filter(a=>e.w7.test(a)&&!e.N3.test(a)).length-1)>=2)){if(h&&i<20)return{chapterTitle:a,sectionTitle:b,level:c,bodyLength:g,reason:"empty",planned:f,message:f?`${a} 只有标题或表格无正文:${b}`:`${a} 小节只有标题或表格无正文:${b}`};if(!(g>=80)||!(i>=20)){if(0===g)return{chapterTitle:a,sectionTitle:b,level:c,bodyLength:g,reason:"empty",planned:f,message:`${a} 空小节:${b}`};if(g<180)return{chapterTitle:a,sectionTitle:b,level:c,bodyLength:g,reason:"too_short",planned:f,message:`${a} ${f?"规划小节":"正文小节"}正文过短:${b}`}}}}function Q(a,b){let c=[],d=new Set;for(let e of b){let b=e.content?.trim()?e.content:a;for(let a of(e.sections||[]).filter(a=>!/^(?:施工概况|施工流程|施工方法)$/u.test(F(a))&&!/^附录/u.test(a.trim()))){let f=F(a),g=function(a,b){let c=O(a).filter(a=>(function(a,b){let c=F(a),d=F(b);if(!c||!d)return!1;if(c===d||c.includes(d)||d.includes(c))return!0;let e=/项目概况|主要施工方案|新技术新材料|工程重点难点|重点难点|危大工程|保障体系|安全保障|工期|质量|安全生产|应急预案|资源|人材机|材料|机械|劳动力|进度|关键线路|交通疏导|成品保护|深化设计|验收/gu,f=new Set(c.match(e)||[]),g=new Set(d.match(e)||[]),h=[...f].filter(a=>g.has(a)).length;return h>=2||1===Math.min(f.size,g.size)&&1===h&&16>=Math.max(c.length,d.length)})(a.rawTitle,b));return c.length<=1?c[0]:c.map(a=>({item:a,gap:P("",b,a.level,a.body,!0),textLength:N(a.body)})).sort((a,b)=>{let c=a.gap&&"empty"===a.gap.reason?1:0,d=b.gap&&"empty"===b.gap.reason?1:0;return c!==d?c-d:b.textLength-a.textLength})[0]?.item}(b,a),h=`${e.title}|${f}|planned`;if(!g){c.push({chapterTitle:e.title,sectionTitle:a,level:3,bodyLength:0,reason:"missing_planned_section",planned:!0,message:`${e.title} 缺少规划小节:${a}`}),d.add(h);continue}let i=P(e.title,a,g.level,g.body,!0);i&&c.push(i),d.add(h)}for(let a of O(b)){let b=`${e.title}|${a.title}|actual`,f=`${e.title}|${a.title}|planned`;if(d.has(b)||d.has(f))continue;let g=P(e.title,a.title,a.level,a.body,!1);g&&"empty"===g.reason&&c.push(g),d.add(b)}}return c}function R(a,b){return Q(a,b).filter(a=>"empty"===a.reason||"missing_planned_section"===a.reason).map(a=>({level:"error",message:a.message,suggestion:"missing_planned_section"===a.reason?"必须补充该规划小节正式正文,不得缺节导出。":"必须补充与该小节相关的材料事实和必要内容,达到正文完整度要求。"}))}function S(a){return`${a.fieldName||a.key} ${(0,m.lG)(a.value)}`.replace(/\s+/gu," ").trim()}function T(a){let b=new Set;for(let c of[/\d+\s*日历天(?!内)/gu,/(?:计划工期|合同工期|总工期|工期|施工周期)[^\n。;;]{0,12}\d+\s*天/gu,/(?:计划工期|合同工期|总工期|工期|施工周期)[^\n。;;]{0,12}\d+\s*(?:个月|月)/gu])for(let d of a.matchAll(c)){let a=d[0].match(/\d+\s*(?:日历天|天|个月|月)/u)?.[0]?.replace(/\s+/gu,"");a&&b.add(a)}return[...b]}let U=/占地|用地|地下|地上|办公|生活|附属|辅助|绿化|道路|广场|门卫|配电|泵房|锅炉房|车库|车棚|岗亭|传达|警卫|样板房|售楼|门房|单栋|各栋|楼层|每层|单层|架空|雨棚|堆场/u,V=/办公区|生活区|加工区|施工区|堆场|门卫|配电|泵房|锅炉房|车库|车棚|岗亭|传达|警卫|样板房|售楼|门房|地下室|楼层|单层|每层|架空|雨棚/u,W=/暂列|暂估|费率|税率|利润|规费|安全文明|措施费|人工费|材料费|机械费|管理费|暂定/u,X=["地下建筑面积与地上建筑面积的分项指标","配套用房与附属用房的建筑面积","占地面积与绿化面积的用地指标"],Y=["总建筑面积的总体规模指标","建设规模的总量数值"],Z=["暂列金额与暂估价的子项费用","人工费与材料费的分项费用"],$=["合同估算价的总金额口径","投资估算的总体金额"];async function _(a){return(0,o.A)({prototypes:[...X],negativePrototypes:[...Y],embedDocuments:a})}async function aa(a){return(0,o.A)({prototypes:[...Z],negativePrototypes:[...$],embedDocuments:a})}async function ab(a,b,c,d,e,f){let g=[],h=[],i=new Set,j=RegExp(`(?:${b.source})(?:[^\\n。;;,,]{0,14}?)(\\d{2,}(?:[.,]\\d+)?\\s*万?)\\s*(${c.source})`,"giu"),k=[...a.matchAll(j)],l=f?k.filter(b=>{let c=b[0].slice(0,b[0].indexOf(b[1])),f=a.slice(Math.max(0,(b.index??0)-16),b.index??0);return!(d&&d.test(c)||e&&e.test(f))}).map(b=>{let c=b[0].slice(0,b[0].indexOf(b[1])),d=a.slice(Math.max(0,(b.index??0)-16),b.index??0);return{index:b.index??0,context:`${d}${c}`.replace(/\s+/gu,"").slice(-24)}}):[],m=l.length>0?await f(l.map(a=>a.context)):[],n=new Set(l.filter((a,b)=>m[b]).map(a=>a.index));for(let c of k){let f=c[1].replace(/[,,]/gu,"").replace(/\s+/gu,""),j=c[2],k=c[0].slice(0,c[0].indexOf(c[1])),l=a.slice(Math.max(0,(c.index??0)-16),c.index??0);if(d&&d.test(k)||e&&e.test(l)||n.has(c.index??0)){h.push({value:f,unit:j,scope:c[0].slice(0,k.length).replace(/\s+/gu,""),context:`${l}${k}`.replace(/\s+/gu,"").slice(-24)});continue}let m=c[0].match(b)?.[0]||"",o=`${f}|${j}`;!f||i.has(o)||(i.add(o),g.push({value:f,unit:j,scope:m}))}return{entries:g,skipped:h}}function ac(a,b){return ab(a,ae,af,U,V,b).then(({entries:b})=>{let c=b.find(a=>"建筑面积"===a.scope.replace(/^总/u,""));return/占地|用地/u.test(a)?c:b[0]})}function ad(a){let b=a.value.replace(/[,,]/gu,"").trim(),c=/^([\d.]+)万/u.exec(b),d=c?1e4*Number(c[1]):Number(b);return Number.isFinite(d)?/亿元/u.test(a.unit)?1e8*d:/万元/u.test(a.unit)?1e4*d:d:NaN}let ae=/(?<![地上地下门卫室值班室配电室配电房泵房水泵房锅炉房公厕车库车棚岗亭传达室警卫室样板房售楼处门房])总?建筑面积|总?建设规模/u,af=/㎡|m²|m2|平方米/u,ag=/合同估算价|合同估算价格|投资估算|最高投标限价|招标控制价|工程总投资|总投资|工程造价/u,ah=/万元|亿元/u;async function ai(a,b,c,d,e){let f=[],g=await _(e),h=await aa(e),i=a=>c?.find(b=>b.kind===a&&b.resolution&&"low"!==b.confidence)?.resolution,j=a=>{let b=/(\d+(?:\.\d+)?)\s*(㎡|m²|m2|平方米|万元|亿元)/u.exec(a);return b?{value:b[1],unit:b[2]}:void 0},k=i("duration")??b.schedule.map(S).find(a=>/\d+\s*(?:日历天|天|个月|月)|计划工期|合同工期/u.test(a)),l=b.quality.map(S).find(a=>/质量|合格|优良/u.test(a));if(k){let b=T(k)[0],c=T(a.split("\n").filter(a=>!/^\s*\|/u.test(a.trim())).join("\n")),d=b?c.filter(a=>a!==b&&/日历天/u.test(a)):[];b&&d.length>=2&&f.push({level:"warning",message:`跨章一致性冲突:正文出现与资料工期不一致的表述 ${d.slice(0,6).join("、")}`,suggestion:`请统一使用资料中的工期口径:${k}`})}l&&!/质量标准|质量目标|合格|优良/u.test(a)&&(d&&[...d.values()].some(a=>a.contentNeeds.quality)||f.push({level:"error",message:"跨章一致性缺口:正文未稳定体现资料中的质量目标",suggestion:`请在工程概况、质量保证和验收相关章节统一体现:${l}`}));let m=i("area"),n=b.project.map(S).filter(a=>/建设规模|建筑面积/u.test(a)),o=await Promise.all(n.map(a=>ac(a,g))),p=m??n.find((a,b)=>void 0!==o[b]);if(p){let c=m?j(m):await ac(p,g),{entries:d,skipped:e}=await ab(a,ae,af,U,V,g);if(c){let a=d.filter(a=>ad(a)!==ad(c));a.length>=1&&f.push({level:"error",message:`跨章一致性冲突:正文出现与资料建设规模不一致的表述 ${a.slice(0,6).map(a=>`${a.value}${a.unit}`).join("、")}`,suggestion:`请统一使用资料中的建设规模口径:${p.slice(0,80)}`})}if(e.length>0){let a=[m?`建筑总量裁决值:${m}`:"",...b.project.map(S).filter(a=>/建设规模|建筑面积|占地/u.test(a)).slice(0,3)].filter(Boolean);f.push({level:"warning",severity:"warning",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`规模口径复核:正文 ${e.slice(0,3).map(a=>`“${a.context.slice(-14)}${a.value}${a.unit}”`).join("、")} 等 ${e.length} 处数值与口径词之间混入子项/专项口径词,需核对口径归属`,suggestion:`依据项目规模事实卡逐处核对该数值的口径归属(${a.join(";")||"无可用事实卡,以绑定资料原文为准"}):与事实卡对应口径一致的数值保留原样,口径错位或数值不一致的数值改正为事实卡对应口径值,不得把子项/专项口径数值改成建筑总量数值。`})}}let q=i("cost"),r=q??b.project.map(S).find(a=>/合同估算|投资估算|最高投标限价|招标控制价|总投资|工程造价/u.test(a));if(r){let b=q?j(q):(await ab(r,ag,ah,W,void 0,h)).entries[0],c=(await ab(a,ag,ah,W,void 0,h)).entries;if(b){let a=c.filter(a=>ad(a)!==ad(b));a.length>=1&&f.push({level:"error",message:`跨章一致性冲突:正文出现与资料估算价不一致的表述 ${a.slice(0,6).map(a=>`${a.value}${a.unit}`).join("、")}`,suggestion:`请统一使用资料中的估算价口径:${r.slice(0,80)}`})}}return f}let aj=/找平层|抹灰层|防水层|保温层|结合层|垫层|面层|粘结层|隔热层|隔离层/gu,ak=/铺设|施工|浇筑|粘贴|铺贴|涂抹|完成|进行|待|设置|铺装|挂网|喷涂|灌注/u,al=["施工过程与工序动作的先后描述","铺设浇筑完成后再进行的工序"],am=["结构层的厚度与配比参数","找平层厚20毫米的规格"];async function an(a){return(0,o.A)({prototypes:[...al],negativePrototypes:[...am],embedDocuments:a})}async function ao(a,b){let c=[],d=[...a.matchAll(aj)],e=[],f=(a,b)=>e.some(([c,d])=>a<d&&b>c),g=[],h=(a,d,h,i,j,k)=>{let l=[...a.matchAll(h)];for(let h of"first"===i?l:[...l].reverse()){let l=d+(h.index??0),m=l+h[0].length;if(f(l,m))continue;let n="first"===i?a.slice(0,h.index??0):a.slice((h.index??0)+h[0].length);if(!ak.test(n)){b&&n.trim()&&g.push({key:`${j}|${l}|${m}`,gap:n}),e.push([l,m]),c.push({layer:j,span:[l,m],raw:h[0],kind:k});return}}};for(let b=0;b<d.length;b+=1){let c=d[b],e=c[0],f=c.index??0,g=f+e.length,i=d[b+1]?.index,j=void 0===i?Math.min(a.length,g+90):i,k=a.slice(g,j),l=b>0?(d[b-1].index??0)+d[b-1][0].length:Math.max(0,f-40),m=a.slice(l,f);h(k,g,/(\d+:\d+(?:\.\d+)?)/gu,"first",e,"ratio"),h(m,l,/(\d+:\d+(?:\.\d+)?)/gu,"last",e,"ratio"),h(k,g,/(\d+(?:\.\d+)?)\s*mm/gu,"first",e,"thickness"),h(m,l,/(\d+(?:\.\d+)?)\s*mm/gu,"last",e,"thickness")}if(b&&g.length>0){let a=await b(g.map(a=>a.gap)),d=new Set(g.filter((b,c)=>a[c]).map(a=>a.key));return c.filter(a=>!d.has(`${a.layer}|${a.span[0]}|${a.span[1]}`))}return c}async function ap(a,b){let c=[],d=new Set;for(let e of(await ao(a,b))){let a="ratio"===e.kind?e.raw.match(/(\d+:\d+(?:\.\d+)?)/u)?.[1]:void 0,b="thickness"===e.kind?e.raw.match(/(\d+(?:\.\d+)?)/u)?.[1]:void 0,f=b?Number(b):void 0,g=`${e.layer}|${a||""}|${f??""}`;d.has(g)||(d.add(g),c.push({layer:e.layer,ratio:a,thickness:f}))}return c}async function aq(a,b,c){let d=[],e=await an(c),f=[...b.specifications,...b.quality,...b.preciseFacts,...b.bills].map(S).join("\n"),g=await ap(f,e);if(0===g.length)return d;let h=new Map;for(let a of g){let b=h.get(a.layer)||[];b.push(a),h.set(a.layer,b)}let i=await ap(a,e),j=new Set;for(let[a,b]of h){let c=[...new Set(b.map(a=>a.ratio).filter(Boolean))],e=[...new Set(b.map(a=>a.thickness).filter(a=>Number.isFinite(a)))];for(let b of i.filter(b=>b.layer===a)){if(1===c.length&&b.ratio&&b.ratio!==c[0]){let e=`ratio|${a}|${b.ratio}`;j.has(e)||(j.add(e),d.push({level:"error",message:`工序规格冲突:正文${a}配比 ${b.ratio} 与资料口径 ${c[0]} 不一致`,suggestion:`请将${a}配比统一为资料口径 ${c[0]},禁止改写资料规格。`}))}if(1===e.length&&Number.isFinite(b.thickness)&&Math.abs(b.thickness-e[0])>=1){let c=`thickness|${a}|${b.thickness}`;j.has(c)||(j.add(c),d.push({level:"error",message:`工序规格冲突:正文${a}厚度 ${b.thickness}mm 与资料口径 ${e[0]}mm 不一致`,suggestion:`请将${a}厚度统一为资料口径 ${e[0]}mm。`}))}}}return d}async function ar(a,b,c){let d=await _(c),e=await aa(c),f=await an(c),g=[...a.specifications,...a.quality,...a.preciseFacts,...a.bills].map(S).join("\n"),h=new Map;for(let a of(await ap(g,f))){let b=h.get(a.layer)||{ratios:[],thicknesses:[]};a.ratio&&!b.ratios.includes(a.ratio)&&b.ratios.push(a.ratio),Number.isFinite(a.thickness)&&!b.thicknesses.includes(a.thickness)&&b.thicknesses.push(a.thickness),h.set(a.layer,b)}let i=new Map;for(let[a,b]of h)(1===b.ratios.length||1===b.thicknesses.length)&&i.set(a,{ratio:1===b.ratios.length?b.ratios[0]:void 0,thickness:1===b.thicknesses.length?b.thicknesses[0]:void 0});let j=a=>b?.find(b=>b.kind===a&&b.resolution&&"low"!==b.confidence)?.resolution,k=a=>{let b=/(\d+(?:\.\d+)?)\s*(㎡|m²|m2|平方米|万元|亿元)/u.exec(a);return b?{value:b[1],unit:b[2]}:void 0},l=j("area"),m=a.project.map(S).filter(a=>/建设规模|建筑面积/u.test(a)),n=await Promise.all(m.map(a=>ac(a,d))),o=l??m.find((a,b)=>void 0!==n[b]),p=j("cost"),q=p??a.project.map(S).find(a=>/合同估算|投资估算|最高投标限价|招标控制价|总投资|工程造价/u.test(a));return{specTargets:i,scaleTarget:o?l?k(l):await ac(o,d):void 0,costTarget:q?p?k(p):(await ab(q,ag,ah,W,void 0,e)).entries[0]:void 0,scaleGapGate:d,costGapGate:e,actionGate:f}}async function as(a,b){let c=[];for(let d of(await ao(a,b.actionGate))){let a=b.specTargets.get(d.layer);if(a){if("ratio"===d.kind&&a.ratio){let b=d.raw.match(/(\d+:\d+(?:\.\d+)?)/u)?.[1];b&&b!==a.ratio&&c.push({start:d.span[0],end:d.span[1],replacement:d.raw.replace(/(\d+:\d+(?:\.\d+)?)/u,a.ratio),detail:`${d.layer}配比 ${b}→${a.ratio}`})}if("thickness"===d.kind&&Number.isFinite(a.thickness)){let b=Number(d.raw.match(/(\d+(?:\.\d+)?)/u)?.[1]);Number.isFinite(b)&&Math.abs(b-a.thickness)>=1&&c.push({start:d.span[0],end:d.span[1],replacement:d.raw.replace(/(\d+(?:\.\d+)?)/u,String(a.thickness)),detail:`${d.layer}厚度 ${b}mm→${a.thickness}mm`})}}}let d=async(b,d,e,f,g,h,i)=>{if(!b)return;let j=RegExp(`(?:${d.source})(?:[^\\n。;;,,]{0,14}?)(\\d{2,}(?:[.,]\\d+)?\\s*万?)\\s*(${e.source})`,"giu"),k=[...a.matchAll(j)],l=i?k.filter(b=>{let c=b[0].slice(0,b[0].indexOf(b[1])),d=a.slice(Math.max(0,(b.index??0)-16),b.index??0);return!(g&&g.test(c)||h&&h.test(d))}).map(b=>{let c=b[0].slice(0,b[0].indexOf(b[1])),d=a.slice(Math.max(0,(b.index??0)-16),b.index??0);return{index:b.index??0,context:`${d}${c}`.replace(/\s+/gu,"").slice(-24)}}):[],m=l.length>0?await i(l.map(a=>a.context)):[],n=new Set(l.filter((a,b)=>m[b]).map(a=>a.index));for(let d of k){let e=d[0].slice(0,d[0].indexOf(d[1])),i=a.slice(Math.max(0,(d.index??0)-16),d.index??0);if(g&&g.test(e)||h&&h.test(i)||n.has(d.index??0))continue;let j={value:d[1].replace(/[,,]/gu,"").replace(/\s+/gu,""),unit:d[2]};if(ad(j)===ad(b))continue;let k=(d.index??0)+d[0].indexOf(d[1]),l=k+d[1].length;c.some(a=>a.start<l&&a.end>k)||c.push({start:k,end:l,replacement:b.value,detail:`${f} ${j.value}${j.unit}→${b.value}${j.unit}`})}};if(await d(b.scaleTarget,ae,af,"建设规模",U,V,b.scaleGapGate),await d(b.costTarget,ag,ah,"估算价",W,void 0,b.costGapGate),0===c.length)return{content:a,fixedCount:0,details:[]};c.sort((a,b)=>b.start-a.start);let e=a;for(let a of c)e=e.slice(0,a.start)+a.replacement+e.slice(a.end);return{content:e,fixedCount:c.length,details:c.map(a=>a.detail)}}async function at(a,b,c,d){let e=await ar(b,c,d);if(0===e.specTargets.size&&!e.scaleTarget&&!e.costTarget)return{fixedCount:0,details:[]};let f=0,g=[];for(let b of a){let a=await as(b.content,e);a.fixedCount>0&&(b.content=a.content,f+=a.fixedCount,g.push(...a.details))}return{fixedCount:f,details:g}}async function au(a,b,c,d){let e=await ar(b,c,d);if(0===e.specTargets.size&&!e.scaleTarget&&!e.costTarget)return{markdown:a,fixedCount:0,details:[]};let f=await as(a,e);return{markdown:f.content,fixedCount:f.fixedCount,details:f.details}}async function av(a){let{closedLoopBlocks:b}=await (0,n.Pm)(a),c=Math.max(6,Math.ceil((0,g.V7)(a)/1500));return b>=c?[]:[{level:"warning",message:`可落地性闭环句式密度不足:全文 ${b} 段完整闭环句式,未达每 1500 字 1 段(目标 ${c} 段)`,suggestion:"在措施类段落中补齐“责任岗位 + 检查频次 + 整改闭环”三要素齐全的闭环句式:同一自然段内同时出现岗位(如项目经理/质检员/安全员)、频次(每日/每周/不少于X次)与闭环(整改/复查/销项)。"}]}function aw(a,b){let c=[],d=/(?:三检制|三级教育|三级管理|5S|24\s*小时|每日|每周|每月|一次|两次)/gu;for(let e of a){let a=[...new Set(e.content.match(d)||[])];if(a.length<3)continue;let f=b?.get(e.title);f&&(f.closedLoop||c.push({level:"warning",message:`${e.title} 管理措施数字较多但缺少执行闭环:${a.slice(0,8).join("、")}`,suggestion:"这些管理数字可以保留,但需要补充责任主体、检查频次、记录台账、整改复查和闭环要求。"}))}return c}function ax(a,b){let c=/(?:加强组织领导|严格执行规范|落实责任制度|确保工程质量|强化过程管理|提高思想认识|完善管理体系|形成闭环管理)/gu,d=[];for(let e of a){if((e.content.match(c)||[]).length<6)continue;let a=b?.get(e.title);a&&(a.concrete||d.push({level:"error",message:`${e.title} 存在较多未绑定项目事实和工序控制点的泛化套话`,suggestion:"请替换为结合资料事实、施工对象、工序控制、验收资料和整改闭环的专业内容。",chapterId:e.id}))}return d}function ay(a){return[...a.project,...a.schedule,...a.quality,...a.safety,...a.resources,...a.preciseFacts,...a.bills,...a.drawings,...a.rules,...a.specifications].map(S).join("\n")}function az(a,b,c){let d=`${a} ${b}`;if(/(?:工日|人日|次|台|套|个|人|层|间|批|项|处|座|栋|根|只|组|件|块|片|面|条|道|樘|扇|盏|节|段)$/u.test(a)||/三检制|三级|5S|24\s*小时|每日|每周|每月|一次|两次|责任制|制度/u.test(d)||/暂列金额|暂估价|报价|单价|合价|综合单价|税率|增值税|预留金/u.test(d)||/^\d+(?:\.\d+)?(?:月|年)$/u.test(a)&&/开工|竣工|日期|计划|年|月/u.test(b))return"soft";let e=c??b;return/(?:天|工作天|月|年)$/u.test(a)&&/总工期|计划工期|合同工期|日历天|施工周期/u.test(e)||/(?:万元|亿元|元)$/u.test(a)&&/最高投标限价|招标控制价|合同估算价|投资估算|报价|金额|人民币/u.test(e)||/(?:m2|hm2|亩|㎡|m²|平方米)$/u.test(a)&&/建设规模|总建筑面积|总用地面积|总占地面积/u.test(e)?"scope":/(?:工程量|清单|建设规模|建筑面积|长度|材料|设备|规格|型号).{0,24}(?:m²|㎡|m3|m³|米|吨|套|台|个|项|%)/u.test(d)?"spec":/GB\s*\d|JGJ\s*\d|CJJ\s*\d|ISO\s*\d|GB\/T|CECS\s*\d|DL\s*\d|YB\s*\d|SH\s*\d|SJ\/T\s*\d|CJJ\/T\s*\d|DB\s*\d/u.test(d)?"soft":/标准|规范|编号/u.test(d)?"spec":"soft"}function aA(a){let b=[];for(let c of(0,h.zn)(a)){if(/^\d+\.\d+$/u.test(c))continue;let d=(0,h.K3)(c),e=a.indexOf(c);if(e<0){let b=/^\d+(?:\.\d+)?/u.exec(c)?.[0];e=b?a.indexOf(b):-1}if(e<0)continue;let f=a.lastIndexOf("\n",e-1)+1,g=a.indexOf("\n",e),i=a.slice(f,g<0?a.length:g);if(/^\s*\|/u.test(i.trim()))continue;let j=a.slice(Math.max(0,e-36),Math.min(a.length,e+c.length+36)),k=a.slice(Math.max(0,e-16),e);b.push({token:c,normalizedToken:d,context:j,prefix:k})}return b}function aB(a){let{markdown:b,factsModel:c,scopeSuspicious:d,specSuspicious:e,softSuspicious:f}=a,g=[],h=[...new Set(d)],i=[...new Set(e)],j=[...new Set(f)];return h.length>=1&&g.push({level:"error",message:`生成后事实反查失败:正文出现资料事实主表中未找到的总量口径数字 ${h.slice(0,8).join("、")}`,suggestion:"总量口径数字(工期/金额/建设规模)必须与资料一致;请删除或改写为资料确认的口径,禁止编造。"}),i.length>=2&&g.push({level:"warning",message:`生成后事实反查提示:正文出现资料事实主表中未找到的规格明细数字 ${i.slice(0,8).join("、")}`,suggestion:"建议复核这些规格是否来自管理制度、规范要求或资料事实;如无依据,改为定性管理要求。"}),j.length>=6&&g.push({level:"warning",message:`生成后事实反查提示:正文出现较多未在资料事实主表中反查到的管理数字 ${j.slice(0,10).join("、")}`,suggestion:"请确认这些管理数字属于通用制度、规范要求或项目资料事实;如无依据,建议改为定性管理要求。"}),/质量目标|质量标准/u.test(b)&&c.quality.length>0&&!c.quality.some(a=>b.includes((0,m.lG)(a.value).slice(0,18)))&&g.push({level:"warning",message:"生成后事实反查提示:正文质量目标表述未明显匹配质量事实主表",suggestion:"请使用资料中的质量目标原文或等价表述。"}),g}let aC=/(?:天|工作天|日历天|月|年|万元|亿元|元|m2|hm2|亩|㎡|m²|平方米)$/u;function aD(a,b){let c=ay(b);if(80>(0,g.V7)(c))return[];let d=(0,h.K3)(c),e=[],f=[],i=[];for(let b of aA(a)){let{token:a,normalizedToken:c,context:g,prefix:h}=b,j=az(a,g,h);"scope"!==j||d.includes(c)||e.push(a),"spec"!==j||d.includes(c)||f.push(a),"soft"!==j||d.includes(c)||i.push(a)}return aB({markdown:a,factsModel:b,scopeSuspicious:e,specSuspicious:f,softSuspicious:i})}async function aE(a,b,c){let d,e=ay(b);if(80>(0,g.V7)(e))return[];let f=(0,h.K3)(e),i=aA(a),j=i.filter(a=>aC.test(a.token));if(j.length>0){let a=await c.scopeClassifier.batchClassify(j.map(a=>`${a.token} ${a.context}`.slice(0,160)));d=new Map,j.forEach((b,c)=>d.set(b.token,a[c]||"other"))}let k=[],l=[],m=[];for(let a of i){let{token:b,normalizedToken:c,context:e,prefix:g}=a,h=az(b,e,g);if(d&&aC.test(b)){let a=d.get(b)||"other";"scope"===h?h="scope"===a?"scope":"soft":"scope"===a&&(h="scope")}"scope"!==h||f.includes(c)||k.push(b),"spec"!==h||f.includes(c)||l.push(b),"soft"!==h||f.includes(c)||m.push(b)}return aB({markdown:a,factsModel:b,scopeSuspicious:k,specSuspicious:l,softSuspicious:m})}function aF(a,b){let c=[],d=["factuality","structure","depth","executable","specificity","consistency"];for(let f of a){var e;let a=f.content;if(800>(0,g.V7)(a))continue;let h=(e=f.title,/概况|工程|项目/u.test(e)?{min:5,focus:"事实依据、项目特异性"}:/部署|总体|组织/u.test(e)?{min:6,focus:"组织结构、可执行闭环、跨章一致性"}:/进度|工期/u.test(e)?{min:6,focus:"进度结构、工期一致性、纠偏机制"}:/质量/u.test(e)?{min:6,focus:"质量深度、验收复验、资料闭环"}:/安全|文明|危大|风险/u.test(e)?{min:6,focus:"风险覆盖、应急响应、检查整改"}:/资源|材料|设备|劳动力/u.test(e)?{min:5,focus:"资源依据、进场调配、进度支撑"}:{min:4,focus:"事实依据、专业深度、可执行性"}),i=b?.get(f.title);if(!i)continue;let j=2*d.filter(a=>i.dimensions[a]).length;if(j<h.min){let a=d.filter(a=>!i.dimensions[a]).join("、")||h.focus;c.push({level:"error",message:`${f.title} 专业评分不足:${j}/12,薄弱维度:${a}`,suggestion:`请按章节任务卡补齐${h.focus},并写出资料依据、实施流程、专业控制点和检查整改闭环。`,chapterId:f.id})}}return c}function aG(a,b){let c=[{re:/进度|工期/u,needKey:"schedule",need:/关键线路|穿插|纠偏|资源保障|节点|动态调整/u,message:"进度工期章节缺少关键线路、穿插施工或纠偏保障内容"},{re:/质量/u,needKey:"quality",need:/材料.*验收|复验|隐蔽验收|整改.*复验|质量.*资料|检验批/u,message:"质量章节缺少材料验收复验、隐蔽验收或整改复验闭环"},{re:/安全|文明|危大|风险/u,needKey:"safety",need:/风险|临电|消防|应急|检查.*整改|文明施工|人员|设备/u,message:"安全文明章节缺少风险识别、现场控制或应急检查闭环"},{re:/资源|材料|设备|劳动力/u,needKey:"resource",need:/进场|验收|调配|保管|供应|投入计划/u,message:"资源章节缺少进场、验收、调配或保管计划"},{re:/施工|工艺|技术|方案/u,needKey:"construction",need:/准备|流程|工艺|控制点|验收|交底/u,message:"施工技术章节缺少施工准备、工艺流程、控制点或验收要求"}],d=[];for(let e of a){if(600>(0,g.V7)(e.content))continue;let a=b?.get(e.title);if(a)for(let b of c)b.re.test(e.title)&&(a.contentNeeds[b.needKey]||d.push({level:"error",message:`${e.title}:${b.message}`,suggestion:"请按专业任务卡定向补写该章节,补齐可实施的控制措施、资料依据和闭环要求。",chapterId:e.id}))}return d}function aH(a,b){return!!(/万元|元|报价|单价|合价|综合单价|预留金|税率|增值税|利润|结算/u.test(`${a} ${b}`)||/OCR|识别错误|乱码|无法确认|疑似|不确定|语义断裂|页码|目录/u.test(b)||/^\d+$/.test(a)&&10>Number(a)||/之日起.{0,8}天内|天内.{0,10}(?:发出|提交|通知|回复|答复|完成|开工|竣工|报送|支付|更换)|天以上|天及以上|‰|暂扣|履约保证金|通过后.{0,6}天|因发包人原因|因承包人原因|未能按时|逾期|违约金/u.test(b))}function aI(a,b){let c=0;for(let d of a)b.includes(d.replace(e.ug,""))&&(c+=1);return c}let aJ=/日历天|个月|㎡|m²|m3|m³|MPa|kPa|kN|GB\/T|GB|JGJ|ISO|DN|φ|Φ|米\/秒|天$/u;async function aK(a,b,c=[]){let d=[],g=a.replace(e.ug,""),h=function(a){let b=new Set;for(let c of a)for(let a of c.evidence||[]){if(/bill_of_quantities|boq/u.test(`${a.roleId||""}`))continue;let c="string"==typeof a.content?a.content:"";for(let a of c.matchAll(e.No)){let d=a[0].trim();if(!d||/^\d{4}\s*年$/u.test(d)||/^\d{1,2}\s*月$/u.test(d))continue;let e=a.index||0,f=c.slice(Math.max(0,e-40),e+d.length+40);aH(d,f)||b.add(d)}}return[...b]}(c),i=h.length>=e.mu?h:function(a){let b=new Set;for(let c of a.preciseFacts){if("bill_of_quantities"===c.roleId)continue;let a=`${c.processingType||""} ${c.roleId} ${c.sourceFile}`;if(!e.FM.test(a)&&"precise_fact"!==c.roleId)continue;let d=`${c.key} ${c.fieldName||""} ${c.value}`;for(let a of d.matchAll(e.No)){let c=a[0].trim();aH(c,d)||b.add(c)}}return[...b]}(b),j=aI(i,g);i.length>=e.mu&&j/i.length<e.tg&&d.push({level:"warning",message:`可靠精确参数使用不足:${j}/${i.length}`,suggestion:"请将资料中可靠的规格、参数、数量、时间、比例和标准编号写入对应章节;商务金额、单价、税率、预留金不得写入正文。"});let k=function(a){let b=[...a].sort((a,b)=>a.localeCompare(b,"zh")),c=b.filter(a=>aJ.test(a)),d=b.filter(a=>!aJ.test(a));return[...c.slice(0,8),...d.slice(0,2)].slice(0,10)}(i);if(k.length>=6){let b=aI(k,g),c=k.filter(a=>!g.includes(a.replace(e.ug,"")));if(c.length>0&&b/k.length<.5){let d=a.split(/[。;;|]/u).map(a=>a.trim()).filter(a=>a.length>=6&&a.length<=160).slice(0,300);if(d.length>0){let a=await (0,f.Mv)(c.slice(0,10),d);c=c.filter(b=>!d.some(c=>a(b,c)>=.6)),b=k.length-c.length}}if(b/k.length<.5){let a=c.slice(0,3);d.push({level:"error",message:`可靠精确参数使用不足:关键参数抽查 ${b}/${k.length}${a.length?`(缺失如 ${a.join("、")})`:""}`,suggestion:"请将资料中的关键工程参数(工期、面积、强度等级、材料规格、规范编号等)写入正文对应章节,不得因参数总量达标而遗漏核心参数。"})}}return b.bills.length>0&&!e.pP.test(a)&&d.push({level:"error",message:"正文未体现结构化数据资料",suggestion:"请从表格、列表或明细中提取对象、单位、数量、规格和关键参数补入对应章节。"}),b.drawings.length>0&&!e._U.test(a)&&d.push({level:"error",message:"正文未体现设计/方案/说明类资料",suggestion:"请从设计、方案或说明资料中提取对象、流程、节点、做法、配置、规则和标准要求。"}),d}async function aL(a,b,c){let d=[],e=c.tables||[];if(0===e.length)return d;let g=a.replace(/\s+/gu,"").toLowerCase(),h=0,i=0,j=[];for(let a of e){let b=a.headers.map(a=>a.replace(/\s+/gu,"").toLowerCase()),c=b.findIndex(a=>/^(?:项目名称|名称|清单项名称|清单项|分部分项(?:工程)?名称|项目特征)/u.test(a)),d=b.findIndex(a=>/^(?:项目编码|编码|编号)/u.test(a)),e=b.findIndex(a=>/^工程量$|^数量$/u.test(a));for(let b of a.rows){h+=1;let a=c>=0?(b[c]||"").replace(/\s+/gu,""):"",f=d>=0?(b[d]||"").replace(/\s+/gu,""):"",k=e>=0?(b[e]||"").replace(/\s+/gu,""):"";if(!a&&!f){let c=b.findIndex(a=>/^\d{10,12}$/u.test(a)||/^[A-Z]{1,3}\d{8,}$/u.test(a));c>=0&&(f=b[c].replace(/\s+/gu,""),a=(b[c+1]||"").replace(/\s+/gu,""))}let l=a.length>=3?a.slice(0,Math.min(a.length,16)):"",m=f.length>=3?f.slice(0,Math.min(f.length,12)):"",n=l&&g.includes(l),o=m&&g.includes(m);n||o?i+=1:a.length>=3&&j.push({name:a,quantity:k})}}if(0===h)return d;let k=new Set;if(j.length>0&&i/h<.6){let b=a.split(/[。;;|]/u).map(a=>a.trim()).filter(a=>a.length>=6&&a.length<=160).slice(0,300),c=[...new Set(j.map(a=>a.name))].slice(0,30);if(b.length>0&&c.length>0){let a=await (0,f.Mv)(c,b);for(let d of c)b.some(b=>a(d,b)>=.6)&&k.add(d)}}let l=i+j.filter(a=>k.has(a.name)).length,m=j.filter(a=>!k.has(a.name)),n=l/h,o=m.length>0?`未落位项(共${m.length}项):${m.slice(0,30).map(a=>`${a.name.slice(0,40)}${a.quantity?` ${a.quantity}`:""}(未落位)`).join(";")}${m.length>30?` 及其他${m.length-30}项(同类项按已列名称分组归并补写)`:""}`:"";return n<.6&&d.push({level:"error",message:`清单项落位不足:${l}/${h} 项(${Math.round(100*n)}%)${o?`。${o}`:""}`,suggestion:`请将未落位清单项按专业工程分组补写进对应章节"主要施工内容"小节(施工概况/施工流程/施工方法),优先落位主要分部分项、关键规格与大额工程量。${o}`}),d}function aM(a,b){let c=[],d=b.drawings||[];if(0===d.length)return c;let e=a.replace(/\s+/gu,"").toLowerCase(),f=[...new Set(d.map(a=>a.sourceFile||"").filter(Boolean))],g=0,h=[];for(let a of f){let b=a.replace(/\.[^.]+$/u,"").replace(/[/\\]/gu,"").toLowerCase(),c=a.split("/").pop()||a;(b.length>=3?e.includes(b.slice(0,Math.min(b.length,12))):/图纸|设计|说明|节点|做法|构造/u.test(e))?g+=1:h.push(c)}if(f.length>0){let a=g/f.length;a<.25?c.push({level:"warning",message:`图纸引用严重不足:${g}/${f.length} 份图纸被正文引用(${Math.round(100*a)}%)`,suggestion:`建议将图纸中的设计说明、构造做法、材料规格和设备参数写入对应章节。未引用图纸:${h.slice(0,5).join("、")}`}):a<.5&&c.push({level:"warning",message:`图纸引用不足:${g}/${f.length} 份(${Math.round(100*a)}%)`,suggestion:`建议补充引用:${h.slice(0,5).join("、")}`})}return c}function aN(a){let b=[];for(let c of(/【本小节生成未达标,需重新生成】/u.test(a)&&b.push({level:"error",message:"生成未完成:存在未达标小节,需要重新生成或补写后才能导出",suggestion:"请重新生成未达标小节,禁止将占位内容作为正式正文。"}),e.IA))c.test(a)&&b.push({level:"warning",message:`存在占位式表达:${c.source}`,suggestion:"请改写为来自资料的准确事实;资料确实未提供时,改写为正式管理措施,不留空值或“见资料/按文件”。"});return b}function aO(a,b){for(let c of b)try{if(RegExp(c,"iu").test(a))return!0}catch{if(a.includes(c))return!0}return!1}function aP(a,b){let c=`${b.name} ${b.category} ${b.outputTitle} ${b.description}`,f=[];for(let a of(0,d.V)().autoSpecGates)aO(c,a.templateMatchers)&&f.push(a);if(0===f.length)return[];let g=[],h=z(a).length,i=0;for(let b of f){for(let c of(i=Math.max(i,b.minTables||0),b.requiredTexts))a.includes(c)||g.push({level:"warning",message:`配置要求缺少必要内容:${c}`,suggestion:"请按当前模板匹配的专业规则补齐必要内容。"});for(let c of b.forbiddenTexts)(function(a,b){let c="见图纸"===b||"按图纸"===b?["目录","清单","索引","汇总"]:[],d=0;for(;;){let e=a.indexOf(b,d);if(e<0)return!1;let f=a.slice(e+b.length);if(c.some(a=>f.startsWith(a))){d=e+b.length;continue}return!0}})(a,c)&&g.push({level:"error",message:`配置要求不得出现:${c}`,suggestion:"请根据当前模板匹配的专业规则清理正文污染内容。"})}return e.bu.test(a)&&g.push({level:"error",message:"正式正文存在 Markdown 标题符号 #",suggestion:"导出正文应去除 Markdown 标题符号,保留正式标题文字。"}),i&&h<i&&g.push({level:"warning",message:`配置要求正式表格不足:${h}/${i}`,suggestion:"如用户提示词或章节内容要求表格,应按项目资料补充对应表格本体。"}),g}function aQ(a){let b=`${a.name} ${a.category} ${a.outputTitle} ${a.description}`,c=new Set;for(let a of(0,d.V)().autoSpecGates)if(aO(b,a.templateMatchers))for(let b of a.requiredTexts)b&&c.add(b);return[...c]}function aR(a,b,c,d,f,h,i){var j;if(!a)return b;let l=[...b],m=function(a){let b=[...a.project,...a.schedule,...a.quality,...a.safety,...a.resources];for(let c of Object.values(a.schemaFacts))b.push(...c);return b}(c),n=function(a,b){let c=new Set;for(let a of b)c.add(a.key),a.fieldName&&c.add(a.fieldName);for(let b of a.tables){for(let a of b.headers)c.add(a);for(let a of b.rows)for(let b of a)c.add(b)}return c}(c,m),o=new Set(d.map(a=>a.title));for(let b of a.factFields){if(!b.required||(j=b.name,/国家法律法规|地方法规|规章|规范标准|标准规范|行业标准|现行规范|法律法规|合规|施工方法|工艺流程|质量控制|安全文明|应急|劳动力|材料投入|机械设备|检测仪器|关键节点/u.test(j)))continue;let a=c.schemaFacts[b.id]||[],e=!1,f=!b.sourceRoleIds?.length||a.some(a=>b.sourceRoleIds?.includes(a.roleId));for(let a of d){if(e&&f)break;for(let c of a.evidence)!e&&!a.missingFacts.includes(b.name)&&(0,k.I2)(c,b)&&(e=!0),!f&&(0,k.I2)(c,b)&&(f=!0)}0!==a.length||n.has(b.name)||e||l.push({level:"warning",message:`系统暂未从知识库确认必需事实:${b.name}`,suggestion:b.extractionHint||"请扩大本地知识库检索、执行事实补抽,或调整事实字段配置。"}),f||l.push({level:"warning",message:`必需事实来源角色不匹配:${b.name}`,suggestion:`请确认该事实来自角色:${b.sourceRoleIds?.join("、")}`})}for(let b of a.chapterRules){let a=d.find(a=>a.title===b.title);a&&b.minWords&&a.content.length<b.minWords&&l.push({level:"warning",message:`章节内容深度建议:${b.title}`,suggestion:`可扩展到约 ${b.minWords} 字,但不要改变模板章节结构。`})}let p=z(f),q=function(a){let b=[];for(let c of a.matchAll(e.gW))b.push({alt:c[1]||"",url:c[2]||"",index:c.index??0});return b}(f),r=(0,g.Cv)(f);for(let b of a.gateRules){let a=b.evaluator?b.evaluator:e.cA[b.type]?.(b)??{subject:"document",operator:"contains",value:b.value||b.target},g=a.target||b.target||"",j=a.value||b.value||g,k=d.find(a=>a.title===g),s=function(a){for(let c of e.Lp){let d=c(a);if(d){var b;return{level:a.rule.level,message:(b=a.rule,`${b.name}:${d}`)}}}}({rule:b,evaluator:a,target:g,value:j,min:a.min||Number(b.value)||1,markdown:f,textScope:"chapter"===a.subject&&k?k.content:f,regex:j?function(a){try{return RegExp(a,"iu")}catch{return}}(j):void 0,chapter:k,factNames:n,chapterTitles:o,tableBlocks:p,imageRefs:q,estimatedPages:r,allFacts:m,factsModel:c,projectBindings:h,promptBindings:i});s&&l.push(s)}return l}function aS(a,b){let c=function(a){let b="";for(let c of(0,l.dU)(a))c.content&&(b+=`${c.content}
|
|
2
2
|
|
|
3
|
-
`);return b}(b);if(!c.trim())return[];let d=a.replace(e.ug," ");for(let a of c.matchAll(e.QX)){let b=(a[1]||"").replace(e.ug," ").trim();if(b&&d.includes(b))return[{level:"error",message:"正文疑似包含提示词示例内容",suggestion:"请删除提示词样例数据,仅保留基于当前绑定材料生成的正文。"}]}return[]}},30355:(a,b,c)=>{c.d(b,{$8:()=>w,NP:()=>t,P9:()=>j,Wz:()=>z,bT:()=>v,jH:()=>y,up:()=>u});var d=c(22157),e=c(78217),f=c(18274),g=c(37047),h=c(70208),i=c(71001);let j=["知识库","系统暂未","项目资料暂未","资料未明确","暂未明确","待确认","待资料复核","待系统","未检索到","资料不足","无法确认","建议补充","不适用","COL","可核验信息","工作包",...d.Kd];function k(a){return a.replace(/\s+/gu,"").toLowerCase()}function l(a){return`${a.fieldId||""} ${a.fieldName||""} ${a.key} ${(0,d.lG)(a.value)}`.replace(/\s+/gu," ").trim()}function m(a){return(0,d.lG)(a.value).replace(/\s+/gu," ").trim()}function n(a,b){let c=k(l(a));return b.split(/[\s、,,;;::()()【】[-]+/u).filter(a=>a.length>=2).some(a=>c.includes(k(a)))}function o(a,b){let c=[...a.works.map(a=>`工程:${a.name} ${a.scope}`),...a.methods.map(a=>`工法:${a.name} ${(a.applicableWorks||[]).join("、")}`),...a.resources.map(a=>`资源:${a.name} ${a.spec} ${a.quantity}${a.unit}`),...a.schedule.map(a=>`工期:${a.milestone} ${a.duration}`),...a.standards.map(a=>`标准:${a.code} ${a.description}`),...a.risks.map(a=>`风险:${a.risk} ${a.mitigation}`),...a.requirements.map(a=>`要求:${a.category} ${a.detail}`),...a.siteConditions.map(a=>`现场:${a.condition} ${a.impact}`)],d=k(b);return c.filter(a=>k(a).includes(d)||b.split(/[\s、,,;;::()()【】[-]+/u).filter(a=>a.length>=2).some(b=>k(a).includes(k(b))))}let p=[{keywords:"安全 文明 危大 风险 应急 临边 洞口 消防 临电 高处 起重 吊装 基坑 脚手架 模板 支护 图纸 施工说明 审查意见",prototype:"安全生产 文明施工 危大工程 应急预案 风险管控"},{keywords:"工期 日历天 节点 进度 计划 开工 竣工 关键线路",prototype:"施工工期 进度计划 关键节点 开工时间 竣工时间"},{keywords:"质量 验收 合格 标准 规范 检验批 隐蔽 复试 样板",prototype:"质量验收 质量目标 检验批 隐蔽工程 材料复试"},{keywords:"清单 工程量 材料 设备 机械 劳动力 规格 型号 数量 单位",prototype:"人材机资源 劳动力配置 材料供应 设备机械 工程量清单"},{keywords:"工程名称 项目名称 建设地点 建筑面积 建设规模 招标范围 施工范围",prototype:"工程概况 项目概况 建设地点 建设规模 招标范围"},{keywords:"施工 组织 部署 区段 流水 作业面 工序 穿插 图纸 清单",prototype:"施工部署 流水施工 施工区段 工序穿插"}];async function q(a,b){let c,d=new Map;if(0===a.length)return d;let e=p.map(a=>a.prototype);try{c=await (0,g.Mv)(a,e,b)}catch{return d}for(let b of a){let a=[];for(let d of p)c(b,d.prototype)>=.35&&a.push(d.keywords);a.length>0&&d.set(b,a)}return d}function r(a){let b=[];return/重点|难点|危大|风险|安全|应急/u.test(a)&&b.push("安全 文明 危大 风险 应急 临边 洞口 消防 临电 高处 起重 吊装 基坑 脚手架 模板 支护 图纸 施工说明 审查意见"),/工期|进度|节点|计划/u.test(a)&&b.push("工期 日历天 节点 进度 计划 开工 竣工 关键线路"),/质量|验收|标准|实测|通病/u.test(a)&&b.push("质量 验收 合格 标准 规范 检验批 隐蔽 复试 样板"),/资源|材料|机械|设备|人材机|人[、,,]材[、,,]机/u.test(a)&&b.push("清单 工程量 材料 设备 机械 劳动力 规格 型号 数量 单位"),/概况|说明|依据|范围/u.test(a)&&b.push("工程名称 项目名称 建设地点 建筑面积 建设规模 招标范围 施工范围"),/部署|施工|流水|区段|组织/u.test(a)&&b.push("施工 组织 部署 区段 流水 作业面 工序 穿插 图纸 清单"),b}function s(a){return/项目特点.*重点.*难点|重点.*难点.*分析/u.test(a)?"系统识别本项目特点、施工重点、施工难点、形成原因、影响范围和应对措施,必须落位项目规模、结构形式、工期、专业范围、现场约束等具体事实,并为“项目主要施工内容”提供逐项对应依据。":/项目主要施工内容/u.test(a)?"按专业工程和关键工序展开施工内容,必须逐项响应“项目特点、重点、难点分析”中的重点难点,说明施工范围、实施内容、控制措施、验收节点和资料闭环。":/工期|进度|节点|计划/u.test(a)?"使用项目工期、节点和资源事实说明进度组织要求。":/质量|验收|标准|实测/u.test(a)?"使用项目质量目标、验收标准和工序事实说明质量控制要求。":/安全|危大|风险|应急/u.test(a)?"使用项目风险、危大工程和安全文明事实说明安全管控要求。":/资源|材料|机械|人材机/u.test(a)?"使用清单、材料、设备和劳动力事实说明资源配置要求。":/概况|说明|依据/u.test(a)?"使用项目基础事实说明编制边界和工程概况。":"使用已确认项目事实形成正式施工组织内容。"}async function t(a){let b=Date.now(),c=a.template.chapters.map(a=>{let b=(a.sections?.length?a.sections:[a.title]).map(a=>(0,i.EN)(a)).filter(a=>a.trim().length>0&&!(0,h.ob)(a));return{chapter:a,sectionTitles:b.length>0?b:[a.title],requiredFacts:[...new Set([...a.requiredFacts||[],a.title])],evidenceQueries:[...new Set([a.title,...a.queries||[],...a.requiredFacts||[]])]}}),e=[...new Set([...c.map(a=>a.chapter.title),...c.flatMap(a=>a.sectionTitles)])],f="0"!==process.env.DOCUMENT_QUERY_EXPANSION_SEMANTIC?await q(e,a.embedDocuments):new Map,g=c.map(({chapter:a,sectionTitles:b,requiredFacts:c,evidenceQueries:d})=>{let e=f.get(a.title)||[];return{chapterId:a.id,title:a.title,purpose:a.purpose||s(a.title),requiredFacts:c,requiredGraphNodes:[a.title],evidenceQueries:d,qualityRules:["项目专属事实必须来自锁定资料范围,不得混入其他项目名称","法规规范等公共知识不受锁定范围限制","不得出现后台话术和兜底措辞","章节必须覆盖规划小节"],forbiddenPhrases:j,sections:b.map(b=>({title:b,objective:s(b),requiredFacts:[...new Set([b,...a.requiredFacts||[]])],requiredGraphNodes:[b],evidenceQueries:function(a,b,c,d){let e=r(a.title),f=r(b);return[...new Set([a.title,b,...c,...d,...e.filter(a=>!c.includes(a)),...f.filter(a=>!d.includes(a)),...a.queries||[],...a.requiredFacts||[]].filter(Boolean))]}(a,b,e,f.get(b)||[]),forbiddenPhrases:j,minChars:/项目特点.*重点.*难点|重点.*难点.*分析/u.test(b)?1800:/项目主要施工内容|主要分部分项工程施工方案|主要施工方法/u.test(b)?2200:/原材料进场复试|见证取样|危大工程专项施工方案审批流程/u.test(b)?800:/施工部署|施工流水|主要施工机械|劳动力|材料进场|资源动态|质量控制点|危大工程|安全隐患|临时用水|临时用电/u.test(b)?760:/概况|说明|依据/u.test(b)?260:420}))}});return{plan:{planId:`plan-${(0,d.c6)({templateId:a.template.id,scope:a.context.materialScope.scopeHash,chapters:g.map(a=>a.title)}).slice(0,10)}`,title:a.title||a.template.name,chapters:g,requiredGlobalFacts:["项目名称","工期","质量标准","招标范围"],forbiddenPhrases:j,qualityRules:["资料范围先锁定","基础图谱必跑","章节任务先于正文","Reviewer 通过后才能导出"]},node:{id:"document-planner",type:"document_planner",status:"completed",startedAt:b,completedAt:Date.now(),outputSummary:`${g.length} 章、${g.reduce((a,b)=>a+b.sections.length,0)} 条细目任务`,metrics:{chapters:g.length}}}}function u(a){let b=Date.now(),c=a.plan.chapters.find(b=>b.chapterId===a.chapter.id)||a.plan.chapters.find(b=>b.title===a.chapter.title);if(!c)throw Error(`缺少章节计划:${a.chapter.title}`);let e=a.context.facts.filter(a=>c.evidenceQueries.some(b=>n(a,b))||c.requiredFacts.some(b=>n(a,b))),f=c.sections.map(b=>{let e=1===c.sections.length&&b.title===a.chapter.title,f=a.context.facts.filter(a=>b.evidenceQueries.some(b=>n(a,b))||b.requiredFacts.some(b=>n(a,b))).slice(0,24),g=a.evidence.filter(a=>b.evidenceQueries.some(b=>(function(a,b){let c=k(`${a.sectionTitle||""} ${a.content||""} ${a.filePath||""}`);return b.split(/[\s、,,;;::()()【】[-]+/u).filter(a=>a.length>=2).some(a=>c.includes(k(a)))})(a,b))).slice(0,24),h=b.requiredGraphNodes.flatMap(b=>o(a.context.baseProjectGraph,b)).slice(0,12);e&&(0===g.length&&(g=a.evidence.slice(0,24)),0===h.length&&(h=o(a.context.baseProjectGraph,a.chapter.title).slice(0,12)));let i=[];return/法律法规|法规|规章|规范标准|标准规范|行业标准|现行规范|编制依据/u.test(b.title)||0!==g.length||0!==f.length||0!==h.length||i.push({level:"error",severity:"blocker",category:"evidence_coverage",owner:"system",message:`${b.title} 缺少事实、图谱或证据支撑`,suggestion:"应先定向检索和抽取事实,不能生成占位正文。"}),{...b,factIds:f.map(a=>(0,d.c6)({key:a.key,value:(0,d.lG)(a.value),sourceFile:a.sourceFile}).slice(0,12)),evidenceIds:g.map(a=>(0,d.c6)({filePath:a.filePath,content:a.content.slice(0,160),score:a.score}).slice(0,12)),graphNodeIds:h.map(a=>(0,d.c6)(a).slice(0,12)),ready:0===i.length,issues:i}}),g=f.flatMap(a=>a.issues),h={taskId:`chapter-task-${(0,d.c6)({plan:a.plan.planId,chapter:a.chapter.id,evidence:a.evidence.map(a=>(0,d.c6)({filePath:a.filePath,content:a.content.slice(0,120),score:a.score}))}).slice(0,10)}`,chapterId:a.chapter.id,title:a.chapter.title,facts:e.slice(0,48),evidence:a.evidence.slice(0,48),graphContext:o(a.context.baseProjectGraph,a.chapter.title).slice(0,20).join("\n"),sections:f,ready:0===g.length,issues:g};return{task:h,node:{id:`chapter-task-${a.chapter.id}`,type:"chapter_task_planner",status:h.ready?"completed":"failed",startedAt:b,completedAt:Date.now(),outputSummary:`${h.sections.filter(a=>a.ready).length}/${h.sections.length} 条细目任务就绪`,metrics:{facts:h.facts.length,evidence:h.evidence.length,issues:g.length},issues:g}}}function v(a){let b=a.facts.slice(0,18).map(a=>`- ${a.key}:${m(a)}${a.sourceFile?`(来源:${a.sourceFile})`:""}`).join("\n"),c=a.sections.map((a,b)=>`${b+1}. 必须输出三级标题:### ${a.title}
|
|
3
|
+
`);return b}(b);if(!c.trim())return[];let d=a.replace(e.ug," ");for(let a of c.matchAll(e.QX)){let b=(a[1]||"").replace(e.ug," ").trim();if(b&&d.includes(b))return[{level:"error",message:"正文疑似包含提示词示例内容",suggestion:"请删除提示词样例数据,仅保留基于当前绑定材料生成的正文。"}]}return[]}},30355:(a,b,c)=>{c.d(b,{$8:()=>w,NP:()=>t,P9:()=>j,Wz:()=>z,bT:()=>v,jH:()=>y,up:()=>u});var d=c(22157),e=c(78217),f=c(18274),g=c(37047),h=c(70208),i=c(71001);let j=["知识库","系统暂未","项目资料暂未","资料未明确","暂未明确","待确认","待资料复核","待系统","未检索到","资料不足","无法确认","建议补充","不适用","COL","可核验信息","工作包",...d.Kd];function k(a){return a.replace(/\s+/gu,"").toLowerCase()}function l(a){return`${a.fieldId||""} ${a.fieldName||""} ${a.key} ${(0,d.lG)(a.value)}`.replace(/\s+/gu," ").trim()}function m(a){return(0,d.lG)(a.value).replace(/\s+/gu," ").trim()}function n(a,b){let c=k(l(a));return b.split(/[\s、,,;;::()()【】[-]+/u).filter(a=>a.length>=2).some(a=>c.includes(k(a)))}function o(a,b){let c=[...a.works.map(a=>`工程:${a.name} ${a.scope}`),...a.methods.map(a=>`工法:${a.name} ${(a.applicableWorks||[]).join("、")}`),...a.resources.map(a=>`资源:${a.name} ${a.spec} ${a.quantity}${a.unit}`),...a.schedule.map(a=>`工期:${a.milestone} ${a.duration}`),...a.standards.map(a=>`标准:${a.code} ${a.description}`),...a.risks.map(a=>`风险:${a.risk} ${a.mitigation}`),...a.requirements.map(a=>`要求:${a.category} ${a.detail}`),...a.siteConditions.map(a=>`现场:${a.condition} ${a.impact}`)],d=k(b);return c.filter(a=>k(a).includes(d)||b.split(/[\s、,,;;::()()【】[-]+/u).filter(a=>a.length>=2).some(b=>k(a).includes(k(b))))}let p=[{keywords:"安全 文明 危大 风险 应急 临边 洞口 消防 临电 高处 起重 吊装 基坑 脚手架 模板 支护 图纸 施工说明 审查意见",prototype:"安全生产 文明施工 危大工程 应急预案 风险管控"},{keywords:"工期 日历天 节点 进度 计划 开工 竣工 关键线路",prototype:"施工工期 进度计划 关键节点 开工时间 竣工时间"},{keywords:"质量 验收 合格 标准 规范 检验批 隐蔽 复试 样板",prototype:"质量验收 质量目标 检验批 隐蔽工程 材料复试"},{keywords:"清单 工程量 材料 设备 机械 劳动力 规格 型号 数量 单位",prototype:"人材机资源 劳动力配置 材料供应 设备机械 工程量清单"},{keywords:"工程名称 项目名称 建设地点 建筑面积 建设规模 招标范围 施工范围",prototype:"工程概况 项目概况 建设地点 建设规模 招标范围"},{keywords:"施工 组织 部署 区段 流水 作业面 工序 穿插 图纸 清单",prototype:"施工部署 流水施工 施工区段 工序穿插"}];async function q(a,b){let c,d=new Map;if(0===a.length)return d;let e=p.map(a=>a.prototype);try{c=await (0,g.Mv)(a,e,b)}catch{return d}for(let b of a){let a=[];for(let d of p)c(b,d.prototype)>=.35&&a.push(d.keywords);a.length>0&&d.set(b,a)}return d}function r(a){let b=[];return/重点|难点|危大|风险|安全|应急/u.test(a)&&b.push("安全 文明 危大 风险 应急 临边 洞口 消防 临电 高处 起重 吊装 基坑 脚手架 模板 支护 图纸 施工说明 审查意见"),/工期|进度|节点|计划/u.test(a)&&b.push("工期 日历天 节点 进度 计划 开工 竣工 关键线路"),/质量|验收|标准|实测|通病/u.test(a)&&b.push("质量 验收 合格 标准 规范 检验批 隐蔽 复试 样板"),/资源|材料|机械|设备|人材机|人[、,,]材[、,,]机/u.test(a)&&b.push("清单 工程量 材料 设备 机械 劳动力 规格 型号 数量 单位"),/概况|说明|依据|范围/u.test(a)&&b.push("工程名称 项目名称 建设地点 建筑面积 建设规模 招标范围 施工范围"),/部署|施工|流水|区段|组织/u.test(a)&&b.push("施工 组织 部署 区段 流水 作业面 工序 穿插 图纸 清单"),b}function s(a){return/项目特点.*重点.*难点|重点.*难点.*分析/u.test(a)?"系统识别本项目特点、施工重点、施工难点、形成原因、影响范围和应对措施,必须落位项目规模、结构形式、工期、专业范围、现场约束等具体事实,并为“项目主要施工内容”提供逐项对应依据。":/项目主要施工内容/u.test(a)?"按专业工程和关键工序展开施工内容,必须逐项响应“项目特点、重点、难点分析”中的重点难点,说明施工范围、实施内容、控制措施、验收节点和资料闭环。":/工期|进度|节点|计划/u.test(a)?"使用项目工期、节点和资源事实说明进度组织要求。":/质量|验收|标准|实测/u.test(a)?"使用项目质量目标、验收标准和工序事实说明质量控制要求。":/安全|危大|风险|应急/u.test(a)?"使用项目风险、危大工程和安全文明事实说明安全管控要求。":/资源|材料|机械|人材机/u.test(a)?"使用清单、材料、设备和劳动力事实说明资源配置要求。":/概况|说明|依据/u.test(a)?"使用项目基础事实说明编制边界和工程概况。":"使用已确认项目事实形成正式施工组织内容。"}async function t(a){let b=Date.now(),c=a.template.chapters.map(a=>{let b=(a.sections?.length?a.sections:[a.title]).map(a=>(0,i.EN)(a)).filter(a=>a.trim().length>0&&!(0,h.ob)(a));return{chapter:a,sectionTitles:b.length>0?b:[a.title],requiredFacts:[...new Set([...a.requiredFacts||[],a.title])],evidenceQueries:[...new Set([a.title,...a.queries||[],...a.requiredFacts||[]])]}}),e=[...new Set([...c.map(a=>a.chapter.title),...c.flatMap(a=>a.sectionTitles)])],f="0"!==process.env.DOCUMENT_QUERY_EXPANSION_SEMANTIC?await q(e,a.embedDocuments):new Map,g=c.map(({chapter:a,sectionTitles:b,requiredFacts:c,evidenceQueries:d})=>{let e=f.get(a.title)||[];return{chapterId:a.id,title:a.title,purpose:a.purpose||s(a.title),requiredFacts:c,requiredGraphNodes:[a.title],evidenceQueries:d,qualityRules:["项目专属事实必须来自锁定资料范围,不得混入其他项目名称","法规规范等公共知识不受锁定范围限制","不得出现后台话术和兜底措辞","章节必须覆盖规划小节"],forbiddenPhrases:j,sections:b.map(b=>({title:b,objective:s(b),requiredFacts:[...new Set([b,...a.requiredFacts||[]])],requiredGraphNodes:[b],evidenceQueries:function(a,b,c,d){let e=r(a.title),f=r(b);return[...new Set([a.title,b,...c,...d,...e.filter(a=>!c.includes(a)),...f.filter(a=>!d.includes(a)),...a.queries||[],...a.requiredFacts||[]].filter(Boolean))]}(a,b,e,f.get(b)||[]),forbiddenPhrases:j,minChars:/项目特点.*重点.*难点|重点.*难点.*分析/u.test(b)?1800:/项目主要施工内容|主要分部分项工程施工方案|主要施工方法/u.test(b)?2200:/原材料进场复试|见证取样|危大工程专项施工方案审批流程/u.test(b)?800:/施工部署|施工流水|主要施工机械|劳动力|材料进场|资源动态|质量控制点|危大工程|安全隐患|临时用水|临时用电/u.test(b)?760:/概况|说明|依据/u.test(b)?260:420}))}});return{plan:{planId:`plan-${(0,d.c6)({templateId:a.template.id,scope:a.context.materialScope.scopeHash,chapters:g.map(a=>a.title)}).slice(0,10)}`,title:a.title||a.template.name,chapters:g,requiredGlobalFacts:["项目名称","工期","质量标准","招标范围"],forbiddenPhrases:j,qualityRules:["资料范围先锁定","基础图谱必跑","章节任务先于正文","Reviewer 通过后才能导出"]},node:{id:"document-planner",type:"document_planner",status:"completed",startedAt:b,completedAt:Date.now(),outputSummary:`${g.length} 章、${g.reduce((a,b)=>a+b.sections.length,0)} 条细目任务`,metrics:{chapters:g.length}}}}function u(a){let b=Date.now(),c=a.plan.chapters.find(b=>b.chapterId===a.chapter.id)||a.plan.chapters.find(b=>b.title===a.chapter.title);if(!c)throw Error(`缺少章节计划:${a.chapter.title}`);let e=a.context.facts.filter(a=>c.evidenceQueries.some(b=>n(a,b))||c.requiredFacts.some(b=>n(a,b))),f=c.sections.map(b=>{let e=1===c.sections.length&&b.title===a.chapter.title||/人[、,,]材[、,,]机/u.test(a.chapter.title)&&/^(?:确保\s*)?[人材机](?:员|力|料|械|工)?\s*的保障体系与措施$/u.test(b.title),f=a.context.facts.filter(a=>b.evidenceQueries.some(b=>n(a,b))||b.requiredFacts.some(b=>n(a,b))).slice(0,24),g=a.evidence.filter(a=>b.evidenceQueries.some(b=>(function(a,b){let c=k(`${a.sectionTitle||""} ${a.content||""} ${a.filePath||""}`);return b.split(/[\s、,,;;::()()【】[-]+/u).filter(a=>a.length>=2).some(a=>c.includes(k(a)))})(a,b))).slice(0,24),h=b.requiredGraphNodes.flatMap(b=>o(a.context.baseProjectGraph,b)).slice(0,12);e&&(0===g.length&&(g=a.evidence.slice(0,24)),0===h.length&&(h=o(a.context.baseProjectGraph,a.chapter.title).slice(0,12)));let i=[];return/法律法规|法规|规章|规范标准|标准规范|行业标准|现行规范|编制依据/u.test(b.title)||0!==g.length||0!==f.length||0!==h.length||i.push({level:"error",severity:"blocker",category:"evidence_coverage",owner:"system",message:`${b.title} 缺少事实、图谱或证据支撑`,suggestion:"应先定向检索和抽取事实,不能生成占位正文。"}),{...b,factIds:f.map(a=>(0,d.c6)({key:a.key,value:(0,d.lG)(a.value),sourceFile:a.sourceFile}).slice(0,12)),evidenceIds:g.map(a=>(0,d.c6)({filePath:a.filePath,content:a.content.slice(0,160),score:a.score}).slice(0,12)),graphNodeIds:h.map(a=>(0,d.c6)(a).slice(0,12)),ready:0===i.length,issues:i}}),g=f.flatMap(a=>a.issues),h={taskId:`chapter-task-${(0,d.c6)({plan:a.plan.planId,chapter:a.chapter.id,evidence:a.evidence.map(a=>(0,d.c6)({filePath:a.filePath,content:a.content.slice(0,120),score:a.score}))}).slice(0,10)}`,chapterId:a.chapter.id,title:a.chapter.title,facts:e.slice(0,48),evidence:a.evidence.slice(0,48),graphContext:o(a.context.baseProjectGraph,a.chapter.title).slice(0,20).join("\n"),sections:f,ready:0===g.length,issues:g};return{task:h,node:{id:`chapter-task-${a.chapter.id}`,type:"chapter_task_planner",status:h.ready?"completed":"failed",startedAt:b,completedAt:Date.now(),outputSummary:`${h.sections.filter(a=>a.ready).length}/${h.sections.length} 条细目任务就绪`,metrics:{facts:h.facts.length,evidence:h.evidence.length,issues:g.length},issues:g}}}function v(a){let b=a.facts.slice(0,18).map(a=>`- ${a.key}:${m(a)}${a.sourceFile?`(来源:${a.sourceFile})`:""}`).join("\n"),c=a.sections.map((a,b)=>`${b+1}. 必须输出三级标题:### ${a.title}
|
|
4
4
|
写作目标:${a.objective}
|
|
5
5
|
支撑情况:证据 ${a.evidenceIds.length},事实 ${a.factIds.length},图谱 ${a.graphNodeIds.length}
|
|
6
6
|
最小正文深度:${a.minChars} 字`).join("\n");return["【Agent 章节任务】",`任务ID:${a.taskId}`,`章节:${a.title}`,a.graphContext?`图谱上下文:
|
|
@@ -10,12 +10,12 @@ ${c}`,"写作要求:必须严格按“小节任务”逐项输出,每个任
|
|
|
10
10
|
${c}`}).join("\n");return["【Agent 章节任务】(主题块成稿模式)",`任务ID:${a.taskId}`,`章节:${a.title}`,a.graphContext?`图谱上下文:
|
|
11
11
|
${a.graphContext}`:"",c?`事实卡:
|
|
12
12
|
${c}`:"",`主题块与 H4 要点(必须严格按此两层结构成稿):
|
|
13
|
-
${d}`,"写作要求:必须严格按“主题块→H4 要点”两层结构输出,三级标题与 H4 要点标题必须与给定标题完全一致,不得改名、合并或遗漏 H4 要点;每个 H4 要点必须覆盖其标注的全部评分细目内容,但不得为这些评分细目单独开设小节标题;项目专属事实只使用事实卡、图谱上下文和绑定证据,法律法规、标准规范等公共知识可直接引用;不得输出后台话术、兜底措辞、待确认、不适用;缺少项目事实的小节不得编造。"].filter(Boolean).join("\n\n")}function x(a){let b=m(a);return!(!b||b.length<3||/^(?:见|详见|按|执行|参见|依据).{0,16}(?:前附表|招标公告|招标文件|合同|协议书|通用条款|专用条款|图纸|清单|附件|资料)$/u.test(b)||/^(?:合同协议书|通用条款|专用条款|招标文件|招标公告|投标人须知前附表|附件|资料)$/u.test(b.replace(/[()()\d一二三四五六七八九十、..\s]/gu,"")))&&/项目|工程|编号|地点|规模|范围|工期|质量|安全|资源|材料|设备|验收|\d/u.test(l(a))}function y(a){let b=[],c=a.draft.content||"";for(let e of j)c.includes(e)&&b.push({level:"error",severity:"blocker",category:"style",owner:"system",message:`${a.draft.title} 正文包含禁止话术:${e}`,suggestion:"工作包"===e?"这是生成系统后台概念,正文中不得出现该词:结合上下文语义改写为正式术语(如“拆除工程”“按专业工程逐项说明”),不得做词面替换。":d.Kd.includes(e)?"评标纪律承诺、廉洁承诺等属商务投标函内容,不得进入技术标正文:删除该承诺句(移入商务文件),本节只保留技术与管理内容。":"改为事实支撑的正式表达;缺失事实不得占位。"});let g=c.split(/(?<=[。;;])/u).filter(a=>(0,d.hh)(a)&&!d.Kd.some(b=>a.includes(b)));g.length>0&&b.push({level:"error",severity:"blocker",category:"style",owner:"system",message:`${a.draft.title} 正文包含商务投标函纪律承诺句:${g[0].slice(0,40)}`,suggestion:"投标/评标纪律承诺、廉洁承诺等属商务投标函内容,不得进入技术标正文:删除该承诺句(移入商务文件),本节只保留技术与管理内容。"}),c.includes("[EVIDENCE_SKELETON]")&&b.push({level:"error",severity:"blocker",category:"evidence_coverage",owner:"system",message:`${a.draft.title} 正文为 LLM 全故障后的证据骨架草稿,禁止作为正式正文通过`,suggestion:"必须由 Repairer 基于小节事实卡与证据完整重写为正式正文,并删除 [EVIDENCE_SKELETON] 标记;若 LLM 仍不可用,本章节保持 failed 阻断。"}),(0,e.V7)(c);let h=a.plannedCoverage,i=a=>{let b=h?.[a];return b&&b.length>0?b[0]:a},k=new Map;for(let a of Object.values(h||{}))a.length>0&&k.set(a[0],(k.get(a[0])||0)+1);let l=a=>{let b=h?.[a];return!!b&&0!==b.length&&(k.get(b[0])||1)>1},n=new Map,o=new Set;for(let b of a.task.sections){let a=i(b.title);l(b.title);let c=n.get(a);n.set(a,void 0===c?b.minChars:Math.max(c,b.minChars))}for(let g of a.task.sections){let a=h?.[g.title],i=a&&a.length>0?a:[g.title],j=i[0],k=l(g.title),m=new Set,p="";for(let a of i){let b=(0,d.Xl)(c,a,{fuzzy:!0});b&&!m.has(b)&&(m.add(b),p+=(p?"\n":"")+b)}if(j!==g.title){let a=(0,d.Xl)(c,g.title,{fuzzy:!0});a&&!m.has(a)&&(0,e.V7)(a)>(0,e.V7)(p)&&(p=a)}if(p.includes("[WRITER_MISSING_SECTION]")||!p&&c.includes("[WRITER_MISSING_SECTION]"))o.has(j)||(o.add(j),b.push({level:"error",severity:"blocker",category:"structure",owner:"system",message:k?`${j} Writer 未完成(承接 ${g.title})`:`${g.title} Writer 未完成`,suggestion:"Repairer 必须基于该小节事实卡和证据生成正式正文,并删除 WRITER_MISSING_SECTION 标记。"}));else if(p&&!o.has(j)){o.add(j);let a=n.get(j)||g.minChars,c=/项目特点.*重点.*难点|重点.*难点.*分析|项目主要施工内容|主要分部分项工程施工方案|主要施工方法|危大工程专项施工方案审批流程|原材料进场复试|见证取样/u.test(g.title),d=k&&!c?Math.max(200,Math.floor(.5*a)):a;(0,e.V7)(p)>=Math.floor(.8*d)||b.push({level:c?"error":"warning",severity:c?"blocker":"warning",category:"structure",owner:"system",message:k?`${j} 正文不足,未达到任务最小深度(承接 ${g.title})`:`${g.title} 正文不足,未达到任务最小深度`,suggestion:c?"关键小节必须基于项目事实和对应关系重写补足;不得仅保留概述性文字。":"应基于该小节事实卡和证据重新生成,不得使用标题占位。"})}else if(!p&&!o.has(j)){o.add(j);let a=/项目特点.*重点.*难点|重点.*难点.*分析|项目主要施工内容|主要分部分项工程施工方案|主要施工方法|危大工程专项施工方案审批流程|原材料进场复试|见证取样/u.test(g.title);b.push({level:a?"error":"warning",severity:a?"blocker":"warning",category:"structure",owner:"system",message:a?`${g.title} 正文不足,未达到任务最小深度`:`${k?`承接小节 ${j} 缺失`:g.title} 未匹配到独立小节标题`,suggestion:a?"关键小节缺失正文,必须基于该小节事实卡和证据生成正式正文,不得以标题占位。":"正文已成文但小节标题与规划标题不完全一致,建议后续按规划标题进一步规范结构。"})}if(g.ready||b.push(...g.issues.map(a=>({...a,level:"warning",severity:"warning"}))),/主要分部分项工程施工方案|主要施工方法/u.test(g.title)){let a=(0,d.Xl)(c,j,{fuzzy:!0}),h=(0,e.V7)(a),i=new Set([...a.match(f.aX)||[],...a.match(f.LT)||[]]).size,k=new Set(a.match(f.s2)||[]).size,l=h>0?k/(h/1e3):0;(0,e.V7)(a)>=800&&(i<4||l<2)&&b.push({level:"warning",severity:"warning",category:"professional_chain",owner:"system",message:`${g.title} 参数落位不足:工艺参数 ${i} 个(要求不少于 4 个),量化参数密度每千字 ${l.toFixed(1)} 个(要求不少于 2 个)`,suggestion:"必须补充 mm/MPa/间距/偏差/坡度/试验压力等工艺参数(来自绑定资料或行业规范值)或设备型号规格参数,并提升量化参数(数量/规格/工期/面积等)落位密度;同一参数不得反复堆砌凑数。"})}if(/主要分部分项工程施工方案|主要施工方法|项目主要施工内容|施工流程|施工顺序|多工序穿插|三检制度|隐蔽工程验收|闭环整改|应急演练|转运路线/u.test(g.title)){let a=(0,d.Xl)(c,j,{fuzzy:!0});(0,e.V7)(a)>=500&&!(0,d.Z1)(a)&&b.push({level:"warning",severity:"warning",category:"professional_chain",owner:"system",message:`${g.title} 工序顺序表达缺失:工序序列未以顺序词叙述、编号步骤、列表或箭头链任一形式表达`,suggestion:"工艺流程与方法叙述中的连续工序须有明确的顺序表达,形式由模型自然选择(顺序词叙述、编号步骤、有序列表或箭头链均可,如“先进行基层清理,再放线定位,随后分层摊铺,然后碾压,最后验收”),保证工序先后顺序清晰即可。"})}}let p=a.context.materialScope.selectedRoots;for(let d of a.context.materialScope.rejectedRoots)d&&!p.includes(d)&&c.includes(d)&&b.push({level:"error",severity:"blocker",category:"evidence_coverage",owner:"system",message:`${a.draft.title} 混入非当前资料组名称:${d}`,suggestion:"必须删除跨项目内容并重新检索当前资料组证据。"});let q=a.task.facts.filter(x),r=q.filter(a=>{let b=m(a);return b.length>=2&&c.includes(b.slice(0,Math.min(18,b.length)))}).length;q.length>=3&&0===r&&1200>(0,e.V7)(c)&&b.push({level:"warning",severity:"warning",category:"evidence_coverage",owner:"system",message:`${a.draft.title} 未明显落位章节事实卡`,suggestion:"建议将章节事实卡中的关键工程事实写入对应小节,但不因引用型或低可执行事实阻断。"});let s=b.filter(a=>"error"===a.level||"blocker"===a.severity),t=b.filter(a=>/正文不足|未落位章节事实卡/u.test(a.message)),u=s.some(a=>/Writer 未完成|正文不足,未达到任务最小深度/u.test(a.message));return{issues:b,supportedFacts:r,unsupportedSignals:b.map(a=>a.message),repairable:b.length>0&&(b.length<=6||t.length===b.length||0===s.length||u)}}function z(a){if(!a.review.repairable)return"";let b=a.plannedMode?"【结构约束】本章采用主题块成稿模式,必须保持现有三级主题块与 H4 要点标题不变;只修复列出的问题,不得新增小节、不得拆分或合并现有小节、不得把评分细目展开为独立标题。":v(a.task);return["【Agent 定向修复任务】",`章节:${a.task.title}`,"只修复下列问题,不重写无关内容;如果问题是小节正文不足,必须按原小节标题完整补足该小节正式正文,每个小节不得少于任务最小深度:",...a.review.issues.map(a=>`- ${a.message};${a.suggestion||""}`),b].join("\n")}},44505:(a,b,c)=>{c.d(b,{Et:()=>Z,Fr:()=>ah,H:()=>aa,Ih:()=>L,N$:()=>ac,T:()=>W,U$:()=>G,Vw:()=>N,Xc:()=>M,YN:()=>K,a8:()=>l,bq:()=>ai,cJ:()=>B,cT:()=>af,cf:()=>j,dF:()=>I,eS:()=>h,hu:()=>am,l4:()=>F,mC:()=>V,qj:()=>X,r8:()=>s,rA:()=>q,s3:()=>w,sn:()=>y,t1:()=>E,u2:()=>n,vH:()=>u,y2:()=>D});var d=c(78217),e=c(22157),f=c(37047),g=c(41991);let h=/(\d{4})\s*年\s*(\d{1,2})\s*月\s*(\d{1,2})\s*日/gu,i=/进度计划|里程碑|节点安排|验收时间|完成日期|竣工日期|移交日期|合同签订/u;function j(a,b){let c=[],d=function(a){let b=new Set;for(let c of[...a.project,...a.schedule,...a.quality,...a.resources,...a.preciseFacts].map(a=>`${a.key||""}${a.fieldName||""}${(0,e.lG)(a.value)}`))for(let a of c.matchAll(h))b.add(`${a[1]}年${a[2]}月${a[3]}日`);return b}(b),f=[...b.schedule,...b.project].map(a=>`${a.key||""}${(0,e.lG)(a.value)}`).join(" "),g=h.test(f);for(let b of(h.lastIndex=0,a.matchAll(h))){let e=`${b[1]}年${b[2]}月${b[3]}日`;if(d.has(e))continue;let f=Math.max(0,(b.index||0)-40),h=a.slice(f,(b.index||0)+e.length+40);g&&i.test(h)||c.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`正文编造开工日期“${e}”:绑定资料未提供该具体日历日期(招标文件以开工令时间为准)`,suggestion:`删除自行设定的具体日期,统一改写为“以开工令时间为准”;如为进度计划节点日期,必须标注为计划推算节点并保持与总工期一致。`})}return c.slice(0,3)}let k=/(单体建筑面积|总建筑面积|建筑面积)[^。;;\n]{0,30}?([\d,]+(?:\.\d+)?)\s*(?:㎡|m2|m²|平方米)/gu;function l(a,b){let c=[],d=function(a){let b=[];for(let c of[...a.project,...a.preciseFacts].map(a=>`${a.fieldName||a.key||""}:${(0,e.lG)(a.value)}`)){let a=/(总占地面积|占地面积|单体建筑面积|总建筑面积|建筑面积|地上建筑面积|地下建筑面积|总用地面积)/u.exec(c)?.[1],d=/([\d,]+(?:\.\d+)?)\s*(?:㎡|m2|m²|平方米)/u.exec(c);if(!a||!d)continue;let e=Number(d[1].replace(/[,,]/gu,""));Number.isFinite(e)&&e>0&&b.push({label:a,value:e})}return b}(b),f=new Set(d.filter(a=>/占地面积/u.test(a.label)).map(a=>a.value)),g=new Set(d.filter(a=>/建筑面积/u.test(a.label)&&!/地上|地下/u.test(a.label)).map(a=>a.value));if(0===f.size||0===g.size)return c;for(let b of a.matchAll(k)){let a=Number(b[2].replace(/[,,]/gu,""));if(!Number.isFinite(a)||a<=0||!f.has(a)||g.has(a))continue;let d=b[1],e=[...g].join("、");c.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`字段-数值错配:“${d} ${b[2]}㎡”将总占地面积误作${d}(绑定资料${d}数值为 ${e}㎡)`,suggestion:`总占地面积与建筑面积是两个独立字段,必须严格区分:将“${d} ${b[2]}㎡”改为资料数值“${d} ${e}㎡”,总占地面积保持独立表述。`})}return c.slice(0,3)}let m=/(地上[^。;;]{0,30}?([\d,]+(?:\.\d+)?)\s*(?:㎡|m2|m²|平方米)[^。;;]{0,40}?地下[^。;;]{0,30}?([\d,]+(?:\.\d+)?)\s*(?:㎡|m2|m²|平方米)[^。;;]{0,60}?(?:单体建筑面积|总建筑面积)[^。;;]{0,20}?([\d,]+(?:\.\d+)?)\s*(?:㎡|m2|m²|平方米))/gu;function n(a){let b=[];for(let c of a.matchAll(m)){let a=Number(c[2].replace(/[,,]/gu,"")),d=Number(c[3].replace(/[,,]/gu,"")),e=Number(c[4].replace(/[,,]/gu,""));if(![a,d,e].every(Number.isFinite))continue;let f=a+d,g=Math.max(1,.001*e);Math.abs(f-e)>g&&b.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`面积算术矛盾:地上 ${a}㎡ + 地下 ${d}㎡ = ${f}㎡,与同句“单体建筑面积 ${e}㎡”不符(差 ${Math.abs(f-e).toFixed(2)}㎡)`,suggestion:`地上与地下面积之和必须等于单体建筑面积:按绑定资料统一三者数值,删除错误数值表述。`})}return b.slice(0,3)}let o=/(?:高峰期|高峰|峰值)[^。;;\n]{0,20}?(?:约)?\s*([\d,]+)\s*人/g,p=/(?:劳动力|作业人员|施工人员)[^。;;\n]{0,16}?(?:约)?\s*([\d,]+)\s*人/g;function q(a){let b=[],c=[];for(let b of[o,p])for(let d of a.matchAll(b)){let a=Number(d[1].replace(/[,,]/gu,""));Number.isFinite(a)&&a>0&&c.push({value:a,text:d[0].trim().slice(0,40)})}let d=function(a){let b=[],c=a.split(/\r?\n/u),d=/^\|.+\|$/u,e=/阶段|时期|工期|工序|进度/u,f=/人数|劳动力|作业人员|施工人员|投入人数/u,g=/^:?-{3,}:?$/u,h=a=>a.replace(/[*_`~]/gu,"").trim();for(let a=0;a<c.length;a+=1){let i,j,k;if(!d.test(c[a].trim()))continue;let l=[];for(;a<c.length&&d.test(c[a].trim());)l.push(c[a].trim()),a+=1;if(a-=1,l.length<3)continue;let m=a=>a.split("|").map(a=>a.trim()).slice(1,-1),n=l.findIndex((a,b)=>b>0&&m(a).every(a=>g.test(a)));if(1===n&&l.length>=3)i=m(l[0]).map(h),j=l.slice(2);else{if(-1!==n||!(l.length>=2))continue;let a=m(l[0]).map(h);if(!(e.test(a.join("|"))&&f.test(a.join("|"))))continue;i=a,j=l.slice(1)}let o=i.findIndex(a=>e.test(a)),p=i.findIndex(a=>f.test(a));if(p<0||o>=0&&o===p||/岗位/u.test(i.join("|"))&&/职责|持证|职称/u.test(i.join("|")))continue;let q=[],r=0;for(let a of j){let b=m(a),c=b[p]||"",d=/^([\d,]+)\s*人?$/u.exec(c);if(!d)continue;let e=Number(d[1].replace(/[,,]/gu,""));if(Number.isFinite(e)&&!(e<=0)){if(b.some((a,b)=>b!==p&&/合计|总计|小计/u.test(a))){k=e;continue}q.push(e),r+=e}}if(0===q.length&&void 0===k)continue;let s=Math.max(...q.length>0?q:[k||0]);b.push({countCells:q,totalCell:k,detailSum:r,peak:s})}return b}(a),e=d.map(a=>a.peak),f=(a,c)=>b.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:a,suggestion:c});for(let a=0;a<c.length;a+=1)for(let b=a+1;b<c.length;b+=1){let[d,e]=[c[a],c[b]],g=Math.abs(d.value-e.value)/Math.max(d.value,e.value);if(g>.3){f(`劳动力数据矛盾:正文“${d.text}”(${d.value} 人)与“${e.text}”(${e.value} 人)互斥(相差 ${Math.round(100*g)}%)`,"劳动力峰值数据必须全文唯一:以分阶段投入明细表为准统一正文各处峰值表述,删除矛盾数字。"),a=c.length;break}}if(e.length>=2){let a=Math.max(...e),b=Math.min(...e),c=Math.abs(a-b)/a;c>.3&&f(`劳动力数据矛盾:分阶段投入明细表峰值 ${b} 人与另一劳动力表峰值 ${a} 人互斥(相差 ${Math.round(100*c)}%)`,"劳动力峰值数据必须全文唯一:统一各劳动力表格的峰值数据,删除矛盾表格数字。")}let g=c.reduce((a,b)=>Math.max(a,b.value),0),h=e.length>0?Math.max(...e):void 0;if(void 0!==h&&g>0&&g>1.3*h){let a=c.find(a=>a.value===g)?.text||"";f(`劳动力数据矛盾:正文表述“${a}”达 ${g} 人,而分阶段投入明细表最大峰值为 ${h} 人(超出 ${Math.round((g-h)/h*100)}%)`,"劳动力投入数据必须全文统一:以分阶段明细表为准复核正文峰值表述,删除与表格矛盾的“高峰期 X 人”措辞或调整表格数据。")}let i=[];for(let b of a.matchAll(/(?:高峰期|高峰|峰值)[^。;;\n]{0,16}?控制(?:在|为|到)?(?:约)?\s*([\d,]+)\s*人(?:以内|以下|之内)?/gu)){let a=Number(b[1].replace(/[,,]/gu,""));Number.isFinite(a)&&a>0&&i.push(a)}if(i.length>0){let a=Math.max(...i),b=[...c,...void 0!==h?[{value:h}]:[]].filter(b=>b.value>a);if(b.length>0){let c=Math.max(...b.map(a=>a.value));f(`劳动力数据矛盾:正文“高峰期总人数控制在${a}人”的上限表述与峰值表述 ${c} 人不自洽(阶段高峰投入超出控制上限 ${Math.round((c-a)/a*100)}%)`,"总量控制上限与各阶段峰值必须自洽:阶段高峰人数不得超过全文宣称的高峰控制人数;以分阶段投入明细表为准修正控制目标或各阶段峰值表述。")}}for(let a of d){if(void 0===a.totalCell||a.countCells.length<2)continue;let b=Math.abs(a.totalCell-a.detailSum)/Math.max(a.totalCell,a.detailSum);b>.1&&f(`劳动力数据矛盾:劳动力表合计行 ${a.totalCell} 人与明细行之和 ${a.detailSum} 人不符(差 ${Math.round(100*b)}%)`,"劳动力表合计必须等于各明细行人数之和:统一合计行与明细行数据,删除矛盾数字。")}let j=[...a.matchAll(/([\d,]+)\s*(?:个)?工日/gu)].map(a=>Number(a[1].replace(/[,,]/gu,""))).filter(a=>Number.isFinite(a)&&a>0),k=[...a.matchAll(/(?:工期|总工期|计划工期)[^。;;\n]{0,16}?(\d{2,4})\s*(?:个)?(?:日历)?天/gu)].map(a=>Number(a[1])).filter(a=>Number.isFinite(a)&&a>=30&&a<=3e3);if(j.length>0&&g>0&&k.length>0){let a=Math.max(...j),b=Math.max(...k),c=g*b*1.3,d=g*b*.1;(a>c||a<d)&&f(`劳动力数据矛盾:总工日 ${a} 个与峰值 ${g} 人\xd7总工期 ${b} 天不自洽(合理区间约 ${Math.round(d)}~${Math.round(c)} 个)`,"总工日必须与劳动力峰值和总工期量级自洽:按各阶段人数\xd7阶段工期重算总工日,或修正峰值人数/总工期表述。")}return b.slice(0,5)}let r={slope:"基坑放坡开挖、土钉墙喷锚支护坡面",pile:"钻孔灌注桩、排桩、地下连续墙围护结构"};async function s(a){let b=[],c=a.split(/\n{2,}/u).filter(a=>a.trim().length>=30);if(0===c.length)return b;let d=await (0,f.Mv)(c,Object.values(r)),e=a=>d(a,r.slope)>=f.Eh,g=/钻孔灌注桩|灌注桩|排桩|地下连续墙|咬合桩|支护桩/u,h=a=>g.test(a)&&d(a,r.pile)>=f.Eh,i=c.filter(a=>e(a)&&!h(a)),j=c.filter(a=>h(a)&&!e(a));return 0===i.length||0===j.length||b.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`基坑支护方案前后不一致:放坡喷锚类支护表述与灌注桩排桩类支护表述分别成段出现(放坡喷锚类 ${i.length} 段、灌注桩排桩类 ${j.length} 段),属跨模板拼接断裂`,suggestion:"支护形式必须全文统一为一种体系(以图纸/地质条件为准):确定采用放坡喷锚或灌注桩排桩后,删除另一种体系的表述,并补充基坑开挖深度数值支撑危大分级判定。"}),b}let t=/^#{2,4}\s+(?:\d+(?:\.\d+)*\s+)?[^\n]*(?:危大工程(?:辨识)?(?:清单|识别)|危大(?:工程)?(?:及超危大)?(?:清单|识别|辨识))[^\n]*$/gmu;function u(a){let b=[],c=function(a){let b=a.split(/\r?\n/u),c=[];for(let a=0;a<b.length;a+=1){if(!t.test(b[a].trim()))continue;let d=[];for(let c=a+1;c<Math.min(b.length,a+30);c+=1){let a=b[c].trim();if(/^#{1,6}\s/u.test(a))break;let e=/^(?:\d+[.、.)]|[-*•])?\s*([^。;;|]{2,40})$/u.exec(a)?.[1];e&&d.push(e.replace(/^[\s\d.、()()【】-]+/u,"").replace(/[((【][^))】]*[))】]/gu,"").replace(/施工$/u,"").replace(/作业$/u,"").replace(/\s+/gu,"").trim())}d.length>=2&&c.push({title:b[a].trim(),items:[...new Set(d)]})}return c}(a);if(c.length<2)return b;for(let a=0;a<c.length;a+=1)for(let d=a+1;d<c.length;d+=1){let e=c[a],f=c[d],g=e.items.filter(a=>!f.items.includes(a)),h=f.items.filter(a=>!e.items.includes(a));(0!==g.length||0!==h.length)&&b.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`危大工程辨识清单不一致:“${e.title.slice(0,30)}”(${e.items.length} 项)与“${f.title.slice(0,30)}”(${f.items.length} 项)存在差异:前者独有【${g.join("、")||"无"}】,后者独有【${h.join("、")||"无"}】`,suggestion:"全文危大工程辨识清单必须唯一且一致:合并两处清单,统一项名、数量与分级表述,避免评标专家以清单矛盾质疑辨识深度。"})}return b.slice(0,3)}let v=[{name:"施工工地周边100%围挡",query:"施工工地周边设置围挡封闭管理"},{name:"物料堆放100%覆盖",query:"物料堆放覆盖防尘"},{name:"出入车辆100%冲洗",query:"出入车辆冲洗设施清洗出场"},{name:"施工现场地面100%硬化",query:"施工现场场地地面硬化"},{name:"拆迁工地100%湿法作业",query:"拆迁工地湿法作业洒水降尘"},{name:"渣土车辆100%密闭运输",query:"渣土车辆密闭运输防止遗撒"}];function w(a){let b=[];for(let c of a.split(/\r?\n/u)){let a=c.trim();if(!(!a||/^#{1,6}\s/u.test(a)||/^\s*\|/u.test(a)))for(let c of a.split(/(?<=[。!?!?;;])/u)){let a=c.trim();a.length>=8&&a.length<=120&&b.push(a)}}let c=[...new Set(b)];if(c.length<=400)return c;let d=Math.ceil(c.length/400);return c.filter((a,b)=>b%d==0).slice(0,400)}async function x(a,b){if(0===b.length||0===a.length)return new Map;let c=await (0,f.Mv)(a.map(a=>a.text),b);return new Map(a.map(a=>[a.key,b.some(b=>c(a.text,b)>=.6)]))}async function y(a){let b=[];if(!/扬尘|环保|文明施工|绿色施工/u.test(a))return b;let c=await x(v.map(a=>({key:a.name,text:a.query})),w(a)),d=/(?:本项目|本工程|该工程|该项目|本标段|本施工项目)[^。;;\n]{0,30}(?:无拆迁|不涉及拆迁|无房屋拆除|无拆除)/u.test(a),e=v.filter(a=>!c.get(a.name)).filter(a=>!("拆迁工地100%湿法作业"===a.name&&d)).map(a=>a.name);return 0===e.length||b.push({level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"llm_repairable",message:`“扬尘治理六个百分百”未逐项落实:缺少【${e.join("、")}】(${v.length-e.length}/${v.length} 项命中)`,suggestion:"按检查规范第七部分要求逐条表述六项措施:工地周边100%围挡、物料堆放100%覆盖、出入车辆100%冲洗、施工现场地面100%硬化、拆迁工地100%湿法作业、渣土车辆100%密闭运输。"}),b}let z=/建设地点|工程地点|项目地点|实施地点|服务地点|交付地点|建设地址/u,A=["安徽","合肥","芜湖","蚌埠","淮南","马鞍山","淮北","铜陵","安庆","黄山","滁州","阜阳","宿州","六安","亳州","池州","宣城"];async function B(a,b){let c=[],d=b.project.some(a=>z.test(`${a.fieldName||""}${a.key||""}`)&&A.some(b=>(0,e.lG)(a.value).includes(b))),f=[];if(d&&(f.push({key:"award",text:"争创省市级优质工程奖、安全文明标准化工地"}),f.push({key:"greenQuant",text:"非传统水源利用率、废弃物回收率等绿色施工量化指标"})),f.push({key:"workInjury",text:"按规定为作业人员办理工伤保险"}),0===f.length)return c;let g=await x(f,w(a));return d&&(g.get("award")||c.push({level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"llm_repairable",message:"属地创优目标缺失:正文未提及省市级优质工程/文明标准化工地等创优目标(安徽省属地适配项)",suggestion:"在质量目标或创优规划小节补写与项目实际规模相符的创优目标表述;奖项名称必须以评分项要求提取结果(招标文件原文)为准逐字落位,禁止自行编造或替换为其他奖项名称。"}),/四节一环保|绿色施工|节水|节材|节能/u.test(a)&&!g.get("greenQuant")&&c.push({level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"llm_repairable",message:"四节一环保量化指标缺失:非传统水源利用率/漏损率/土方平衡率/废弃物回收率等均未量化(附录八基准对照项)",suggestion:"在绿色施工章节补充量化指标(非传统水源利用率、管网漏损率、土方平衡率、可回收废弃物回收率等)与模板周转次数,数值参考行业通用水平与附录八基准,不得编造极端值。"})),/劳务|农民工|工资/u.test(a)&&!g.get("workInjury")&&c.push({level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"llm_repairable",message:"工伤保险表述缺失:正文有劳务/农民工管理内容但未提及工伤保险缴纳(政策合规漏项)",suggestion:"在劳务管理/农民工工资保障小节补充“按规定为作业人员办理工伤保险”表述。"}),c}let C=RegExp(`(?:^|
|
|
13
|
+
${d}`,"写作要求:必须严格按“主题块→H4 要点”两层结构输出,三级标题与 H4 要点标题必须与给定标题完全一致,不得改名、合并或遗漏 H4 要点;每个 H4 要点必须覆盖其标注的全部评分细目内容,但不得为这些评分细目单独开设小节标题;项目专属事实只使用事实卡、图谱上下文和绑定证据,法律法规、标准规范等公共知识可直接引用;不得输出后台话术、兜底措辞、待确认、不适用;缺少项目事实的小节不得编造。"].filter(Boolean).join("\n\n")}function x(a){let b=m(a);return!(!b||b.length<3||/^(?:见|详见|按|执行|参见|依据).{0,16}(?:前附表|招标公告|招标文件|合同|协议书|通用条款|专用条款|图纸|清单|附件|资料)$/u.test(b)||/^(?:合同协议书|通用条款|专用条款|招标文件|招标公告|投标人须知前附表|附件|资料)$/u.test(b.replace(/[()()\d一二三四五六七八九十、..\s]/gu,"")))&&/项目|工程|编号|地点|规模|范围|工期|质量|安全|资源|材料|设备|验收|\d/u.test(l(a))}function y(a){let b=[],c=a.draft.content||"";for(let e of j)c.includes(e)&&b.push({level:"error",severity:"blocker",category:"style",owner:"system",message:`${a.draft.title} 正文包含禁止话术:${e}`,suggestion:"工作包"===e?"这是生成系统后台概念,正文中不得出现该词:结合上下文语义改写为正式术语(如“拆除工程”“按专业工程逐项说明”),不得做词面替换。":d.Kd.includes(e)?"评标纪律承诺、廉洁承诺等属商务投标函内容,不得进入技术标正文:删除该承诺句(移入商务文件),本节只保留技术与管理内容。":"改为事实支撑的正式表达;缺失事实不得占位。"});let g=c.split(/(?<=[。;;])/u).filter(a=>(0,d.hh)(a)&&!d.Kd.some(b=>a.includes(b)));g.length>0&&b.push({level:"error",severity:"blocker",category:"style",owner:"system",message:`${a.draft.title} 正文包含商务投标函纪律承诺句:${g[0].slice(0,40)}`,suggestion:"投标/评标纪律承诺、廉洁承诺等属商务投标函内容,不得进入技术标正文:删除该承诺句(移入商务文件),本节只保留技术与管理内容。"}),c.includes("[EVIDENCE_SKELETON]")&&b.push({level:"error",severity:"blocker",category:"evidence_coverage",owner:"system",message:`${a.draft.title} 正文为 LLM 全故障后的证据骨架草稿,禁止作为正式正文通过`,suggestion:"必须由 Repairer 基于小节事实卡与证据完整重写为正式正文,并删除 [EVIDENCE_SKELETON] 标记;若 LLM 仍不可用,本章节保持 failed 阻断。"}),(0,e.V7)(c);let h=a.plannedCoverage,i=a=>{let b=h?.[a];return b&&b.length>0?b[0]:a},k=new Map;for(let a of Object.values(h||{}))a.length>0&&k.set(a[0],(k.get(a[0])||0)+1);let l=a=>{let b=h?.[a];return!!b&&0!==b.length&&(k.get(b[0])||1)>1},n=new Map,o=new Set;for(let b of a.task.sections){let a=i(b.title);l(b.title);let c=n.get(a);n.set(a,void 0===c?b.minChars:Math.max(c,b.minChars))}for(let g of a.task.sections){let a=h?.[g.title],i=a&&a.length>0?a:[g.title],j=i[0],k=l(g.title),m=new Set,p="";for(let a of i){let b=(0,d.Xl)(c,a,{fuzzy:!0});b&&!m.has(b)&&(m.add(b),p+=(p?"\n":"")+b)}if(j!==g.title){let a=(0,d.Xl)(c,g.title,{fuzzy:!0});a&&!m.has(a)&&(0,e.V7)(a)>(0,e.V7)(p)&&(p=a)}if(p.includes("[WRITER_MISSING_SECTION]")||!p&&c.includes("[WRITER_MISSING_SECTION]"))o.has(j)||(o.add(j),b.push({level:"error",severity:"blocker",category:"structure",owner:"system",message:k?`${j} Writer 未完成(承接 ${g.title})`:`${g.title} Writer 未完成`,suggestion:"Repairer 必须基于该小节事实卡和证据生成正式正文,并删除 WRITER_MISSING_SECTION 标记。"}));else if(p&&!o.has(j)){o.add(j);let a=n.get(j)||g.minChars,c=/项目特点.*重点.*难点|重点.*难点.*分析|项目主要施工内容|主要分部分项工程施工方案|主要施工方法|危大工程专项施工方案审批流程|原材料进场复试|见证取样/u.test(g.title),d=k&&!c?Math.max(200,Math.floor(.5*a)):a;(0,e.V7)(p)>=Math.floor(.8*d)||b.push({level:c?"error":"warning",severity:c?"blocker":"warning",category:"structure",owner:"system",message:k?`${j} 正文不足,未达到任务最小深度(承接 ${g.title})`:`${g.title} 正文不足,未达到任务最小深度`,suggestion:c?"关键小节必须基于项目事实和对应关系重写补足;不得仅保留概述性文字。":"应基于该小节事实卡和证据重新生成,不得使用标题占位。"})}else if(!p&&!o.has(j)){o.add(j);let a=/项目特点.*重点.*难点|重点.*难点.*分析|项目主要施工内容|主要分部分项工程施工方案|主要施工方法|危大工程专项施工方案审批流程|原材料进场复试|见证取样/u.test(g.title);b.push({level:a?"error":"warning",severity:a?"blocker":"warning",category:"structure",owner:"system",message:a?`${g.title} 正文不足,未达到任务最小深度`:`${k?`承接小节 ${j} 缺失`:g.title} 未匹配到独立小节标题`,suggestion:a?"关键小节缺失正文,必须基于该小节事实卡和证据生成正式正文,不得以标题占位。":"正文已成文但小节标题与规划标题不完全一致,建议后续按规划标题进一步规范结构。"})}if(g.ready||b.push(...g.issues.map(a=>({...a,level:"warning",severity:"warning"}))),/主要分部分项工程施工方案|主要施工方法/u.test(g.title)){let a=(0,d.Xl)(c,j,{fuzzy:!0}),h=(0,e.V7)(a),i=new Set([...a.match(f.aX)||[],...a.match(f.LT)||[]]).size,k=new Set(a.match(f.s2)||[]).size,l=h>0?k/(h/1e3):0;(0,e.V7)(a)>=800&&(i<4||l<2)&&b.push({level:"warning",severity:"warning",category:"professional_chain",owner:"system",message:`${g.title} 参数落位不足:工艺参数 ${i} 个(要求不少于 4 个),量化参数密度每千字 ${l.toFixed(1)} 个(要求不少于 2 个)`,suggestion:"必须补充 mm/MPa/间距/偏差/坡度/试验压力等工艺参数(来自绑定资料或行业规范值)或设备型号规格参数,并提升量化参数(数量/规格/工期/面积等)落位密度;同一参数不得反复堆砌凑数。"})}if(/主要分部分项工程施工方案|主要施工方法|项目主要施工内容|施工流程|施工顺序|多工序穿插|三检制度|隐蔽工程验收|闭环整改|应急演练|转运路线/u.test(g.title)){let a=(0,d.Xl)(c,j,{fuzzy:!0});(0,e.V7)(a)>=500&&!(0,d.Z1)(a)&&b.push({level:"warning",severity:"warning",category:"professional_chain",owner:"system",message:`${g.title} 工序顺序表达缺失:工序序列未以顺序词叙述、编号步骤、列表或箭头链任一形式表达`,suggestion:"工艺流程与方法叙述中的连续工序须有明确的顺序表达,形式由模型自然选择(顺序词叙述、编号步骤、有序列表或箭头链均可,如“先进行基层清理,再放线定位,随后分层摊铺,然后碾压,最后验收”),保证工序先后顺序清晰即可。"})}}let p=a.context.materialScope.selectedRoots;for(let d of a.context.materialScope.rejectedRoots)d&&!p.includes(d)&&c.includes(d)&&b.push({level:"error",severity:"blocker",category:"evidence_coverage",owner:"system",message:`${a.draft.title} 混入非当前资料组名称:${d}`,suggestion:"必须删除跨项目内容并重新检索当前资料组证据。"});let q=a.task.facts.filter(x),r=q.filter(a=>{let b=m(a);return b.length>=2&&c.includes(b.slice(0,Math.min(18,b.length)))}).length;q.length>=3&&0===r&&1200>(0,e.V7)(c)&&b.push({level:"warning",severity:"warning",category:"evidence_coverage",owner:"system",message:`${a.draft.title} 未明显落位章节事实卡`,suggestion:"建议将章节事实卡中的关键工程事实写入对应小节,但不因引用型或低可执行事实阻断。"});let s=b.filter(a=>"error"===a.level||"blocker"===a.severity),t=b.filter(a=>/正文不足|未落位章节事实卡/u.test(a.message)),u=s.some(a=>/Writer 未完成|正文不足,未达到任务最小深度/u.test(a.message));return{issues:b,supportedFacts:r,unsupportedSignals:b.map(a=>a.message),repairable:b.length>0&&(b.length<=6||t.length===b.length||0===s.length||u)}}function z(a){if(!a.review.repairable)return"";let b=a.plannedMode?"【结构约束】本章采用主题块成稿模式,必须保持现有三级主题块与 H4 要点标题不变;只修复列出的问题,不得新增小节、不得拆分或合并现有小节、不得把评分细目展开为独立标题。":v(a.task);return["【Agent 定向修复任务】",`章节:${a.task.title}`,"只修复下列问题,不重写无关内容;如果问题是小节正文不足,必须按原小节标题完整补足该小节正式正文,每个小节不得少于任务最小深度:",...a.review.issues.map(a=>`- ${a.message};${a.suggestion||""}`),b].join("\n")}},44505:(a,b,c)=>{c.d(b,{Et:()=>Z,Fr:()=>ah,H:()=>aa,Ih:()=>L,N$:()=>ac,T:()=>W,U$:()=>G,Vc:()=>as,Vw:()=>N,Xc:()=>M,YN:()=>K,a8:()=>l,bq:()=>ai,cJ:()=>B,cT:()=>af,cf:()=>j,cl:()=>ar,dF:()=>I,eS:()=>h,hu:()=>at,l4:()=>F,lR:()=>ap,mC:()=>V,qj:()=>X,r8:()=>s,rA:()=>q,s3:()=>w,sn:()=>y,t1:()=>E,u2:()=>n,ub:()=>ao,vH:()=>u,y2:()=>D,zP:()=>ax});var d=c(78217),e=c(22157),f=c(37047),g=c(41991);let h=/(\d{4})\s*年\s*(\d{1,2})\s*月\s*(\d{1,2})\s*日/gu,i=/进度计划|里程碑|节点安排|验收时间|完成日期|竣工日期|移交日期|合同签订/u;function j(a,b){let c=[],d=function(a){let b=new Set;for(let c of[...a.project,...a.schedule,...a.quality,...a.resources,...a.preciseFacts].map(a=>`${a.key||""}${a.fieldName||""}${(0,e.lG)(a.value)}`))for(let a of c.matchAll(h))b.add(`${a[1]}年${a[2]}月${a[3]}日`);return b}(b),f=[...b.schedule,...b.project].map(a=>`${a.key||""}${(0,e.lG)(a.value)}`).join(" "),g=h.test(f);for(let b of(h.lastIndex=0,a.matchAll(h))){let e=`${b[1]}年${b[2]}月${b[3]}日`;if(d.has(e))continue;let f=Math.max(0,(b.index||0)-40),h=a.slice(f,(b.index||0)+e.length+40);g&&i.test(h)||c.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`正文编造开工日期“${e}”:绑定资料未提供该具体日历日期(招标文件以开工令时间为准)`,suggestion:`删除自行设定的具体日期,统一改写为“以开工令时间为准”;如为进度计划节点日期,必须标注为计划推算节点并保持与总工期一致。`})}return c.slice(0,3)}let k=/(单体建筑面积|总建筑面积|建筑面积)[^。;;\n]{0,30}?([\d,]+(?:\.\d+)?)\s*(?:㎡|m2|m²|平方米)/gu;function l(a,b){let c=[],d=function(a){let b=[];for(let c of[...a.project,...a.preciseFacts].map(a=>`${a.fieldName||a.key||""}:${(0,e.lG)(a.value)}`)){let a=/(总占地面积|占地面积|单体建筑面积|总建筑面积|建筑面积|地上建筑面积|地下建筑面积|总用地面积)/u.exec(c)?.[1],d=/([\d,]+(?:\.\d+)?)\s*(?:㎡|m2|m²|平方米)/u.exec(c);if(!a||!d)continue;let e=Number(d[1].replace(/[,,]/gu,""));Number.isFinite(e)&&e>0&&b.push({label:a,value:e})}return b}(b),f=new Set(d.filter(a=>/占地面积/u.test(a.label)).map(a=>a.value)),g=new Set(d.filter(a=>/建筑面积/u.test(a.label)&&!/地上|地下/u.test(a.label)).map(a=>a.value));if(0===f.size||0===g.size)return c;for(let b of a.matchAll(k)){let a=Number(b[2].replace(/[,,]/gu,""));if(!Number.isFinite(a)||a<=0||!f.has(a)||g.has(a))continue;let d=b[1],e=[...g].join("、");c.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`字段-数值错配:“${d} ${b[2]}㎡”将总占地面积误作${d}(绑定资料${d}数值为 ${e}㎡)`,suggestion:`总占地面积与建筑面积是两个独立字段,必须严格区分:将“${d} ${b[2]}㎡”改为资料数值“${d} ${e}㎡”,总占地面积保持独立表述。`})}return c.slice(0,3)}let m=/(地上[^。;;]{0,30}?([\d,]+(?:\.\d+)?)\s*(?:㎡|m2|m²|平方米)[^。;;]{0,40}?地下[^。;;]{0,30}?([\d,]+(?:\.\d+)?)\s*(?:㎡|m2|m²|平方米)[^。;;]{0,60}?(?:单体建筑面积|总建筑面积)[^。;;]{0,20}?([\d,]+(?:\.\d+)?)\s*(?:㎡|m2|m²|平方米))/gu;function n(a){let b=[];for(let c of a.matchAll(m)){let a=Number(c[2].replace(/[,,]/gu,"")),d=Number(c[3].replace(/[,,]/gu,"")),e=Number(c[4].replace(/[,,]/gu,""));if(![a,d,e].every(Number.isFinite))continue;let f=a+d,g=Math.max(1,.001*e);Math.abs(f-e)>g&&b.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`面积算术矛盾:地上 ${a}㎡ + 地下 ${d}㎡ = ${f}㎡,与同句“单体建筑面积 ${e}㎡”不符(差 ${Math.abs(f-e).toFixed(2)}㎡)`,suggestion:`地上与地下面积之和必须等于单体建筑面积:按绑定资料统一三者数值,删除错误数值表述。`})}return b.slice(0,3)}let o=/(?:高峰期|高峰|峰值)[^。;;\n]{0,20}?(?:约)?\s*([\d,]+)\s*人/g,p=/(?:劳动力|作业人员|施工人员)[^。;;\n]{0,16}?(?:约)?\s*([\d,]+)\s*人/g;function q(a){let b=[],c=[];for(let b of[o,p])for(let d of a.matchAll(b)){let a=Number(d[1].replace(/[,,]/gu,""));Number.isFinite(a)&&a>0&&c.push({value:a,text:d[0].trim().slice(0,40)})}let d=function(a){let b=[],c=a.split(/\r?\n/u),d=/^\|.+\|$/u,e=/阶段|时期|工期|工序|进度/u,f=/人数|劳动力|作业人员|施工人员|投入人数/u,g=/^:?-{3,}:?$/u,h=a=>a.replace(/[*_`~]/gu,"").trim();for(let a=0;a<c.length;a+=1){let i,j,k;if(!d.test(c[a].trim()))continue;let l=[];for(;a<c.length&&d.test(c[a].trim());)l.push(c[a].trim()),a+=1;if(a-=1,l.length<3)continue;let m=a=>a.split("|").map(a=>a.trim()).slice(1,-1),n=l.findIndex((a,b)=>b>0&&m(a).every(a=>g.test(a)));if(1===n&&l.length>=3)i=m(l[0]).map(h),j=l.slice(2);else{if(-1!==n||!(l.length>=2))continue;let a=m(l[0]).map(h);if(!(e.test(a.join("|"))&&f.test(a.join("|"))))continue;i=a,j=l.slice(1)}let o=i.findIndex(a=>e.test(a)),p=i.findIndex(a=>f.test(a));if(p<0||o>=0&&o===p||/岗位/u.test(i.join("|"))&&/职责|持证|职称/u.test(i.join("|")))continue;let q=[],r=0;for(let a of j){let b=m(a),c=b[p]||"",d=/^([\d,]+)\s*人?$/u.exec(c);if(!d)continue;let e=Number(d[1].replace(/[,,]/gu,""));if(Number.isFinite(e)&&!(e<=0)){if(b.some((a,b)=>b!==p&&/合计|总计|小计/u.test(a))){k=e;continue}q.push(e),r+=e}}if(0===q.length&&void 0===k)continue;let s=Math.max(...q.length>0?q:[k||0]);b.push({countCells:q,totalCell:k,detailSum:r,peak:s})}return b}(a),e=d.map(a=>a.peak),f=(a,c)=>b.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:a,suggestion:c});for(let a=0;a<c.length;a+=1)for(let b=a+1;b<c.length;b+=1){let[d,e]=[c[a],c[b]],g=Math.abs(d.value-e.value)/Math.max(d.value,e.value);if(g>.3){f(`劳动力数据矛盾:正文“${d.text}”(${d.value} 人)与“${e.text}”(${e.value} 人)互斥(相差 ${Math.round(100*g)}%)`,"劳动力峰值数据必须全文唯一:以分阶段投入明细表为准统一正文各处峰值表述,删除矛盾数字。"),a=c.length;break}}if(e.length>=2){let a=Math.max(...e),b=Math.min(...e),c=Math.abs(a-b)/a;c>.3&&f(`劳动力数据矛盾:分阶段投入明细表峰值 ${b} 人与另一劳动力表峰值 ${a} 人互斥(相差 ${Math.round(100*c)}%)`,"劳动力峰值数据必须全文唯一:统一各劳动力表格的峰值数据,删除矛盾表格数字。")}let g=c.reduce((a,b)=>Math.max(a,b.value),0),h=e.length>0?Math.max(...e):void 0;if(void 0!==h&&g>0&&g>1.3*h){let a=c.find(a=>a.value===g)?.text||"";f(`劳动力数据矛盾:正文表述“${a}”达 ${g} 人,而分阶段投入明细表最大峰值为 ${h} 人(超出 ${Math.round((g-h)/h*100)}%)`,"劳动力投入数据必须全文统一:以分阶段明细表为准复核正文峰值表述,删除与表格矛盾的“高峰期 X 人”措辞或调整表格数据。")}let i=[];for(let b of a.matchAll(/(?:高峰期|高峰|峰值)[^。;;\n]{0,16}?控制(?:在|为|到)?(?:约)?\s*([\d,]+)\s*人(?:以内|以下|之内)?/gu)){let a=Number(b[1].replace(/[,,]/gu,""));Number.isFinite(a)&&a>0&&i.push(a)}if(i.length>0){let a=Math.max(...i),b=[...c,...void 0!==h?[{value:h}]:[]].filter(b=>b.value>a);if(b.length>0){let c=Math.max(...b.map(a=>a.value));f(`劳动力数据矛盾:正文“高峰期总人数控制在${a}人”的上限表述与峰值表述 ${c} 人不自洽(阶段高峰投入超出控制上限 ${Math.round((c-a)/a*100)}%)`,"总量控制上限与各阶段峰值必须自洽:阶段高峰人数不得超过全文宣称的高峰控制人数;以分阶段投入明细表为准修正控制目标或各阶段峰值表述。")}}for(let a of d){if(void 0===a.totalCell||a.countCells.length<2)continue;let b=Math.abs(a.totalCell-a.detailSum)/Math.max(a.totalCell,a.detailSum);b>.1&&f(`劳动力数据矛盾:劳动力表合计行 ${a.totalCell} 人与明细行之和 ${a.detailSum} 人不符(差 ${Math.round(100*b)}%)`,"劳动力表合计必须等于各明细行人数之和:统一合计行与明细行数据,删除矛盾数字。")}let j=[...a.matchAll(/([\d,]+)\s*(?:个)?工日/gu)].map(a=>Number(a[1].replace(/[,,]/gu,""))).filter(a=>Number.isFinite(a)&&a>0),k=[...a.matchAll(/(?:工期|总工期|计划工期)[^。;;\n]{0,16}?(\d{2,4})\s*(?:个)?(?:日历)?天/gu)].map(a=>Number(a[1])).filter(a=>Number.isFinite(a)&&a>=30&&a<=3e3);if(j.length>0&&g>0&&k.length>0){let a=Math.max(...j),b=Math.max(...k),c=g*b*1.3,d=g*b*.1;(a>c||a<d)&&f(`劳动力数据矛盾:总工日 ${a} 个与峰值 ${g} 人\xd7总工期 ${b} 天不自洽(合理区间约 ${Math.round(d)}~${Math.round(c)} 个)`,"总工日必须与劳动力峰值和总工期量级自洽:按各阶段人数\xd7阶段工期重算总工日,或修正峰值人数/总工期表述。")}return b.slice(0,5)}let r={slope:"基坑放坡开挖、土钉墙喷锚支护坡面",pile:"钻孔灌注桩、排桩、地下连续墙围护结构"};async function s(a){let b=[],c=a.split(/\n{2,}/u).filter(a=>a.trim().length>=30);if(0===c.length)return b;let d=await (0,f.Mv)(c,Object.values(r)),e=a=>d(a,r.slope)>=f.Eh,g=/钻孔灌注桩|灌注桩|排桩|地下连续墙|咬合桩|支护桩/u,h=a=>g.test(a)&&d(a,r.pile)>=f.Eh,i=c.filter(a=>e(a)&&!h(a)),j=c.filter(a=>h(a)&&!e(a));return 0===i.length||0===j.length||b.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`基坑支护方案前后不一致:放坡喷锚类支护表述与灌注桩排桩类支护表述分别成段出现(放坡喷锚类 ${i.length} 段、灌注桩排桩类 ${j.length} 段),属跨模板拼接断裂`,suggestion:"支护形式必须全文统一为一种体系(以图纸/地质条件为准):确定采用放坡喷锚或灌注桩排桩后,删除另一种体系的表述,并补充基坑开挖深度数值支撑危大分级判定。"}),b}let t=/^#{2,4}\s+(?:\d+(?:\.\d+)*\s+)?[^\n]*(?:危大工程(?:辨识)?(?:清单|识别)|危大(?:工程)?(?:及超危大)?(?:清单|识别|辨识))[^\n]*$/gmu;function u(a){let b=[],c=function(a){let b=a.split(/\r?\n/u),c=[];for(let a=0;a<b.length;a+=1){if(!t.test(b[a].trim()))continue;let d=[];for(let c=a+1;c<Math.min(b.length,a+30);c+=1){let a=b[c].trim();if(/^#{1,6}\s/u.test(a))break;let e=/^(?:\d+[.、.)]|[-*•])?\s*([^。;;|]{2,40})$/u.exec(a)?.[1];e&&d.push(e.replace(/^[\s\d.、()()【】-]+/u,"").replace(/[((【][^))】]*[))】]/gu,"").replace(/施工$/u,"").replace(/作业$/u,"").replace(/\s+/gu,"").trim())}d.length>=2&&c.push({title:b[a].trim(),items:[...new Set(d)]})}return c}(a);if(c.length<2)return b;for(let a=0;a<c.length;a+=1)for(let d=a+1;d<c.length;d+=1){let e=c[a],f=c[d],g=e.items.filter(a=>!f.items.includes(a)),h=f.items.filter(a=>!e.items.includes(a));(0!==g.length||0!==h.length)&&b.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`危大工程辨识清单不一致:“${e.title.slice(0,30)}”(${e.items.length} 项)与“${f.title.slice(0,30)}”(${f.items.length} 项)存在差异:前者独有【${g.join("、")||"无"}】,后者独有【${h.join("、")||"无"}】`,suggestion:"全文危大工程辨识清单必须唯一且一致:合并两处清单,统一项名、数量与分级表述,避免评标专家以清单矛盾质疑辨识深度。"})}return b.slice(0,3)}let v=[{name:"施工工地周边100%围挡",query:"施工工地周边设置围挡封闭管理"},{name:"物料堆放100%覆盖",query:"物料堆放覆盖防尘"},{name:"出入车辆100%冲洗",query:"出入车辆冲洗设施清洗出场"},{name:"施工现场地面100%硬化",query:"施工现场场地地面硬化"},{name:"拆迁工地100%湿法作业",query:"拆迁工地湿法作业洒水降尘"},{name:"渣土车辆100%密闭运输",query:"渣土车辆密闭运输防止遗撒"}];function w(a){let b=[];for(let c of a.split(/\r?\n/u)){let a=c.trim();if(!(!a||/^#{1,6}\s/u.test(a)||/^\s*\|/u.test(a)))for(let c of a.split(/(?<=[。!?!?;;])/u)){let a=c.trim();a.length>=8&&a.length<=120&&b.push(a)}}let c=[...new Set(b)];if(c.length<=400)return c;let d=Math.ceil(c.length/400);return c.filter((a,b)=>b%d==0).slice(0,400)}async function x(a,b){if(0===b.length||0===a.length)return new Map;let c=await (0,f.Mv)(a.map(a=>a.text),b);return new Map(a.map(a=>[a.key,b.some(b=>c(a.text,b)>=.6)]))}async function y(a){let b=[];if(!/扬尘|环保|文明施工|绿色施工/u.test(a))return b;let c=await x(v.map(a=>({key:a.name,text:a.query})),w(a)),d=/(?:本项目|本工程|该工程|该项目|本标段|本施工项目)[^。;;\n]{0,30}(?:无拆迁|不涉及拆迁|无房屋拆除|无拆除)/u.test(a),e=v.filter(a=>!c.get(a.name)).filter(a=>!("拆迁工地100%湿法作业"===a.name&&d)).map(a=>a.name);return 0===e.length||b.push({level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"llm_repairable",message:`“扬尘治理六个百分百”未逐项落实:缺少【${e.join("、")}】(${v.length-e.length}/${v.length} 项命中)`,suggestion:"按检查规范第七部分要求逐条表述六项措施:工地周边100%围挡、物料堆放100%覆盖、出入车辆100%冲洗、施工现场地面100%硬化、拆迁工地100%湿法作业、渣土车辆100%密闭运输。"}),b}let z=/建设地点|工程地点|项目地点|实施地点|服务地点|交付地点|建设地址/u,A=["安徽","合肥","芜湖","蚌埠","淮南","马鞍山","淮北","铜陵","安庆","黄山","滁州","阜阳","宿州","六安","亳州","池州","宣城"];async function B(a,b){let c=[],d=b.project.some(a=>z.test(`${a.fieldName||""}${a.key||""}`)&&A.some(b=>(0,e.lG)(a.value).includes(b))),f=[];if(d&&(f.push({key:"award",text:"争创省市级优质工程奖、安全文明标准化工地"}),f.push({key:"greenQuant",text:"非传统水源利用率、废弃物回收率等绿色施工量化指标"})),f.push({key:"workInjury",text:"按规定为作业人员办理工伤保险"}),0===f.length)return c;let g=await x(f,w(a));return d&&(g.get("award")||c.push({level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"llm_repairable",message:"属地创优目标缺失:正文未提及省市级优质工程/文明标准化工地等创优目标(安徽省属地适配项)",suggestion:"在质量目标或创优规划小节补写与项目实际规模相符的创优目标表述;奖项名称必须以评分项要求提取结果(招标文件原文)为准逐字落位,禁止自行编造或替换为其他奖项名称。"}),/四节一环保|绿色施工|节水|节材|节能/u.test(a)&&!g.get("greenQuant")&&c.push({level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"llm_repairable",message:"四节一环保量化指标缺失:非传统水源利用率/漏损率/土方平衡率/废弃物回收率等均未量化(附录八基准对照项)",suggestion:"在绿色施工章节补充量化指标(非传统水源利用率、管网漏损率、土方平衡率、可回收废弃物回收率等)与模板周转次数,数值参考行业通用水平与附录八基准,不得编造极端值。"})),/劳务|农民工|工资/u.test(a)&&!g.get("workInjury")&&c.push({level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"llm_repairable",message:"工伤保险表述缺失:正文有劳务/农民工管理内容但未提及工伤保险缴纳(政策合规漏项)",suggestion:"在劳务管理/农民工工资保障小节补充“按规定为作业人员办理工伤保险”表述。"}),c}let C=RegExp(`(?:^|
|
|
14
14
|
)(?:#{1,6}\\s+[^
|
|
15
15
|
]*
|
|
16
16
|
+)?([^
|
|
17
17
|
|#][^。!?!?
|
|
18
|
-
]{18,60})[。!?!?]`,"gu");function D(a){let b=[],c=new Map;for(let b of a.matchAll(C)){let a=b[1].trim(),d=a.replace(/[\d,,.。%%㎡m2²]/gu,"").slice(0,16);if(d.length<10)continue;let e=c.get(d)||{count:0,sample:a};e.count+=1,c.set(d,e)}for(let{count:a,sample:d}of c.values())a<3||b.push({level:"warning",severity:"warning",category:"style",owner:"llm",repairability:"llm_repairable",message:`段首固定开场机械重复 ${a} 次:“${d.slice(0,30)}…”`,suggestion:"同一段首句式只保留首次出现处,其余处按所在章节语境改写为差异化开场,避免模板化套话观感。"});return b.slice(0,3)}function E(a){let b,c=a.split("\n"),d=[];for(let a=0;a<c.length;a+=1){let e=/^(#{2,4})\s+(.+)$/u.exec(c[a].trim());if(e){let c=e[1].length;/(?:工程概况|项目概况|基本信息)/u.test(e[2])?b={index:a,level:c}:b&&c<=b.level&&(d.push([b.index,a]),b=void 0)}}b&&d.push([b.index,c.length]);let e=a=>d.some(([b,c])=>a>=b&&a<c),f=c.filter((a,b)=>e(b)).join("\n"),g=[];for(let a=0;a<c.length;a+=1){if(e(a))continue;let b=/本项目为|本工程为|该项目为|该工程为/u.exec(c[a]);if(!b)continue;let d=c[a].slice(b.index).split(/[。!?!?]/u)[0];d&&d.length>=12&&g.push(d)}return{overviewBody:f,sentences:g}}function F(a,b={}){let c=[],{overviewBody:d,sentences:e}=E(a);if(0===e.length||!d||!b.semanticSimilarity)return c;let f=[];for(let a of e)if(b.semanticSimilarity(a,d)>=.6&&f.push(a.slice(0,36)),f.length>=3)break;return 0===f.length||c.push({level:"error",severity:"blocker",category:"style",owner:"llm",repairability:"llm_repairable",message:`项目概况段跨章复述不得出现:概况章外有 ${f.length} 处以“本项目为/本工程为”等总述开头整段复述概况内容:${f.map(a=>`“${a}…”`).join("、")}`,suggestion:"总述数据只在工程概况类小节集中交代一次:其他章节直接写本章内容,仅可引用所需的具体数字(如“45日历天总工期”),不得复述完整概况段。"}),c}function G(a,b){let c,{overviewBody:d,sentences:e}=E(a);if(0===e.length||!d)return a;let f=a.split(/\r?\n/u),g=[];for(let a=0;a<f.length;a+=1){let b=/^(#{2,4})\s+(.+)$/u.exec(f[a].trim());if(b){let d=b[1].length;/(?:工程概况|项目概况|基本信息)/u.test(b[2])?c={index:a,level:d}:c&&d<=c.level&&(g.push([c.index,a]),c=void 0)}}c&&g.push([c.index,f.length]);let h=!1,i=f.map((a,c)=>{if(g.some(([a,b])=>c>=a&&c<b)||/^#{1,6}\s/u.test(a.trim())||/^\s*\|/u.test(a.trim())||!/本项目为|本工程为|该项目为|该工程为/u.test(a))return a;let e=a.split(/(?<=[。!?!?])/u).filter(a=>{if(!/本项目为|本工程为|该项目为|该工程为/u.test(a))return!0;let c=a.split(/[。!?!?]/u)[0];return c.length<12||.6>b(c,d)});return e.join("")!==a&&(h=!0),e.join("")});return h?i.join("\n"):a}let H=["销项","复查","整改","闭环"];function I(a){let b=[],c=(0,d.V7)(a);if(c<3e3)return b;let e=[];for(let b of H){let d=a.split(b).length-1;e.push(d/c*1e3)}let f=Math.max(...e),g=H[e.indexOf(f)];return f>=3&&b.push({level:"warning",severity:"warning",category:"style",owner:"llm",repairability:"llm_repairable",message:`闭环句式模板化密集:“${g}”达 ${f.toFixed(1)} 次/千字(销项/复查/整改/闭环统一结尾高度重复)`,suggestion:"保留关键控制环节的闭环表述,其余改为差异化的过程控制语言(检验批验收、实测实量、旁站记录等),提升语言精练度。"}),b}let J=["专项设计文件尚未完成,待后续补充","评分指标存在缺口尚未明确","依据承诺函后续跟踪完善"];async function K(a){let b=[],c=a.split(/\n+/u).filter(a=>a.trim()&&!/^\s*(#{1,6}\s+|\||[-*+]\s|>)/u.test(a)).flatMap(a=>a.split(/[。;;]/u)).map(a=>a.trim()).filter(a=>a.length>=12);if(0===c.length)return b;let d=await (0,f.Mv)(c,[...J]),e=[...new Set(c.filter(a=>J.some(b=>d(a,b)>=f.Eh)))];if(0===e.length)return b;for(let a of e)b.push({level:"error",severity:"blocker",category:"style",owner:"llm",repairability:"llm_repairable",message:`自伤表述候选:“${a}”暴露投标短板,需按上下文判定后改写`,suggestion:"投标文件不得主动暴露“专项设计未完成/指标存在缺口”等短板:改写为正向落实表述(如“按施工图绿色建筑专篇编制专项方案,逐项落实评分项并跟踪验收”);如属现场条件合理风险描述(地质/管线尚不明确),保留但需配套勘查与应对措施。"});return b.slice(0,3)}let L=/([\u4e00-\u9fa5]{2})\1/gu;function M(a){let b=[...new Set(a.match(L)||[])].slice(0,3);return 0===b.length?[]:[{level:"error",severity:"blocker",category:"style",owner:"llm",repairability:"llm_repairable",message:`正文存在叠词重复表述:${b.map(a=>`“${a}”`).join("、")}`,suggestion:"删除紧邻重复字词,保持语句完整通顺(“执行执行”改为“执行”)。"}]}function N(a){return a.replace(L,"$1")}let O=/暂列金额|暂估价|报价明细|综合单价|清单合价|预留金|投标报价/u,P=/(?:税率|增值税)[^。;;\n]{0,12}\d/u,Q=/合同估算价|合同估算价格|投资估算|估算价格|工程估算价|最高投标限价|招标控制价/u,R=/材料价格|商务报价|投标总价|合同总价|工程总价/u,S=["暂列金额与暂估价的报价明细","综合单价与清单合价的商务数据","投标报价与费率标准的商务条款"],T=["合同估算价与投资估算的项目信息","最高投标限价与招标控制价的公开信息","商务数据不得写入施工组织设计正文的约束说明"];async function U(a){return(0,g.A)({prototypes:[...S],negativePrototypes:[...T],embedDocuments:a})}async function V(a,b){let c=[],d=await U(b),e=[];for(let b of a.split(/\r?\n/u)){let a=b.trim();if(!(/^#{1,6}\s/u.test(a)||/^\s*\|/u.test(a))&&(O.test(b)||P.test(b)||R.test(b)))for(let a of(P.test(b)&&c.push("税率/增值税"),b.split(/(?<=[。;;])\s*/u))){let b=a.match(O)||[],d=Q.test(a),f=R.test(a);!(b.length>0)||d||f?(b.length>0&&(d||f)||f&&0===b.length)&&e.push(a):c.push(...b)}}if(e.length>0){let a=await d(e);e.forEach((b,d)=>{if(!a[d])return;let e=b.match(O)||[],f=b.match(R)||[];c.push(...e.length>0?e:f)})}let f=[...new Set(c)].slice(0,4);return 0===f.length?[]:[{level:"error",severity:"blocker",category:"style",owner:"llm",repairability:"llm_repairable",message:`正文出现商务条款数据:${f.join("、")}`,suggestion:"商务数据(暂列金额/暂估价/综合单价/税率等)不得写入施组正文:删除该句或改写为定性表述(如“按合同约定执行”),商务口径仅保留在项目信息表中。"}]}function W(a){return a.split(/(?<=[。;;])\s*/u).filter(a=>!!(/^\s*\|/u.test(a)||/^#{1,6}\s/u.test(a))||!(O.test(a)||P.test(a))).join("")}function X(a){return a.split(/\r?\n/u).map(a=>{let b=a.trim();return/^#{1,6}\s/u.test(b)||/^\s*\|/u.test(b)||!O.test(a)&&!P.test(a)?a:a.split(/(?<=[。;;])\s*/u).filter(a=>!(O.test(a)||P.test(a))).join("")}).join("\n")}let Y=[{key:"excavation",label:"基坑支护及土方外运",re:/基坑支护/u},{key:"zero",label:"地下结构出正负零",re:/正负零|地下室结构/u},{key:"topping",label:"主体结构封顶",re:/主体(?:结构)?封顶/u},{key:"decoration",label:"装饰装修及幕墙",re:/装饰装修/u},{key:"mep",label:"机电安装及智能化调试",re:/机电安装/u},{key:"completion",label:"室外工程及竣工验收",re:/竣工验收/u}];function Z(a){let b=[],c=new Map;for(let b of function(a){let b=[],c=(a,c,d)=>{let e=Y.find(b=>b.re.test(a))?.key;void 0!==e&&Number.isFinite(c)&&c>=1&&c<=3e3&&b.push({key:e,day:c,raw:d})};for(let b of a.matchAll(/第(\d{2,3})日[^。;;\n]{0,14}?完成[^。;;\n]{0,12}?(基坑支护及土方外运|装饰装修及幕墙|机电安装及智能化调试|室外工程及竣工验收|地下结构出正负零|主体结构封顶|正负零|封顶)/gu))c(b[2],Number(b[1]),b[0].slice(0,40));for(let b of a.matchAll(/(基坑支护|正负零|封顶|装饰装修|机电安装|竣工验收)(?:(?!(?:第\d{2,3}[日天]|,|、)).){0,8}?完成[^。;;\n]{0,10}?第(\d{2,3})[日天]/gu))c(b[1],Number(b[2]),b[0].slice(0,40));for(let b of a.matchAll(/(主体(?:结构)?封顶)(?:(?!(?:第\d{2,3}[日天]|,|、|完成)).){0,20}?第(\d{2,3})日/gu))c(b[1],Number(b[2]),b[0].slice(0,40));let d=new Set;return b.filter(a=>{let b=`${a.key}:${a.raw}`;return!d.has(b)&&(d.add(b),!0)})}(a)){let a=c.get(b.key)||[];a.push(b),c.set(b.key,a)}for(let a of Y){let d=c.get(a.key);if(!d||d.length<2)continue;let e=[...new Set(d.map(a=>a.day))];if(e.length<2||Math.max(...e)-Math.min(...e)<5)continue;let f=[...new Set(d.map(a=>a.raw))].slice(0,4).join("、");b.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`节点工期口径矛盾:“${a.label}”节点出现 ${e.map(a=>`${a}日`).join(" 与 ")} 两套口径:${f}`,suggestion:`关键节点完成时间必须全文唯一:以总进度计划表为准统一“${a.label}”节点日期,删除正文/其他表中矛盾的“第N日”表述。`})}return b.slice(0,4)}let $=[{key:"xps",label:"挤塑聚苯板(XPS)厚度",unit:"mm",kind:"number",patterns:[/(?:挤塑聚苯|XPS)(?:(?!(?:宽度|拼缝|不大于|不超过|小于|≤|采用|使用|选用|铺设|粘贴)).){0,40}?(\d+(?:\.\d+)?)\s*mm/gu,/(\d+(?:\.\d+)?)\s*mm[^。;;\n|]{0,10}?(?:挤塑聚苯|XPS)/gu]},{key:"cushion",label:"垫层混凝土强度等级",unit:"C标号",kind:"code",patterns:[/垫层[^。;;\n|]{0,20}?(C\d{2})/gu]},{key:"transformer",label:"箱式变压器容量",unit:"kVA",kind:"number",patterns:[/(\d+)\s*kVA[^。;;\n|]{0,12}?变压器/gu,/变压器[^。;;\n|]{0,12}?(\d+)\s*kVA/gu]},{key:"formwork",label:"模板周转次数",unit:"次",kind:"number",patterns:[/模板周转(?:次数|使用)?[^。;;\n|]{0,15}?(\d+)\s*次/gu]},{key:"block",label:"蒸压加气混凝土砌块强度等级",unit:"A标号",kind:"code",patterns:[/(?:蒸压加气混凝土|加气混凝土)?砌块[^。;;\n]{0,24}?(A\d+(?:\.\d+)?)/gu]},{key:"extinguisher",label:"干粉灭火器数量",unit:"具",kind:"number",patterns:[/灭火器[^。;;\n]{0,24}?(\d+)\s*具/gu]},{key:"pump",label:"潜水泵数量",unit:"台",kind:"number",patterns:[/潜水泵[^。;;\n]{0,24}?(\d+)\s*台/gu]},{key:"firstaid",label:"急救箱数量",unit:"套/个",kind:"number",patterns:[/急救箱[^。;;\n]{0,24}?(\d+)\s*(?:套|个)/gu]}],_=/\d+(?:\.\d+)?\s*(?:mm|kVA|次|具|台|套|个)\s*[//]\s*\d+/u;function aa(a){let b=[];for(let c of $){let d=new Set,e=[];for(let b of c.patterns)for(let c of a.matchAll(b)){let a=c[0].slice(0,40);_.test(a)||(d.add(c[1]),e.push(a))}if(!(d.size<2))if("code"===c.kind)b.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`材料参数口径矛盾:“${c.label}”出现 ${[...d].map(a=>`${a}${c.unit}`).join(" 与 ")} 两套口径:${[...new Set(e)].slice(0,3).join("、")}`,suggestion:`同一材料参数全文只允许一个口径:以设计图纸/工程量清单为准统一“${c.label}”,删除矛盾表述。`});else{let a=[...d].map(Number).filter(Number.isFinite);if(a.length<2)continue;let f=Math.max(...a);if(f-Math.min(...a)<=.2*f)continue;b.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`材料/设备数量口径矛盾:“${c.label}”出现 ${a.map(a=>`${a}${c.unit}`).join(" 与 ")} 两套口径:${[...new Set(e)].slice(0,3).join("、")}`,suggestion:`同一设备/材料数量全文只允许一个口径:以应急物资清单/施工部署为准统一“${c.label}”,删除矛盾表述。`})}}return b.slice(0,8)}let ab=/桩基|灌注桩|钻孔桩|打桩|成桩|桩机/u;function ac(a){let b=function(a){let b=[];for(let c of[...a.matchAll(/^#{3,4}\s+[^\n]*(?:地基与基础)[^\n]*$/gmu)]){let d=(c.index||0)+c[0].length,e=a.slice(d).search(/^#{2,4}\s+/mu),f=a.slice(d,e>=0?d+e:a.length);b.push(f)}return b}(a);if(0===b.length||b.some(a=>ab.test(a)))return[];let c=[];for(let b of a.split(/\r?\n/u)){let a=b.trim();!(!a||/^#{1,6}\s/u.test(a))&&ab.test(b)&&c.push(a.slice(0,48))}let d=[...new Set(c)].slice(0,5);return d.length<2?[]:[{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`桩基表述残留:地基与基础章节施工流程为筏板/独立基础(无桩基工序),但全文另有 ${d.length} 处桩基表述:${d.join("、")}`,suggestion:"本项目基础形式不含桩基:删除全文所有桩基/桩机表述,进度计划表关键线路工序、质量验收划分表、隐蔽验收表均改为本项目实际基础工序(垫层/底板钢筋/混凝土)。"}]}let ad=/^\s*\|\s*计划工期\s*\|([^|\n]*)\|/u,ae=/工期延误|延误|违约|切除|赔偿|罚款|解除|扣减/u;function af(a){let b=[];for(let c of a.split(/\r?\n/u)){let a=ad.exec(c);if(!a)continue;let d=(a[1]??"").trim();d&&ae.test(d)&&b.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`基本信息表「计划工期」字段错填违约条款文字:“${d.slice(0,40)}”`,suggestion:"「计划工期」字段应填日历天数值(与招标文件前附表一致,如「540个日历天」);工期延误违约条款文字应放在工期风险管控章节,不得占用基本信息表字段。"})}return b.slice(0,2)}let ag=/基础|支护|围护|桩|结构|开挖|放坡|喷锚|排桩|连续墙|土钉|锚杆|标高|深度|形式|体系/u;function ah(a){let b=a.replace(/\s+/gu,""),c=new Set;for(let a of b.matchAll(/([一-龥]{2,8})\/([一-龥]{2,8})/gu)){if(!ag.test(a[1])&&!ag.test(a[2]))continue;let d=Math.max(0,(a.index||0)-12),e=Math.min(b.length,(a.index||0)+a[0].length+12),f=b.slice(d,e);/采用|形式|方式|方案|选用|拟用|拟采用|为/u.test(f)&&c.add(`“${a[1]}/${a[2]}”`)}for(let a of b.matchAll(/[((]\s*或[^))]{1,48}[))]/gu)){let d=a[0].slice(1,-1);if(!/按图纸|按实|按图|待定|另行|视[^,。;]{0,8}而定|根据实际/u.test(d))continue;let e=Math.max(0,(a.index||0)-20),f=b.slice(e,(a.index||0)+a[0].length);ag.test(f)&&c.add(a[0].slice(0,30))}return 0===c.size?[]:[{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`关键设计决策两可表述:${[...c].join("、")} 以并列/悬置形态表述,基础形式、支护形式等关键决策必须在正文中唯一确定`,suggestion:"以设计图纸/勘察报告/工程量清单为准锁定唯一决策并删除两可表述:明确写出本项目基础形式与支护形式的具体做法(如「基础形式为筏板基础」「基坑支护采用放坡+喷锚」),禁止「或…按图纸实施」类悬置话术。"}]}function ai(a){let b=a.replace(/\s+/gu,"");if((b.match(/基坑|开挖|支护/gu)||[]).length<3)return[];for(let a of b.matchAll(/(?:深度|标高)[^。;,,]{0,12}-?\d+(?:\.\d+)?[^。;,,]{0,6}/gu)){let b=a[0];if(!/(?:超过|大于|小于|不[大低小]于|不低于|按|倍|依据|详见|参考|示意|每)/u.test(b))return[]}return[{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:"基坑深度数值未锁定:正文已有基坑支护/开挖成稿内容,但全文未出现「深度/标高+数值」的确定性表述(比较式阈值如「超过3m」不视为锁定),危大工程分级判定失去依据",suggestion:"从绑定资料(地质勘察报告/基坑支护设计图/基础平面图)锁定基坑开挖深度数值(如 5.85m)写入基坑支护小节;深度 ≥5m 的深基坑须同步标注危大工程分级与专家论证要求,禁止以「按图纸确定」回避深度数值。"}]}let aj=/[\u4e00-\u9fa5]{2,10}(?:杯|奖)(?![励金惩罚项])/gu,ak=/优质工程|文明工地|样板|标准化|观摩|示范|精品工程|结构优质|省优|市优/u;function al(a){let b=a;for(;;){let a=b.replace(/^(?:争创|争取|力争|争获|确保|获得|创建|力创|评为|荣获|标为|目标为|承诺|为)/u,"");if(a===b||!a)break;b=a}return b}function am(a,b,c){let d=new Set;for(let a of[...b.quality,...b.project,...b.schedule])for(let b of(0,e.lG)(a.value).matchAll(aj))d.add(al(b[0]));if(c?.extracted)for(let a of[...c.awardObjectives||[],...c.specialQualityStandards||[],...c.awardClauses||[]])for(let b of(a.text||"").matchAll(aj))d.add(al(b[0]));if(0===d.size)return[];let f=new Set;for(let b of a.matchAll(aj)){let a=al(b[0]);!d.has(a)&&(ak.test(a)||f.add(a))}return 0===f.size?[]:[{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`奖项表述与招标文件白名单不符:正文出现 ${[...f].join("、")},均未出现在招标文件评分项要求或绑定资料中`,suggestion:"创优目标必须以招标文件原文为准逐字落位(如「确保黄山杯」),禁止自行编造或替换为其他奖项名称;白名单外的奖项表述一律删除或替换为招标原文奖项。"}]}},46482:(a,b,c)=>{c.d(b,{Zk:()=>r,Tz:()=>u,X6:()=>s,fC:()=>v,l8:()=>t,JP:()=>q});var d=c(73024),e=c(76760),f=c(74329);c(25840),c(23500);var g=c(70933),h=c(70208),i=c(61373),j=c(78217);c(23760);var k=c(30355),l=c(44505),m=c(85016),n=c(22157);let o=[...k.P9.filter(a=>!n.Kd.includes(a)),...m.D$.source.split("|")];var p=c(95734);function q(a){let b=a.template.chapters.length,c=b>0?a.targetWords/b:a.targetWords,d=`${a.template.name}
|
|
18
|
+
]{18,60})[。!?!?]`,"gu");function D(a){let b=[],c=new Map;for(let b of a.matchAll(C)){let a=b[1].trim(),d=a.replace(/[\d,,.。%%㎡m2²]/gu,"").slice(0,16);if(d.length<10)continue;let e=c.get(d)||{count:0,sample:a};e.count+=1,c.set(d,e)}for(let{count:a,sample:d}of c.values())a<3||b.push({level:"warning",severity:"warning",category:"style",owner:"llm",repairability:"llm_repairable",message:`段首固定开场机械重复 ${a} 次:“${d.slice(0,30)}…”`,suggestion:"同一段首句式只保留首次出现处,其余处按所在章节语境改写为差异化开场,避免模板化套话观感。"});return b.slice(0,3)}function E(a){let b,c=a.split("\n"),d=[];for(let a=0;a<c.length;a+=1){let e=/^(#{2,4})\s+(.+)$/u.exec(c[a].trim());if(e){let c=e[1].length;/(?:工程概况|项目概况|基本信息)/u.test(e[2])?b={index:a,level:c}:b&&c<=b.level&&(d.push([b.index,a]),b=void 0)}}b&&d.push([b.index,c.length]);let e=a=>d.some(([b,c])=>a>=b&&a<c),f=c.filter((a,b)=>e(b)).join("\n"),g=[];for(let a=0;a<c.length;a+=1){if(e(a))continue;let b=/本项目为|本工程为|该项目为|该工程为/u.exec(c[a]);if(!b)continue;let d=c[a].slice(b.index).split(/[。!?!?]/u)[0];d&&d.length>=12&&g.push(d)}return{overviewBody:f,sentences:g}}function F(a,b={}){let c=[],{overviewBody:d,sentences:e}=E(a);if(0===e.length||!d||!b.semanticSimilarity)return c;let f=[];for(let a of e)if(b.semanticSimilarity(a,d)>=.6&&f.push(a.slice(0,36)),f.length>=3)break;return 0===f.length||c.push({level:"error",severity:"blocker",category:"style",owner:"llm",repairability:"llm_repairable",message:`项目概况段跨章复述不得出现:概况章外有 ${f.length} 处以“本项目为/本工程为”等总述开头整段复述概况内容:${f.map(a=>`“${a}…”`).join("、")}`,suggestion:"总述数据只在工程概况类小节集中交代一次:其他章节直接写本章内容,仅可引用所需的具体数字(如“45日历天总工期”),不得复述完整概况段。"}),c}function G(a,b){let c,{overviewBody:d,sentences:e}=E(a);if(0===e.length||!d)return a;let f=a.split(/\r?\n/u),g=[];for(let a=0;a<f.length;a+=1){let b=/^(#{2,4})\s+(.+)$/u.exec(f[a].trim());if(b){let d=b[1].length;/(?:工程概况|项目概况|基本信息)/u.test(b[2])?c={index:a,level:d}:c&&d<=c.level&&(g.push([c.index,a]),c=void 0)}}c&&g.push([c.index,f.length]);let h=!1,i=f.map((a,c)=>{if(g.some(([a,b])=>c>=a&&c<b)||/^#{1,6}\s/u.test(a.trim())||/^\s*\|/u.test(a.trim())||!/本项目为|本工程为|该项目为|该工程为/u.test(a))return a;let e=a.split(/(?<=[。!?!?])/u).filter(a=>{if(!/本项目为|本工程为|该项目为|该工程为/u.test(a))return!0;let c=a.split(/[。!?!?]/u)[0];return c.length<12||.6>b(c,d)});return e.join("")!==a&&(h=!0),e.join("")});return h?i.join("\n"):a}let H=["销项","复查","整改","闭环"];function I(a){let b=[],c=(0,d.V7)(a);if(c<3e3)return b;let e=[];for(let b of H){let d=a.split(b).length-1;e.push(d/c*1e3)}let f=Math.max(...e),g=H[e.indexOf(f)];return f>=3&&b.push({level:"warning",severity:"warning",category:"style",owner:"llm",repairability:"llm_repairable",message:`闭环句式模板化密集:“${g}”达 ${f.toFixed(1)} 次/千字(销项/复查/整改/闭环统一结尾高度重复)`,suggestion:"保留关键控制环节的闭环表述,其余改为差异化的过程控制语言(检验批验收、实测实量、旁站记录等),提升语言精练度。"}),b}let J=["专项设计文件尚未完成,待后续补充","评分指标存在缺口尚未明确","依据承诺函后续跟踪完善"];async function K(a){let b=[],c=a.split(/\n+/u).filter(a=>a.trim()&&!/^\s*(#{1,6}\s+|\||[-*+]\s|>)/u.test(a)).flatMap(a=>a.split(/[。;;]/u)).map(a=>a.trim()).filter(a=>a.length>=12);if(0===c.length)return b;let d=await (0,f.Mv)(c,[...J]),e=[...new Set(c.filter(a=>J.some(b=>d(a,b)>=f.Eh)))];if(0===e.length)return b;for(let a of e)b.push({level:"error",severity:"blocker",category:"style",owner:"llm",repairability:"llm_repairable",message:`自伤表述候选:“${a}”暴露投标短板,需按上下文判定后改写`,suggestion:"投标文件不得主动暴露“专项设计未完成/指标存在缺口”等短板:改写为正向落实表述(如“按施工图绿色建筑专篇编制专项方案,逐项落实评分项并跟踪验收”);如属现场条件合理风险描述(地质/管线尚不明确),保留但需配套勘查与应对措施。"});return b.slice(0,3)}let L=/([\u4e00-\u9fa5]{2})\1/gu;function M(a){let b=[...new Set(a.match(L)||[])].slice(0,3);return 0===b.length?[]:[{level:"error",severity:"blocker",category:"style",owner:"llm",repairability:"llm_repairable",message:`正文存在叠词重复表述:${b.map(a=>`“${a}”`).join("、")}`,suggestion:"删除紧邻重复字词,保持语句完整通顺(“执行执行”改为“执行”)。"}]}function N(a){return a.replace(L,"$1")}let O=/暂列金额|暂估价|报价明细|综合单价|清单合价|预留金|投标报价/u,P=/(?:税率|增值税)[^。;;\n]{0,12}\d/u,Q=/合同估算价|合同估算价格|投资估算|估算价格|工程估算价|最高投标限价|招标控制价/u,R=/材料价格|商务报价|投标总价|合同总价|工程总价/u,S=["暂列金额与暂估价的报价明细","综合单价与清单合价的商务数据","投标报价与费率标准的商务条款"],T=["合同估算价与投资估算的项目信息","最高投标限价与招标控制价的公开信息","商务数据不得写入施工组织设计正文的约束说明"];async function U(a){return(0,g.A)({prototypes:[...S],negativePrototypes:[...T],embedDocuments:a})}async function V(a,b){let c=[],d=await U(b),e=[];for(let b of a.split(/\r?\n/u)){let a=b.trim();if(!(/^#{1,6}\s/u.test(a)||/^\s*\|/u.test(a))&&(O.test(b)||P.test(b)||R.test(b)))for(let a of(P.test(b)&&c.push("税率/增值税"),b.split(/(?<=[。;;])\s*/u))){let b=a.match(O)||[],d=Q.test(a),f=R.test(a);!(b.length>0)||d||f?(b.length>0&&(d||f)||f&&0===b.length)&&e.push(a):c.push(...b)}}if(e.length>0){let a=await d(e);e.forEach((b,d)=>{if(!a[d])return;let e=b.match(O)||[],f=b.match(R)||[];c.push(...e.length>0?e:f)})}let f=[...new Set(c)].slice(0,4);return 0===f.length?[]:[{level:"error",severity:"blocker",category:"style",owner:"llm",repairability:"llm_repairable",message:`正文出现商务条款数据:${f.join("、")}`,suggestion:"商务数据(暂列金额/暂估价/综合单价/税率等)不得写入施组正文:删除该句或改写为定性表述(如“按合同约定执行”),商务口径仅保留在项目信息表中。"}]}function W(a){return a.split(/(?<=[。;;])\s*/u).filter(a=>!!(/^\s*\|/u.test(a)||/^#{1,6}\s/u.test(a))||!(O.test(a)||P.test(a))).join("")}function X(a){return a.split(/\r?\n/u).map(a=>{let b=a.trim();return/^#{1,6}\s/u.test(b)||/^\s*\|/u.test(b)||!O.test(a)&&!P.test(a)?a:a.split(/(?<=[。;;])\s*/u).filter(a=>!(O.test(a)||P.test(a))).join("")}).join("\n")}let Y=[{key:"excavation",label:"基坑支护及土方外运",re:/基坑支护/u},{key:"zero",label:"地下结构出正负零",re:/正负零|地下室结构/u},{key:"topping",label:"主体结构封顶",re:/主体(?:结构)?封顶/u},{key:"decoration",label:"装饰装修及幕墙",re:/装饰装修/u},{key:"mep",label:"机电安装及智能化调试",re:/机电安装/u},{key:"completion",label:"室外工程及竣工验收",re:/竣工验收/u}];function Z(a){let b=[],c=new Map;for(let b of function(a){let b=[],c=(a,c,d)=>{let e=Y.find(b=>b.re.test(a))?.key;void 0!==e&&Number.isFinite(c)&&c>=1&&c<=3e3&&b.push({key:e,day:c,raw:d})};for(let b of a.matchAll(/第(\d{2,3})日[^。;;\n]{0,14}?完成[^。;;\n]{0,12}?(基坑支护及土方外运|装饰装修及幕墙|机电安装及智能化调试|室外工程及竣工验收|地下结构出正负零|主体结构封顶|正负零|封顶)/gu))c(b[2],Number(b[1]),b[0].slice(0,40));for(let b of a.matchAll(/(基坑支护|正负零|封顶|装饰装修|机电安装|竣工验收)(?:(?!(?:第\d{2,3}[日天]|,|、)).){0,8}?完成[^。;;\n]{0,10}?第(\d{2,3})[日天]/gu))c(b[1],Number(b[2]),b[0].slice(0,40));for(let b of a.matchAll(/(主体(?:结构)?封顶)(?:(?!(?:第\d{2,3}[日天]|,|、|完成)).){0,20}?第(\d{2,3})日/gu))c(b[1],Number(b[2]),b[0].slice(0,40));let d=new Set;return b.filter(a=>{let b=`${a.key}:${a.raw}`;return!d.has(b)&&(d.add(b),!0)})}(a)){let a=c.get(b.key)||[];a.push(b),c.set(b.key,a)}for(let a of Y){let d=c.get(a.key);if(!d||d.length<2)continue;let e=[...new Set(d.map(a=>a.day))];if(e.length<2||Math.max(...e)-Math.min(...e)<5)continue;let f=[...new Set(d.map(a=>a.raw))].slice(0,4).join("、");b.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`节点工期口径矛盾:“${a.label}”节点出现 ${e.map(a=>`${a}日`).join(" 与 ")} 两套口径:${f}`,suggestion:`关键节点完成时间必须全文唯一:以总进度计划表为准统一“${a.label}”节点日期,删除正文/其他表中矛盾的“第N日”表述。`})}return b.slice(0,4)}let $=[{key:"xps",label:"挤塑聚苯板(XPS)厚度",unit:"mm",kind:"number",patterns:[/(?:挤塑聚苯|XPS)(?:(?!(?:宽度|拼缝|不大于|不超过|小于|≤|采用|使用|选用|铺设|粘贴)).){0,40}?(\d+(?:\.\d+)?)\s*mm/gu,/(\d+(?:\.\d+)?)\s*mm[^。;;\n|]{0,10}?(?:挤塑聚苯|XPS)/gu]},{key:"cushion",label:"垫层混凝土强度等级",unit:"C标号",kind:"code",patterns:[/垫层[^。;;\n|]{0,20}?(C\d{2})/gu]},{key:"transformer",label:"箱式变压器容量",unit:"kVA",kind:"number",patterns:[/(\d+)\s*kVA[^。;;\n|]{0,12}?变压器/gu,/变压器[^。;;\n|]{0,12}?(\d+)\s*kVA/gu]},{key:"formwork",label:"模板周转次数",unit:"次",kind:"number",patterns:[/模板周转(?:次数|使用)?[^。;;\n|]{0,15}?(\d+)\s*次/gu]},{key:"block",label:"蒸压加气混凝土砌块强度等级",unit:"A标号",kind:"code",patterns:[/(?:蒸压加气混凝土|加气混凝土)?砌块[^。;;\n]{0,24}?(A\d+(?:\.\d+)?)/gu]},{key:"extinguisher",label:"干粉灭火器数量",unit:"具",kind:"number",patterns:[/灭火器[^。;;\n]{0,24}?(\d+)\s*具/gu]},{key:"pump",label:"潜水泵数量",unit:"台",kind:"number",patterns:[/潜水泵[^。;;\n]{0,24}?(\d+)\s*台/gu]},{key:"firstaid",label:"急救箱数量",unit:"套/个",kind:"number",patterns:[/急救箱[^。;;\n|]{0,24}?(\d+)\s*(?:套|个)/gu]},{key:"towerCrane",label:"塔式起重机(塔吊)数量",unit:"台",kind:"number",patterns:[/(?:塔式起重机|塔吊)[^。;;\n|]{0,30}?(\d+)\s*台/gu,/(\d+)\s*台[^。;;\n|]{0,16}?(?:塔式起重机|塔吊)/gu]},{key:"hoist",label:"施工升降机数量",unit:"台",kind:"number",patterns:[/施工升降机[^。;;\n|]{0,30}?(\d+)\s*台/gu,/(\d+)\s*台[^。;;\n|]{0,16}?施工升降机/gu]},{key:"truckCrane",label:"汽车起重机(汽车吊)数量",unit:"台",kind:"number",patterns:[/(?:汽车起重机|汽车吊)[^。;;\n|]{0,30}?(\d+)\s*台/gu,/(\d+)\s*台[^。;;\n|]{0,16}?(?:汽车起重机|汽车吊)/gu]},{key:"rebarCutter",label:"钢筋切断机数量",unit:"台",kind:"number",patterns:[/钢筋切断机[^。;;\n|]{0,24}?(\d+)\s*台/gu]},{key:"rebarBender",label:"钢筋弯曲机数量",unit:"台",kind:"number",patterns:[/钢筋弯曲机[^。;;\n|]{0,24}?(\d+)\s*台/gu]},{key:"circularSaw",label:"圆盘锯数量",unit:"台",kind:"number",patterns:[/圆盘锯[^。;;\n|]{0,24}?(\d+)\s*台/gu]}],_=/\d+(?:\.\d+)?\s*(?:mm|kVA|次|具|台|套|个)\s*[//]\s*\d+/u;function aa(a){let b=[];for(let c of $){let d=new Set,e=[];for(let b of c.patterns)for(let c of a.matchAll(b)){let a=c[0].slice(0,40);_.test(a)||(d.add(c[1]),e.push(a))}if(!(d.size<2))if("code"===c.kind)b.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`材料参数口径矛盾:“${c.label}”出现 ${[...d].map(a=>`${a}${c.unit}`).join(" 与 ")} 两套口径:${[...new Set(e)].slice(0,3).join("、")}`,suggestion:`同一材料参数全文只允许一个口径:以设计图纸/工程量清单为准统一“${c.label}”,删除矛盾表述。`});else{let a=[...d].map(Number).filter(Number.isFinite);if(a.length<2)continue;let f=Math.max(...a);if(f-Math.min(...a)<=.2*f)continue;b.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`材料/设备数量口径矛盾:“${c.label}”出现 ${a.map(a=>`${a}${c.unit}`).join(" 与 ")} 两套口径:${[...new Set(e)].slice(0,3).join("、")}`,suggestion:`同一设备/材料数量全文只允许一个口径:以应急物资清单/施工部署为准统一“${c.label}”,删除矛盾表述。`})}}return b.slice(0,8)}let ab=/桩基|灌注桩|钻孔桩|打桩|成桩|桩机/u;function ac(a){let b=function(a){let b=[];for(let c of[...a.matchAll(/^#{3,4}\s+[^\n]*(?:地基与基础)[^\n]*$/gmu)]){let d=(c.index||0)+c[0].length,e=a.slice(d).search(/^#{2,4}\s+/mu),f=a.slice(d,e>=0?d+e:a.length);b.push(f)}return b}(a);if(0===b.length||b.some(a=>ab.test(a)))return[];let c=[];for(let b of a.split(/\r?\n/u)){let a=b.trim();!(!a||/^#{1,6}\s/u.test(a))&&ab.test(b)&&c.push(a.slice(0,48))}let d=[...new Set(c)].slice(0,5);return d.length<2?[]:[{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`桩基表述残留:地基与基础章节施工流程为筏板/独立基础(无桩基工序),但全文另有 ${d.length} 处桩基表述:${d.join("、")}`,suggestion:"本项目基础形式不含桩基:删除全文所有桩基/桩机表述,进度计划表关键线路工序、质量验收划分表、隐蔽验收表均改为本项目实际基础工序(垫层/底板钢筋/混凝土)。"}]}let ad=/^\s*\|\s*计划工期\s*\|([^|\n]*)\|/u,ae=/工期延误|延误|违约|切除|赔偿|罚款|解除|扣减/u;function af(a){let b=[];for(let c of a.split(/\r?\n/u)){let a=ad.exec(c);if(!a)continue;let d=(a[1]??"").trim();d&&ae.test(d)&&b.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`基本信息表「计划工期」字段错填违约条款文字:“${d.slice(0,40)}”`,suggestion:"「计划工期」字段应填日历天数值(与招标文件前附表一致,如「540个日历天」);工期延误违约条款文字应放在工期风险管控章节,不得占用基本信息表字段。"})}return b.slice(0,2)}let ag=/基础|支护|围护|桩|结构|开挖|放坡|喷锚|排桩|连续墙|土钉|锚杆|标高|深度|形式|体系/u;function ah(a){let b=a.replace(/\s+/gu,""),c=new Set;for(let a of b.matchAll(/([一-龥]{2,8})\/([一-龥]{2,8})/gu)){if(!ag.test(a[1])&&!ag.test(a[2]))continue;let d=Math.max(0,(a.index||0)-12),e=Math.min(b.length,(a.index||0)+a[0].length+12),f=b.slice(d,e);/采用|形式|方式|方案|选用|拟用|拟采用|为/u.test(f)&&c.add(`“${a[1]}/${a[2]}”`)}for(let a of b.matchAll(/[((]\s*或[^))]{1,48}[))]/gu)){let d=a[0].slice(1,-1);if(!/按图纸|按实|按图|待定|另行|视[^,。;]{0,8}而定|根据实际/u.test(d))continue;let e=Math.max(0,(a.index||0)-20),f=b.slice(e,(a.index||0)+a[0].length);ag.test(f)&&c.add(a[0].slice(0,30))}return 0===c.size?[]:[{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`关键设计决策两可表述:${[...c].join("、")} 以并列/悬置形态表述,基础形式、支护形式等关键决策必须在正文中唯一确定`,suggestion:"以设计图纸/勘察报告/工程量清单为准锁定唯一决策并删除两可表述:明确写出本项目基础形式与支护形式的具体做法(如「基础形式为筏板基础」「基坑支护采用放坡+喷锚」),禁止「或…按图纸实施」类悬置话术。"}]}function ai(a){let b=a.replace(/\s+/gu,"");if((b.match(/基坑|开挖|支护/gu)||[]).length<3)return[];for(let a of b.matchAll(/(?:深度|标高)[^。;,,]{0,12}-?\d+(?:\.\d+)?[^。;,,]{0,6}/gu)){let b=a[0];if(!/(?:超过|大于|小于|不[大低小]于|不低于|按|倍|依据|详见|参考|示意|每)/u.test(b))return[]}return[{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:"基坑深度数值未锁定:正文已有基坑支护/开挖成稿内容,但全文未出现「深度/标高+数值」的确定性表述(比较式阈值如「超过3m」不视为锁定),危大工程分级判定失去依据",suggestion:"从绑定资料(地质勘察报告/基坑支护设计图/基础平面图)锁定基坑开挖深度数值(如 5.85m)写入基坑支护小节;深度 ≥5m 的深基坑须同步标注危大工程分级与专家论证要求,禁止以「按图纸确定」回避深度数值。"}]}let aj=/[\u4e00-\u9fa5]{2,10}(?:杯|奖)(?![励金惩罚项])/gu,ak=/优质工程|文明工地|样板|标准化|观摩|示范|精品工程|结构优质|省优|市优/u;function al(a){let b=a;for(;;){let a=b.replace(/^(?:争创|争取|力争|争获|确保|获得|创建|力创|评为|荣获|标为|目标为|承诺|为)/u,"");if(a===b||!a)break;b=a}return b}function am(a){let b=a.split(/\r?\n/u),c=[],d=a=>a.trim().replace(/^\|/u,"").replace(/\|$/u,"").split("|").map(a=>a.trim()),e=0;for(;e<b.length;){if(!/^\s*\|/u.test(b[e])){e+=1;continue}let a=e;for(;a<b.length&&/^\s*\|/u.test(b[a]);)a+=1;let f=b.slice(e,a);if(f.length>=3&&/^\s*\|[\s:|-]+\|/u.test(f[1]||"")){let b=d(f[0]).map(a=>a.replace(/[*_`]/gu,"").trim()),g=f.slice(2);c.push({startLine:e,endLine:a-1,header:b,firstCol:g.map(a=>d(a)[0]?.replace(/[*_`]/gu,"").trim()||"").filter(Boolean),bodyChars:g.join("").length,raw:f})}e=a}return c}function an(a,b){if(0===a.length||0===b.length)return 0;let c=new Set(a),d=new Set(b);return[...c].filter(a=>d.has(a)).length/new Set([...c,...d]).size}function ao(a){let b=[],c=am(a);if(c.length<2)return b;for(let a=0;a<c.length;a+=1)for(let d=a+1;d<c.length;d+=1){let e=c[a],f=c[d],g=e.header.length>0&&e.header.length===f.header.length&&e.header.every((a,b)=>a===f.header[b]),h=an(e.header,f.header),i=an(e.firstCol,f.firstCol);(g||h>=.7&&i>=.6)&&(f.startLine!==e.endLine+1||e.raw.join("\n")!==f.raw.join("\n"))&&b.push({level:"error",severity:"blocker",category:"style",owner:"llm",repairability:"llm_repairable",message:`表格重复:第 ${e.startLine+1}~${e.endLine+1} 行表格(表头:${e.header.slice(0,3).join("|")})与第 ${f.startLine+1}~${f.endLine+1} 行表格高度重复(表头重合 ${Math.round(100*h)}%、首列重合 ${Math.round(100*i)}%)`,suggestion:"同一文档内同主题表格只保留信息最全的一张:删除重复表格(保留字段与数据行更多的那张),删除后核对章节表格计划仍被覆盖。"})}return b.slice(0,3)}function ap(a){let b=am(a);if(b.length<2)return{markdown:a,removedCount:0};let c=a.split(/\r?\n/u),d=new Set;for(let a=0;a<b.length;a+=1)for(let c=a+1;c<b.length;c+=1){let e=b[a],f=b[c];if(d.has(e.startLine)||d.has(f.startLine))continue;let g=e.header.length>0&&e.header.length===f.header.length&&e.header.every((a,b)=>a===f.header[b]),h=an(e.header,f.header),i=an(e.firstCol,f.firstCol);if(!g&&!(h>=.7&&i>=.6)||f.startLine===e.endLine+1&&e.raw.join("\n")===f.raw.join("\n"))continue;let[j,k]=e.bodyChars>=f.bodyChars?[e,f]:[f,e];for(let a=k.startLine;a<=k.endLine;a+=1)d.add(a)}return 0===d.size?{markdown:a,removedCount:0}:{markdown:c.filter((a,b)=>!d.has(b)).join("\n"),removedCount:d.size}}function aq(a){let b=a.replace(/\s+/gu,"");return b.length>=40?b:void 0}function ar(a){let b=[],c=a.split(/\r?\n/u),d=new Map,e=[],f=()=>{let a=aq(e.join(""));if(a){let b=(d.get(a)||0)+1;d.set(a,b)}e=[]};for(let a of c){let b=a.trim();if(!b||/^#{1,6}\s/u.test(b)||/^\s*\|/u.test(b)){f();continue}if(/^[-*•]\s/u.test(b)){f(),e.push(b),f();continue}e.push(b)}for(let[a,c]of(f(),[...d.entries()].filter(([,a])=>a>=2).slice(0,3)))b.push({level:"error",severity:"blocker",category:"style",owner:"llm",repairability:"llm_repairable",message:`段落完全重复 ${c} 次:“${a.slice(0,40)}…”`,suggestion:"同一段落正文只保留首次出现处,删除其余重复段落;确需前后呼应时改写为差异化表述并压缩篇幅。"});return b}function as(a){let b=a.split(/\r?\n/u),c=new Set,d=new Set,e=[],f=[],g=()=>{let a=aq(e.join(""));a&&(c.has(a)?f.forEach(a=>d.add(a)):c.add(a)),e=[],f=[]};return(b.forEach((a,b)=>{let c=a.trim();if(!c||/^#{1,6}\s/u.test(c)||/^\s*\|/u.test(c))return void g();if(/^[-*•]\s/u.test(c)){g(),e=[c],f=[b],g();return}e.push(c),f.push(b)}),g(),0===d.size)?{markdown:a,removedCount:0}:{markdown:b.filter((a,b)=>!d.has(b)).join("\n"),removedCount:d.size}}function at(a,b,c){let d=new Set;for(let a of[...b.quality,...b.project,...b.schedule])for(let b of(0,e.lG)(a.value).matchAll(aj))d.add(al(b[0]));if(c?.extracted)for(let a of[...c.awardObjectives||[],...c.specialQualityStandards||[],...c.awardClauses||[]])for(let b of(a.text||"").matchAll(aj))d.add(al(b[0]));if(0===d.size)return[];let f=new Set;for(let b of a.matchAll(aj)){let a=al(b[0]);!d.has(a)&&(ak.test(a)||f.add(a))}return 0===f.size?[]:[{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`奖项表述与招标文件白名单不符:正文出现 ${[...f].join("、")},均未出现在招标文件评分项要求或绑定资料中`,suggestion:"创优目标必须以招标文件原文为准逐字落位(如「确保黄山杯」),禁止自行编造或替换为其他奖项名称;白名单外的奖项表述一律删除或替换为招标原文奖项。"}]}let au=/人[、,,]材[、,,]机/u,av=/(?:确保\s*)?([人材机])(?:员|力|料|械|工)?\s*的保障体系与措施/u;function aw(a){let b=a.match(av)?.[1];return b||(/劳动力|人员|作业人员|劳务/u.test(a)?"人":/材料|物资|周转/u.test(a)?"材":/机械|设备|机具|塔吊|起重机/u.test(a)?"机":void 0)}function ax(a){let b=[],c=a.split(/\r?\n/u);for(let a=0;a<c.length;a+=1){let d,e=/^##\s+(.+)$/u.exec(c[a].trim());if(!e||!au.test(e[1]))continue;let f=c.length;for(let b=a+1;b<c.length;b+=1)if(/^##\s+/u.test(c[b].trim())){f=b;break}let g=[];for(let e=a+1;e<f;e+=1){let a=/^###\s+(.+)$/u.exec(c[e].trim()),f=/^####\s+(.+)$/u.exec(c[e].trim());if(a){d={subject:aw(a[1]),title:a[1].trim()},g.push(d);continue}if(f&&d?.subject){let a=aw(f[1]);a&&a!==d.subject&&b.push({level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"llm_repairable",message:`人材机章层级错位:小节“${f[1].trim()}”挂在“${d.title}”之下(${"人"===a?"人":"材"===a?"材":"机"}的保障体系应独立成二级小节,不得并入${"人"===d.subject?"人":"材"===d.subject?"材":"机"}的保障体系)`,suggestion:`将“${f[1].trim()}”提升为独立二级小节,或将其内容合并到对应主题的二级小节。`})}}let h=new Set(g.map(a=>a.subject).filter(Boolean)),i=["人","材","机"].every(a=>h.has(a));(g.length<3||!i)&&b.push({level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"llm_repairable",message:`人材机章结构不完整:“${e[1].trim()}”仅 ${g.length} 个二级小节(人/材/机的保障体系未全部独立成节)`,suggestion:"拆分为“确保人的保障体系与措施”“确保材的保障体系与措施”“确保机的保障体系与措施”三个二级小节。"})}return b}},46482:(a,b,c)=>{c.d(b,{Zk:()=>r,Tz:()=>u,X6:()=>s,fC:()=>v,l8:()=>t,JP:()=>q});var d=c(73024),e=c(76760),f=c(74329);c(25840),c(23500);var g=c(70933),h=c(70208),i=c(61373),j=c(78217);c(23760);var k=c(30355),l=c(44505),m=c(85016),n=c(22157);let o=[...k.P9.filter(a=>!n.Kd.includes(a)),...m.D$.source.split("|")];var p=c(95734);function q(a){let b=a.template.chapters.length,c=b>0?a.targetWords/b:a.targetWords,d=`${a.template.name}
|
|
19
19
|
${a.template.category||""}
|
|
20
20
|
${a.requirement||""}`,e=/专项|安全|质量|验收|审核|合同|合规|审计|风控|风险/u.test(d),f=a.targetWords>=4e4,g=(a.materialFileCount??0)<4&&(a.evidenceCount??0)<6,h=e||f||g,i=a.targetWords>=3e4||b>=8||c>=4e3,j=a.targetWords<=6e3&&b<=4&&!h,k="0"!==process.env.DOCUMENT_GLOBAL_CONSISTENCY_REVIEW&&(h||j||"1"===process.env.DOCUMENT_GLOBAL_CONSISTENCY_REVIEW);return{mode:h?"strict":i?"longform":j?"fast":"balanced",enableChapterReview:!0,enableGlobalReview:k,enableDocumentBudgetExpansion:!1,enableFinalQualityReview:!0,globalReviewSamplingRate:k&&j?.35:1}}function r(a){return{strategy:a,metrics:[],llm:{calls:0,failures:0,maxActive:0,retries:0,failureStreak:0,schemaFailures:0,promptCacheHitTokens:0,promptCacheMissTokens:0,inputTokens:0,outputTokens:0,inputChars:0,layerChars:{l0:0,l1:0,l2:0,l3:0}},semantic:{embedCacheHits:0,embedCacheMisses:0},evidence:{raw:0,used:0,filteredNoise:0,budgetDropped:0,avgNoiseScore:0,avgFactDensity:0,searchQueries:0,searchMs:0,contextChars:0,t0Chars:0,t1Chars:0,t2Lines:0,omittedChars:0},quality:{blockingCount:0,importantCount:0,minorCount:0,repairedCount:0}}}async function s(a,b,c,d){let e=Date.now();try{return await c()}finally{let c=Date.now();a.metrics.push({name:b,startedAt:e,endedAt:c,durationMs:c-e,meta:d})}}async function t(a){(0,n.Te)(a.signal);let b=a.repairType||function(a){let b=a.join("\n");for(let a of f.NP)if(a.pattern.lastIndex=0,a.pattern.test(b))return a.type;return"generic"}(a.issues),c=a.contextChapters?.length?`
|
|
21
21
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html><head><meta charSet="utf-8" data-next-head=""/><meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" data-next-head=""/><title data-next-head="">404: This page could not be found</title><link rel="preload" href="/_next/static/css/3854c6b3c59c0c44.css" as="style"/><link rel="stylesheet" href="/_next/static/css/3854c6b3c59c0c44.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" noModule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-4224e970a97a4a86.js" defer=""></script><script src="/_next/static/chunks/framework-161be364fd69a7ce.js" defer=""></script><script src="/_next/static/chunks/main-91fb767ebd74c9c1.js" defer=""></script><script src="/_next/static/chunks/pages/_app-3e8b35112a00821a.js" defer=""></script><script src="/_next/static/chunks/pages/_error-282257fbdcc167b4.js" defer=""></script><script src="/_next/static/MbBIbm8-I-QxwSUUs3yzl/_buildManifest.js" defer=""></script><script src="/_next/static/MbBIbm8-I-QxwSUUs3yzl/_ssgManifest.js" defer=""></script></head><body><div id="__next"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}if(u)p(u);else try{let n=localStorage.getItem(i)||s,y=l&&n==="system"?c():n;p(y)}catch(n){}})("class","theme","system",null,["light","dark"],null,true,true)</script><div class="css-1pi45l5 ant-app css-var-_R_16_"><aside class="sidebar"><a href="/overview"><div class="sidebarLogo"><div class="w-8 h-8 rounded-lg bg-black dark:bg-white flex items-center justify-center shrink-0"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-moon text-white dark:text-black"><path d="M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z"></path></svg></div><div class="sidebarLogoTitle"><span class="logoGradient">Customize Agent</span></div></div></a><nav class="sidebarNav mt-2"><a href="/overview"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-layout-dashboard"><rect width="7" height="9" x="3" y="3" rx="1"></rect><rect width="7" height="5" x="14" y="3" rx="1"></rect><rect width="7" height="9" x="14" y="12" rx="1"></rect><rect width="7" height="5" x="3" y="16" rx="1"></rect></svg><span class="sidebarLabel">总览</span></div></a><div><div class="sidebarItem sidebarParent"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-database"><ellipse cx="12" cy="5" rx="9" ry="3"></ellipse><path d="M3 5V19A9 3 0 0 0 21 19V5"></path><path d="M3 12A9 3 0 0 0 21 12"></path></svg><span class="sidebarLabel">知识库</span><span class="sidebarChevron"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-right"><path d="m9 18 6-6-6-6"></path></svg></span></div></div><a href="/models"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-cpu"><rect width="16" height="16" x="4" y="4" rx="2"></rect><rect width="6" height="6" x="9" y="9" rx="1"></rect><path d="M15 2v2"></path><path d="M15 20v2"></path><path d="M2 15h2"></path><path d="M2 9h2"></path><path d="M20 15h2"></path><path d="M20 9h2"></path><path d="M9 2v2"></path><path d="M9 20v2"></path></svg><span class="sidebarLabel">模型配置</span></div></a><a href="/prompt"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-message-square"><path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"></path></svg><span class="sidebarLabel">提示词管理</span></div></a><a href="/document-roles"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-settings"><path d="M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z"></path><circle cx="12" cy="12" r="3"></circle></svg><span class="sidebarLabel">角色配置</span></div></a><a href="/documents"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-files"><path d="M20 7h-3a2 2 0 0 1-2-2V2"></path><path d="M9 18a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h7l4 4v10a2 2 0 0 1-2 2Z"></path><path d="M3 7.6v12.8A1.6 1.6 0 0 0 4.6 22h9.8"></path></svg><span class="sidebarLabel">工作流模版库</span></div></a><a href="/template-references"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-library-big"><rect width="8" height="18" x="3" y="3" rx="1"></rect><path d="M7 3v18"></path><path d="M20.4 18.9c.2.5-.1 1.1-.6 1.3l-1.9.7c-.5.2-1.1-.1-1.3-.6L11.1 5.1c-.2-.5.1-1.1.6-1.3l1.9-.7c.5-.2 1.1.1 1.3.6Z"></path></svg><span class="sidebarLabel">模板参考</span></div></a><a href="/asset-library"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-folder-open"><path d="m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2"></path></svg><span class="sidebarLabel">生成资源</span></div></a><a href="/system/logs"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-bug"><path d="m8 2 1.88 1.88"></path><path d="M14.12 3.88 16 2"></path><path d="M9 7.13v-1a3.003 3.003 0 1 1 6 0v1"></path><path d="M12 20c-3.3 0-6-2.7-6-6v-3a4 4 0 0 1 4-4h4a4 4 0 0 1 4 4v3c0 3.3-2.7 6-6 6"></path><path d="M12 20v-9"></path><path d="M6.53 9C4.6 8.8 3 7.1 3 5"></path><path d="M6 13H2"></path><path d="M3 21c0-2.1 1.7-3.9 3.8-4"></path><path d="M20.97 5c0 2.1-1.6 3.8-3.5 4"></path><path d="M22 13h-4"></path><path d="M17.2 17c2.1.1 3.8 1.9 3.8 4"></path></svg><span class="sidebarLabel">系统日志</span></div></a><a href="/guide"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-book-open"><path d="M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z"></path><path d="M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z"></path></svg><span class="sidebarLabel">指引</span></div></a><a href="/settings"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-settings"><path d="M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z"></path><circle cx="12" cy="12" r="3"></circle></svg><span class="sidebarLabel">设置</span></div></a></nav><div class="sidebarCollapseWrapper"><button class="sidebarCollapseBtn" aria-label="收起侧边栏"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-panel-left-close"><rect width="18" height="18" x="3" y="3" rx="2"></rect><path d="M9 3v18"></path><path d="m16 15-3-3 3-3"></path></svg></button></div></aside><div class="mainContent"><header class="topbar"><div class="flex-1"></div><span class="ant-badge css-1pi45l5 css-var-_R_16_"><button type="button" class="ant-btn css-1pi45l5 css-var-_R_16_ ant-btn-default ant-btn-color-default ant-btn-variant-outlined topbarBtn"><span class="ant-btn-icon"><span role="img" aria-label="clock-circle" class="anticon anticon-clock-circle"><svg viewBox="64 64 896 896" focusable="false" data-icon="clock-circle" width="1em" height="1em" fill="currentColor" aria-hidden="true"><path d="M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"></path><path d="M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z"></path></svg></span></span><span>后台任务</span></button></span><button class="topbarBtn"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-moon"><path d="M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z"></path></svg><span>深色</span></button><button class="topbarBtn"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-languages"><path d="m5 8 6 6"></path><path d="m4 14 6-6 2-3"></path><path d="M2 5h12"></path><path d="M7 2h1"></path><path d="m22 22-5-10-5 10"></path><path d="M14 18h6"></path></svg><span>English</span></button></header><main class="mainInner"><div style="font-family:system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">This page could not be found<!-- -->.</h2></div></div></div></main></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":404}},"page":"/_error","query":{},"buildId":"MbBIbm8-I-QxwSUUs3yzl","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
|
|
1
|
+
<!DOCTYPE html><html><head><meta charSet="utf-8" data-next-head=""/><meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" data-next-head=""/><title data-next-head="">404: This page could not be found</title><link rel="preload" href="/_next/static/css/3854c6b3c59c0c44.css" as="style"/><link rel="stylesheet" href="/_next/static/css/3854c6b3c59c0c44.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" noModule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-4224e970a97a4a86.js" defer=""></script><script src="/_next/static/chunks/framework-161be364fd69a7ce.js" defer=""></script><script src="/_next/static/chunks/main-91fb767ebd74c9c1.js" defer=""></script><script src="/_next/static/chunks/pages/_app-3e8b35112a00821a.js" defer=""></script><script src="/_next/static/chunks/pages/_error-282257fbdcc167b4.js" defer=""></script><script src="/_next/static/0Cdg2rYTCeaGhXnSoq_VE/_buildManifest.js" defer=""></script><script src="/_next/static/0Cdg2rYTCeaGhXnSoq_VE/_ssgManifest.js" defer=""></script></head><body><div id="__next"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}if(u)p(u);else try{let n=localStorage.getItem(i)||s,y=l&&n==="system"?c():n;p(y)}catch(n){}})("class","theme","system",null,["light","dark"],null,true,true)</script><div class="css-1pi45l5 ant-app css-var-_R_16_"><aside class="sidebar"><a href="/overview"><div class="sidebarLogo"><div class="w-8 h-8 rounded-lg bg-black dark:bg-white flex items-center justify-center shrink-0"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-moon text-white dark:text-black"><path d="M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z"></path></svg></div><div class="sidebarLogoTitle"><span class="logoGradient">Customize Agent</span></div></div></a><nav class="sidebarNav mt-2"><a href="/overview"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-layout-dashboard"><rect width="7" height="9" x="3" y="3" rx="1"></rect><rect width="7" height="5" x="14" y="3" rx="1"></rect><rect width="7" height="9" x="14" y="12" rx="1"></rect><rect width="7" height="5" x="3" y="16" rx="1"></rect></svg><span class="sidebarLabel">总览</span></div></a><div><div class="sidebarItem sidebarParent"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-database"><ellipse cx="12" cy="5" rx="9" ry="3"></ellipse><path d="M3 5V19A9 3 0 0 0 21 19V5"></path><path d="M3 12A9 3 0 0 0 21 12"></path></svg><span class="sidebarLabel">知识库</span><span class="sidebarChevron"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-right"><path d="m9 18 6-6-6-6"></path></svg></span></div></div><a href="/models"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-cpu"><rect width="16" height="16" x="4" y="4" rx="2"></rect><rect width="6" height="6" x="9" y="9" rx="1"></rect><path d="M15 2v2"></path><path d="M15 20v2"></path><path d="M2 15h2"></path><path d="M2 9h2"></path><path d="M20 15h2"></path><path d="M20 9h2"></path><path d="M9 2v2"></path><path d="M9 20v2"></path></svg><span class="sidebarLabel">模型配置</span></div></a><a href="/prompt"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-message-square"><path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"></path></svg><span class="sidebarLabel">提示词管理</span></div></a><a href="/document-roles"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-settings"><path d="M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z"></path><circle cx="12" cy="12" r="3"></circle></svg><span class="sidebarLabel">角色配置</span></div></a><a href="/documents"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-files"><path d="M20 7h-3a2 2 0 0 1-2-2V2"></path><path d="M9 18a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h7l4 4v10a2 2 0 0 1-2 2Z"></path><path d="M3 7.6v12.8A1.6 1.6 0 0 0 4.6 22h9.8"></path></svg><span class="sidebarLabel">工作流模版库</span></div></a><a href="/template-references"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-library-big"><rect width="8" height="18" x="3" y="3" rx="1"></rect><path d="M7 3v18"></path><path d="M20.4 18.9c.2.5-.1 1.1-.6 1.3l-1.9.7c-.5.2-1.1-.1-1.3-.6L11.1 5.1c-.2-.5.1-1.1.6-1.3l1.9-.7c.5-.2 1.1.1 1.3.6Z"></path></svg><span class="sidebarLabel">模板参考</span></div></a><a href="/asset-library"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-folder-open"><path d="m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2"></path></svg><span class="sidebarLabel">生成资源</span></div></a><a href="/system/logs"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-bug"><path d="m8 2 1.88 1.88"></path><path d="M14.12 3.88 16 2"></path><path d="M9 7.13v-1a3.003 3.003 0 1 1 6 0v1"></path><path d="M12 20c-3.3 0-6-2.7-6-6v-3a4 4 0 0 1 4-4h4a4 4 0 0 1 4 4v3c0 3.3-2.7 6-6 6"></path><path d="M12 20v-9"></path><path d="M6.53 9C4.6 8.8 3 7.1 3 5"></path><path d="M6 13H2"></path><path d="M3 21c0-2.1 1.7-3.9 3.8-4"></path><path d="M20.97 5c0 2.1-1.6 3.8-3.5 4"></path><path d="M22 13h-4"></path><path d="M17.2 17c2.1.1 3.8 1.9 3.8 4"></path></svg><span class="sidebarLabel">系统日志</span></div></a><a href="/guide"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-book-open"><path d="M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z"></path><path d="M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z"></path></svg><span class="sidebarLabel">指引</span></div></a><a href="/settings"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-settings"><path d="M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z"></path><circle cx="12" cy="12" r="3"></circle></svg><span class="sidebarLabel">设置</span></div></a></nav><div class="sidebarCollapseWrapper"><button class="sidebarCollapseBtn" aria-label="收起侧边栏"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-panel-left-close"><rect width="18" height="18" x="3" y="3" rx="2"></rect><path d="M9 3v18"></path><path d="m16 15-3-3 3-3"></path></svg></button></div></aside><div class="mainContent"><header class="topbar"><div class="flex-1"></div><span class="ant-badge css-1pi45l5 css-var-_R_16_"><button type="button" class="ant-btn css-1pi45l5 css-var-_R_16_ ant-btn-default ant-btn-color-default ant-btn-variant-outlined topbarBtn"><span class="ant-btn-icon"><span role="img" aria-label="clock-circle" class="anticon anticon-clock-circle"><svg viewBox="64 64 896 896" focusable="false" data-icon="clock-circle" width="1em" height="1em" fill="currentColor" aria-hidden="true"><path d="M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"></path><path d="M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z"></path></svg></span></span><span>后台任务</span></button></span><button class="topbarBtn"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-moon"><path d="M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z"></path></svg><span>深色</span></button><button class="topbarBtn"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-languages"><path d="m5 8 6 6"></path><path d="m4 14 6-6 2-3"></path><path d="M2 5h12"></path><path d="M7 2h1"></path><path d="m22 22-5-10-5 10"></path><path d="M14 18h6"></path></svg><span>English</span></button></header><main class="mainInner"><div style="font-family:system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">This page could not be found<!-- -->.</h2></div></div></div></main></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":404}},"page":"/_error","query":{},"buildId":"0Cdg2rYTCeaGhXnSoq_VE","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
|