@customize-agent/server 4.5.4 → 4.5.5
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/4680.js +1 -1
- package/.next/server/chunks/9319.js +2 -2
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/pages/api/config/healthCheck.js +2 -2
- package/.next/server/pages/api/config/providers.js +2 -2
- package/.next/server/pages/api/documents/export.js +2 -2
- package/.next/server/pages/api/documents/generate.js +2 -2
- package/.next/server/pages/api/documents/generated/[id].js +2 -2
- package/.next/server/pages/api/kb/files/search.js +2 -2
- package/.next/server/pages/api/kb/files/tree.js +2 -2
- package/.next/server/pages/api/kb/files.js +2 -2
- package/.next/server/pages/api/system/logs.js +2 -2
- 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 +25 -25
- package/package.json +1 -1
- /package/.next/static/{L7jMYj2OmzOKW0bM-glgI → UYaCLfvDMZqkwcnoxwZeR}/_buildManifest.js +0 -0
- /package/.next/static/{L7jMYj2OmzOKW0bM-glgI → UYaCLfvDMZqkwcnoxwZeR}/_ssgManifest.js +0 -0
package/.next/BUILD_ID
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
UYaCLfvDMZqkwcnoxwZeR
|
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
"devFiles": [],
|
|
6
6
|
"ampDevFiles": [],
|
|
7
7
|
"lowPriorityFiles": [
|
|
8
|
-
"static/
|
|
9
|
-
"static/
|
|
8
|
+
"static/UYaCLfvDMZqkwcnoxwZeR/_buildManifest.js",
|
|
9
|
+
"static/UYaCLfvDMZqkwcnoxwZeR/_ssgManifest.js"
|
|
10
10
|
],
|
|
11
11
|
"rootMainFiles": [],
|
|
12
12
|
"rootMainFilesTree": {},
|
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
"routes": {},
|
|
4
4
|
"dynamicRoutes": {},
|
|
5
5
|
"preview": {
|
|
6
|
-
"previewModeId": "
|
|
7
|
-
"previewModeSigningKey": "
|
|
8
|
-
"previewModeEncryptionKey": "
|
|
6
|
+
"previewModeId": "18c0f9f0b302fe68113693455b75a1c9",
|
|
7
|
+
"previewModeSigningKey": "ba67ecd9f6cb33d43ef0cf6adf2582b361fe2c2ee1cf85eb3a4cd57a4baa9063",
|
|
8
|
+
"previewModeEncryptionKey": "811485ccc4add26520b319cd22dfd450a07596dcf56b1afda32ec92ccb835820"
|
|
9
9
|
},
|
|
10
10
|
"notFoundRoutes": []
|
|
11
11
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";exports.id=4680,exports.ids=[4680],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)||/^#+\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:()=>n,Ai:()=>q,BV:()=>t,Ff:()=>l,Fv:()=>B,K1:()=>z,M$:()=>ah,N1:()=>_,NS:()=>C,S2:()=>aa,ST:()=>U,Ty:()=>u,bM:()=>ac,f8:()=>x,gN:()=>v,hr:()=>S,i0:()=>W,iC:()=>s,ji:()=>X,k0:()=>A,kQ:()=>ag,mR:()=>ae,qK:()=>H,qm:()=>Q,t4:()=>af,vY:()=>V,xX:()=>T,yd:()=>ab,yw:()=>G});var d=c(8753),e=c(74329),f=c(78217),g=c(11248),h=c(70208),i=c(91977),j=c(23500),k=c(22157);function l(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 m(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 n(a,b=[]){let c=[],d=m(a,"全文");for(let a of(d&&c.push(d),b)){let b=m(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=m(e[1],`小节“${d}”`);f&&c.push(f)}}return c}function o(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)?{...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 p(a){let b=o(a);return"blocker"===b.severity&&(!!("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 q(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(o).filter(a=>"error"===a.level&&p(a)),g=/缺少规划小节|小节生成未达标|小节内容补写未完成|空小节|小节只有标题|生成未完成|正文不足|主要施工内容小节缺失|部分章节生成失败|Writer 未完成|不得出现|疑似提示词指令标题|项目污染|跨章一致性/u,h=d?f.filter(a=>g.test(a.message)):f,i=[{key:"no_errors",label:"无阻断级校验错误",passed:0===h.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)&&p(a))},{key:"numeric_consistency",label:"跨章数值口径与资料一致",passed:!a.some(a=>"error"===a.level&&/跨章一致性冲突|跨章一致性缺口|跨章一致性复核/u.test(a.message)&&p(a))}];return{passed:0===h.length,blockingIssues:h,checklist:i}}function r(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 s(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}function t(a){let b=[],c=[];for(let b of e.ZH)a.includes(b)&&c.push(b);c.length>0&&b.push({level:"warning",message:`存在模板化前缀或套话:${c.join("、")}`,suggestion:"请删除“本节/本章将/以下从”等前缀,标题后直接进入对象、动作、措施、检查和闭环。"});let d=a.match(/OCR|提示词|绑定片段|后台|文件路径|识别错误|知识库证据|知识库已确认事实|通用兜底段落|兜底占位|兜底模板/giu);return d?.length&&b.push({level:"warning",message:`正文包含后台或资料处理话术:${[...new Set(d)].join("、")}`,suggestion:"建议改为正式文档语言,例如“资料文字不清”“资料口径不一致”“项目资料”,不得暴露后台处理过程。"}),b}function u(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 v(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 w(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 x(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=>w(a[1]||"")).filter(Boolean):[]}(a),c=[...a.matchAll(/^#{2,4}\s+(\d+\.\d+\s+.+)$/gmu)].map(a=>w(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 y(a){let b=a.replace(/^#{1,6}\s+/u,"").replace(/^\s*\d+(?:\.\d+)*(?:[..、]|\s)+/u,"").replace(/^第[一二三四五六七八九十百千万\d]+[章节篇部分]\s*/u,"").trim(),c=(0,h.GQ)(b),d=/^(?:\d+(?:\.\d+)*\s*)?(?:[-—–]\s*)?(?:(?:判断|判定|识别|确认)?是否(?:涉及|涉|需要|适用).*|(?:如|若|如果)(?:涉及|不涉及|适用|不适用).*|.*(?:根据|结合).{0,12}(?:实际情况|项目情况|资料情况).{0,8}(?:判断|确定|编写|生成).*|.*(?:按需(?:生成|编写)|视情况|判断后|生成要求|编写要求|注意事项))\s*$/u;return d.test(b)||d.test(c)}function z(a){let b=[...a.matchAll(/^#{2,6}\s+(.+)$/gmu)].map(a=>(0,h.GQ)(a[1]||"")).filter(y);return b.length>0?[{level:"error",message:`正文存在疑似提示词指令标题:${[...new Set(b)].slice(0,8).join("、")}`,suggestion:"请删除或改写为正式施工组织设计小节标题,目录也不得收录该类标题。"}]:[]}function A(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=>w(a).length<=1);d&&b.push({level:"warning",message:`正文存在孤立字或残缺段落:${d}`,suggestion:"请删除残缺行或重新生成所在小节。"});let f=c.find(a=>/[,、;:和与在为对将]$/u.test(a)||/(通过|包括|如下|主要包括)$/u.test(a));f&&b.push({level:"warning",message:`正文存在疑似截断句:${f}`,suggestion:"请补完整该段落,避免以连接词、逗号或冒号结尾。"});let g=c.find(a=>a.length>380);g&&b.push({level:"warning",message:`正文存在过长段落:${g}`,suggestion:"请拆分为多段或表格,改善导出版式和可读性。"});let h=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));h&&b.push({level:"error",message:`正文存在列表项粘连同一行:${h.slice(0,120)}`,suggestion:"有序列表和无序列表必须逐项独占一行,确保 Markdown/PDF/DOCX 正确排版。"});let i=a.match(/(?: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];i&&b.push({level:"error",message:`正文残留资料页码元信息:${i}`,suggestion:"正式投标正文应引用招标文件、施工图设计文件、工程量清单和相关专业图纸,不写 PDF 页码或资料页数。"});let j=c.find(a=>/仅作为内部事实提取依据|正式正文不得引用文件名|后台事实|内部事实/u.test(a));return j&&b.push({level:"error",message:`正文残留内部处理说明:${j.slice(0,120)}`,suggestion:"正式投标正文不得出现内部事实抽取、后台处理或文件名引用限制说明。"}),b}function B(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,h.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,h.GQ)(a[1]||"")),i=(0,h.GQ)((e[c][1]||"").replace(/^第[一二三四五六七八九十百千万\d]+章\s*/u,""));1===g.length&&w(g[0])===w(i)&&b.push({level:"error",message:`章节只有一个且与章名同名的小节:${e[c][1]}`,suggestion:"应拆分为多个业务小节,不能用章标题重复作为唯一二级小节。"})}return b}function C(a){let b=[];/按审批确认执行/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>20&&b.push({level:"error",message:`表格分隔线异常重复:${f.length} 行`,suggestion:"请修复表格规范化逻辑,禁止把数据行拆成多个碎表。"}),r(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:"请统一表头和数据行列数;不应通过自动填充兜底词修补表格。"})}return b}function D(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 E(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:w(i),level:e,body:a.slice(f,h)}}).filter(a=>a.title&&(3===a.level||4===a.level))}function F(a,b,c,d,f){let g=D(d),h=e.w7.test(d)&&d.split(e.A5).some(a=>e.N3.test(a)),i=D(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 G(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(w(a))&&!/^附录/u.test(a.trim()))){let f=w(a),g=function(a,b){let c=E(a).filter(a=>(function(a,b){let c=w(a),d=w(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:F("",b,a.level,a.body,!0),textLength:D(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=F(e.title,a,g.level,g.body,!0);i&&c.push(i),d.add(h)}for(let a of E(b)){let b=`${e.title}|${a.title}|actual`,f=`${e.title}|${a.title}|planned`;if(d.has(b)||d.has(f))continue;let g=F(e.title,a.title,a.level,a.body,!1);g&&"empty"===g.reason&&c.push(g),d.add(b)}}return c}function H(a,b){return G(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 I(a){return`${a.fieldName||a.key} ${(0,k.lG)(a.value)}`.replace(/\s+/gu," ").trim()}function J(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]}function K(a,b,c){let d=[],e=new Set,f=RegExp(`(?:${b.source})(?:[^\\n。;;,,]{0,14}?)(\\d{2,}(?:[.,]\\d+)?\\s*万?)\\s*(${c.source})`,"giu");for(let b of a.matchAll(f)){let a=b[1].replace(/[,,]/gu,"").replace(/\s+/gu,""),c=b[2],f=`${a}|${c}`;!a||e.has(f)||(e.add(f),d.push({value:a,unit:c}))}return d}function L(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 M=/(?<![地上地下])总?建筑面积|总?建设规模|总?用地面积|总?占地面积/u,N=/㎡|m²|m2|平方米/u,O=/合同估算价|合同估算价格|投资估算|最高投标限价|招标控制价|工程总投资|总投资|工程造价/u,P=/万元|亿元/u;function Q(a,b,c){let d=[],e=a=>c?.find(b=>b.kind===a&&b.resolution)?.resolution,f=a=>{let b=/(\d+(?:\.\d+)?)\s*(㎡|m²|m2|平方米|万元|亿元)/u.exec(a);return b?{value:b[1],unit:b[2]}:void 0},g=e("duration")??b.schedule.map(I).find(a=>/\d+\s*(?:日历天|天|个月|月)|计划工期|合同工期/u.test(a)),h=b.quality.map(I).find(a=>/质量|合格|优良/u.test(a));if(g){let b=J(g)[0],c=J(a.split("\n").filter(a=>!/^\s*\|/u.test(a.trim())).join("\n")),e=b?c.filter(a=>a!==b&&/日历天/u.test(a)):[];b&&e.length>=2&&d.push({level:"warning",message:`跨章一致性冲突:正文出现与资料工期不一致的表述 ${e.slice(0,6).join("、")}`,suggestion:`请统一使用资料中的工期口径:${g}`})}h&&!/质量标准|质量目标|合格|优良/u.test(a)&&d.push({level:"error",message:"跨章一致性缺口:正文未稳定体现资料中的质量目标",suggestion:`请在工程概况、质量保证和验收相关章节统一体现:${h}`});let i=e("area"),j=i??b.project.map(I).find(a=>/建设规模|建筑面积|占地面积|用地面积/u.test(a));if(j){let b=i?f(i):K(j,M,N)[0],c=K(a,M,N);if(b){let a=c.filter(a=>L(a)!==L(b));a.length>=1&&d.push({level:"error",message:`跨章一致性冲突:正文出现与资料建设规模不一致的表述 ${a.slice(0,6).map(a=>`${a.value}${a.unit}`).join("、")}`,suggestion:`请统一使用资料中的建设规模口径:${j.slice(0,80)}`})}}let k=e("cost"),l=k??b.project.map(I).find(a=>/合同估算|投资估算|最高投标限价|招标控制价|总投资|工程造价/u.test(a));if(l){let b=k?f(k):K(l,O,P)[0],c=K(a,O,P);if(b){let a=c.filter(a=>L(a)!==L(b));a.length>=1&&d.push({level:"error",message:`跨章一致性冲突:正文出现与资料估算价不一致的表述 ${a.slice(0,6).map(a=>`${a.value}${a.unit}`).join("、")}`,suggestion:`请统一使用资料中的估算价口径:${l.slice(0,80)}`})}}return d}function R(a){let b=[],c=new Set;for(let d of a.matchAll(/找平层|抹灰层|防水层|保温层|结合层|垫层|面层|粘结层|隔热层|隔离层/gu)){let e=d[0],f=a.slice(Math.max(0,d.index-60),Math.min(a.length,d.index+90)),g=f.match(/(\d+:\d+(?:\.\d+)?)/u)?.[1],h=f.match(/(\d+(?:\.\d+)?)\s*mm/u),i=h?Number(h[1]):void 0,j=`${e}|${g||""}|${i??""}`;c.has(j)||(c.add(j),b.push({layer:e,ratio:g,thickness:i}))}return b}function S(a,b){let c=[],d=R([...b.specifications,...b.quality,...b.preciseFacts,...b.bills].map(I).join("\n"));if(0===d.length)return c;let e=new Map;for(let a of d){let b=e.get(a.layer)||[];b.push(a),e.set(a.layer,b)}let f=R(a),g=new Set;for(let[a,b]of e){let d=[...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 f.filter(b=>b.layer===a)){if(1===d.length&&b.ratio&&b.ratio!==d[0]){let e=`ratio|${a}|${b.ratio}`;g.has(e)||(g.add(e),c.push({level:"error",message:`工序规格冲突:正文${a}配比 ${b.ratio} 与资料口径 ${d[0]} 不一致`,suggestion:`请将${a}配比统一为资料口径 ${d[0]},禁止改写资料规格。`}))}if(1===e.length&&Number.isFinite(b.thickness)&&Math.abs(b.thickness-e[0])>=1){let d=`thickness|${a}|${b.thickness}`;g.has(d)||(g.add(d),c.push({level:"error",message:`工序规格冲突:正文${a}厚度 ${b.thickness}mm 与资料口径 ${e[0]}mm 不一致`,suggestion:`请将${a}厚度统一为资料口径 ${e[0]}mm。`}))}}}return c}function T(a){let b=[],c=/(?:三检制|三级教育|三级管理|5S|24\s*小时|每日|每周|每月|一次|两次)/gu;for(let d of a){let a=[...new Set(d.content.match(c)||[])];a.length>=3&&!/责任人|检查记录|整改|复查|验收|台账|交底|巡查|闭环/u.test(d.content)&&b.push({level:"warning",message:`${d.title} 管理措施数字较多但缺少执行闭环:${a.slice(0,8).join("、")}`,suggestion:"这些管理数字可以保留,但需要补充责任主体、检查频次、记录台账、整改复查和闭环要求。"})}return b}function U(a){let b=/(?:加强组织领导|严格执行规范|落实责任制度|确保工程质量|强化过程管理|提高思想认识|完善管理体系|形成闭环管理)/gu,c=[];for(let d of a)(d.content.match(b)||[]).length>=6&&!/材料|工序|验收|复验|节点|风险|交底|隐蔽|检验批|进场/u.test(d.content)&&c.push({level:"error",message:`${d.title} 存在较多未绑定项目事实和工序控制点的泛化套话`,suggestion:"请替换为结合资料事实、施工对象、工序控制、验收资料和整改闭环的专业内容。"});return c}function V(a,b){let c=[...b.project,...b.schedule,...b.quality,...b.safety,...b.resources,...b.preciseFacts,...b.bills,...b.drawings,...b.rules,...b.specifications].map(I).join("\n");if(80>(0,f.V7)(c))return[];let d=[],e=(0,g.K3)(c),h=[],i=[],j=[];for(let b of(0,g.zn)(a)){if(/^\d+\.\d+$/u.test(b))continue;let c=(0,g.K3)(b),d=a.indexOf(b);if(d<0)continue;let f=a.lastIndexOf("\n",d-1)+1,k=a.slice(f,0>a.indexOf("\n",d)?a.length:a.indexOf("\n",d));if(/^\s*\|/u.test(k.trim()))continue;let l=a.slice(Math.max(0,d-36),Math.min(a.length,d+b.length+36)),m=function(a,b){let c=`${a} ${b}`;return/三检制|三级|5S|24\s*小时|每日|每周|每月|一次|两次|责任制|制度/u.test(c)||/暂列金额|暂估价|报价|单价|合价|综合单价|税率|增值税|预留金/u.test(c)||/^\d+(?:\.\d+)?(?:月|年)$/u.test(a)&&/开工|竣工|日期|计划|年|月/u.test(b)?"soft":/总工期|计划工期|合同工期|日历天/u.test(c)||/最高投标限价|招标控制价|合同估算价|投资估算|报价|金额|万元|元/u.test(c)||/(?:建设规模|总建筑面积|总用地面积|总占地面积).{0,16}(?:m²|㎡|m2|平方米)/u.test(c)?"scope":/(?:工程量|清单|建设规模|建筑面积|长度|材料|设备|规格|型号).{0,24}(?:m²|㎡|m3|m³|米|吨|套|台|个|项|%)/u.test(c)?"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(c)?"soft":/标准|规范|编号/u.test(c)?"spec":"soft"}(b,l);"scope"!==m||e.includes(c)||h.push(b),"spec"!==m||e.includes(c)||i.push(b),"soft"!==m||e.includes(c)||j.push(b)}let l=[...new Set(h)],m=[...new Set(i)],n=[...new Set(j)];return l.length>=1&&d.push({level:"error",message:`生成后事实反查失败:正文出现资料事实主表中未找到的总量口径数字 ${l.slice(0,8).join("、")}`,suggestion:"总量口径数字(工期/金额/建设规模)必须与资料一致;请删除或改写为资料确认的口径,禁止编造。"}),m.length>=2&&d.push({level:"warning",message:`生成后事实反查提示:正文出现资料事实主表中未找到的规格明细数字 ${m.slice(0,8).join("、")}`,suggestion:"建议复核这些规格是否来自管理制度、规范要求或资料事实;如无依据,改为定性管理要求。"}),n.length>=6&&d.push({level:"warning",message:`生成后事实反查提示:正文出现较多未在资料事实主表中反查到的管理数字 ${n.slice(0,10).join("、")}`,suggestion:"请确认这些管理数字属于通用制度、规范要求或项目资料事实;如无依据,建议改为定性管理要求。"}),/质量目标|质量标准/u.test(a)&&b.quality.length>0&&!b.quality.some(b=>a.includes((0,k.lG)(b.value).slice(0,18)))&&d.push({level:"warning",message:"生成后事实反查提示:正文质量目标表述未明显匹配质量事实主表",suggestion:"请使用资料中的质量目标原文或等价表述。"}),d}function W(a){let b=[];for(let d of a){var c;let a=d.content;if(800>(0,f.V7)(a))continue;let e=/资料|招标|清单|图纸|标准|范围|工期|质量|验收/u.test(a)?2:+!!/项目|工程|要求/u.test(a),g=/首先|其次|同时|最后|一是|二是|流程|步骤|阶段|组织顺序/u.test(a)?2:+!!/并且|同时|然后|因此/u.test(a),h=/控制点|关键线路|复验|隐蔽验收|风险|交底|检验批|整改|闭环/u.test(a)?2:+!!/措施|要求|管理|检查/u.test(a),i=/责任人|检查|记录|验收|整改|复查|进场|调配|应急/u.test(a)?2:+!!/落实|执行|安排|组织/u.test(a),j=/本项目|本工程|招标范围|工程量|建设地点|计划工期|质量目标/u.test(a)?2:+!!/项目|工程/u.test(a),k=/工期|质量|安全|资源|验收/u.test(a)?2:+!!/目标|要求/u.test(a),l={factuality:e,structure:g,depth:h,executable:i,specificity:j,consistency:k},m=e+g+h+i+j+k,n=(c=d.title,/概况|工程|项目/u.test(c)?{min:5,focus:"事实依据、项目特异性"}:/部署|总体|组织/u.test(c)?{min:6,focus:"组织结构、可执行闭环、跨章一致性"}:/进度|工期/u.test(c)?{min:6,focus:"进度结构、工期一致性、纠偏机制"}:/质量/u.test(c)?{min:6,focus:"质量深度、验收复验、资料闭环"}:/安全|文明|危大|风险/u.test(c)?{min:6,focus:"风险覆盖、应急响应、检查整改"}:/资源|材料|设备|劳动力/u.test(c)?{min:5,focus:"资源依据、进场调配、进度支撑"}:{min:4,focus:"事实依据、专业深度、可执行性"});if(m<n.min){let a=Object.entries(l).filter(([,a])=>a<1).map(([a])=>a).join("、")||n.focus;b.push({level:"error",message:`${d.title} 专业评分不足:${m}/12,薄弱维度:${a}`,suggestion:`请按章节任务卡补齐${n.focus},并写出资料依据、实施流程、专业控制点和检查整改闭环。`})}}return b}function X(a){let b=[{re:/进度|工期/u,need:/关键线路|穿插|纠偏|资源保障|节点|动态调整/u,message:"进度工期章节缺少关键线路、穿插施工或纠偏保障内容"},{re:/质量/u,need:/材料.*验收|复验|隐蔽验收|整改.*复验|质量.*资料|检验批/u,message:"质量章节缺少材料验收复验、隐蔽验收或整改复验闭环"},{re:/安全|文明|危大|风险/u,need:/风险|临电|消防|应急|检查.*整改|文明施工|人员|设备/u,message:"安全文明章节缺少风险识别、现场控制或应急检查闭环"},{re:/资源|材料|设备|劳动力/u,need:/进场|验收|调配|保管|供应|投入计划/u,message:"资源章节缺少进场、验收、调配或保管计划"},{re:/施工|工艺|技术|方案/u,need:/准备|流程|工艺|控制点|验收|交底/u,message:"施工技术章节缺少施工准备、工艺流程、控制点或验收要求"}],c=[];for(let d of a){let a=d.content;for(let e of b)e.re.test(d.title)&&(0,f.V7)(a)>=600&&!e.need.test(a)&&c.push({level:"error",message:`${d.title}:${e.message}`,suggestion:"请按专业任务卡定向补写该章节,补齐可实施的控制措施、资料依据和闭环要求。"})}return c}function Y(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 Z(a,b){let c=0;for(let d of a)b.includes(d.replace(e.ug,""))&&(c+=1);return c}let $=/日历天|个月|㎡|m²|m3|m³|MPa|kPa|kN|GB\/T|GB|JGJ|ISO|DN|φ|Φ|米\/秒|天$/u;function _(a,b,c=[]){let d=[],f=a.replace(e.ug,""),g=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);Y(d,f)||b.add(d)}}return[...b]}(c),h=g.length>=e.mu?g: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();Y(c,d)||b.add(c)}}return[...b]}(b),i=Z(h,f);h.length>=e.mu&&i/h.length<e.tg&&d.push({level:"warning",message:`可靠精确参数使用不足:${i}/${h.length}`,suggestion:"请将资料中可靠的规格、参数、数量、时间、比例和标准编号写入对应章节;商务金额、单价、税率、预留金不得写入正文。"});let j=function(a){let b=[...a].sort((a,b)=>a.localeCompare(b,"zh")),c=b.filter(a=>$.test(a)),d=b.filter(a=>!$.test(a));return[...c.slice(0,8),...d.slice(0,2)].slice(0,10)}(h);if(j.length>=6){let a=Z(j,f);if(a/j.length<.5){let b=j.filter(a=>!f.includes(a.replace(e.ug,""))).slice(0,3);d.push({level:"error",message:`可靠精确参数使用不足:关键参数抽查 ${a}/${j.length}${b.length?`(缺失如 ${b.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}function aa(a,b,c){let d=[],e=c.tables||[];if(0===e.length)return d;let f=a.replace(/\s+/gu,"").toLowerCase(),g=0,h=0,i=[];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){g+=1;let a=c>=0?(b[c]||"").replace(/\s+/gu,""):"",j=d>=0?(b[d]||"").replace(/\s+/gu,""):"",k=e>=0?(b[e]||"").replace(/\s+/gu,""):"",l=a.length>=3?a.slice(0,Math.min(a.length,16)):"",m=j.length>=3?j.slice(0,Math.min(j.length,12)):"",n=l&&f.includes(l),o=m&&f.includes(m);n||o?h+=1:a.length>=3&&i.push(`${a.slice(0,40)}${k?` ${k}`:""}(未落位)`)}}if(g>0){let a=h/g,b=i.length>0?`未落位项(共${i.length}项):${i.slice(0,12).join(";")}${i.length>12?` 及其他${i.length-12}项`:""}`:"";a<.3?d.push({level:"warning",message:`清单项落位严重不足:${h}/${g} 项(${Math.round(100*a)}%)`,suggestion:`清单明细数量较大,建议优先补充主要分部分项、关键规格和大额工程量。${b}`}):a<.6&&d.push({level:"warning",message:`清单项落位不足:${h}/${g} 项(${Math.round(100*a)}%)`,suggestion:`建议补充落位以下清单项:${b}`})}return d}function ab(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 ac(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 ad(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 ae(a,b){let c=`${b.name} ${b.category} ${b.outputTitle} ${b.description}`,f=[];for(let a of(0,d.V)().autoSpecGates)ad(c,a.templateMatchers)&&f.push(a);if(0===f.length)return[];let g=[],h=r(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 af(a){let b=`${a.name} ${a.category} ${a.outputTitle} ${a.description}`,c=new Set;for(let a of(0,d.V)().autoSpecGates)if(ad(b,a.templateMatchers))for(let b of a.requiredTexts)b&&c.add(b);return[...c]}function ag(a,b,c,d,g,h,j){var k;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||(k=b.name,/国家法律法规|地方法规|规章|规范标准|标准规范|行业标准|现行规范|法律法规|合规|施工方法|工艺流程|质量控制|安全文明|应急|劳动力|材料投入|机械设备|检测仪器|关键节点/u.test(k)))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,i.I2)(c,b)&&(e=!0),!f&&(0,i.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=r(g),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}(g),s=(0,f.Cv)(g);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},f=a.target||b.target||"",i=a.value||b.value||f,k=d.find(a=>a.title===f),r=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:f,value:i,min:a.min||Number(b.value)||1,markdown:g,textScope:"chapter"===a.subject&&k?k.content:g,regex:i?function(a){try{return RegExp(a,"iu")}catch{return}}(i):void 0,chapter:k,factNames:n,chapterTitles:o,tableBlocks:p,imageRefs:q,estimatedPages:s,allFacts:m,factsModel:c,projectBindings:h,promptBindings:j});r&&l.push(r)}return l}function ah(a,b){let c=function(a){let b="";for(let c of(0,j.dU)(a))c.content&&(b+=`${c.content}
|
|
1
|
+
"use strict";exports.id=4680,exports.ids=[4680],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)||/^#+\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:()=>n,Ai:()=>q,BV:()=>t,Ff:()=>l,Fv:()=>B,K1:()=>z,M$:()=>ah,N1:()=>_,NS:()=>C,S2:()=>aa,ST:()=>U,Ty:()=>u,bM:()=>ac,f8:()=>x,gN:()=>v,hr:()=>S,i0:()=>W,iC:()=>s,ji:()=>X,k0:()=>A,kQ:()=>ag,mR:()=>ae,qK:()=>H,qm:()=>Q,t4:()=>af,vY:()=>V,xX:()=>T,yd:()=>ab,yw:()=>G});var d=c(8753),e=c(74329),f=c(78217),g=c(11248),h=c(70208),i=c(91977),j=c(23500),k=c(22157);function l(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 m(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 n(a,b=[]){let c=[],d=m(a,"全文");for(let a of(d&&c.push(d),b)){let b=m(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=m(e[1],`小节“${d}”`);f&&c.push(f)}}return c}function o(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)?{...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 p(a){let b=o(a);return"blocker"===b.severity&&(!!("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 q(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(o).filter(a=>"error"===a.level&&p(a)),g=/缺少规划小节|小节生成未达标|小节内容补写未完成|空小节|小节只有标题|生成未完成|正文不足|主要施工内容小节缺失|部分章节生成失败|Writer 未完成|不得出现|疑似提示词指令标题|项目污染|跨章一致性/u,h=d?f.filter(a=>g.test(a.message)):f,i=[{key:"no_errors",label:"无阻断级校验错误",passed:0===h.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)&&p(a))},{key:"numeric_consistency",label:"跨章数值口径与资料一致",passed:!a.some(a=>"error"===a.level&&/跨章一致性冲突|跨章一致性缺口|跨章一致性复核/u.test(a.message)&&p(a))}];return{passed:0===h.length,blockingIssues:h,checklist:i}}function r(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 s(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}function t(a){let b=[],c=[];for(let b of e.ZH)a.includes(b)&&c.push(b);c.length>0&&b.push({level:"warning",message:`存在模板化前缀或套话:${c.join("、")}`,suggestion:"请删除“本节/本章将/以下从”等前缀,标题后直接进入对象、动作、措施、检查和闭环。"});let d=a.match(/OCR|提示词|绑定片段|后台|文件路径|识别错误|知识库证据|知识库已确认事实|通用兜底段落|兜底占位|兜底模板/giu);return d?.length&&b.push({level:"warning",message:`正文包含后台或资料处理话术:${[...new Set(d)].join("、")}`,suggestion:"建议改为正式文档语言,例如“资料文字不清”“资料口径不一致”“项目资料”,不得暴露后台处理过程。"}),b}function u(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 v(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 w(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 x(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=>w(a[1]||"")).filter(Boolean):[]}(a),c=[...a.matchAll(/^#{2,4}\s+(\d+\.\d+\s+.+)$/gmu)].map(a=>w(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 y(a){let b=a.replace(/^#{1,6}\s+/u,"").replace(/^\s*\d+(?:\.\d+)*(?:[..、]|\s)+/u,"").replace(/^第[一二三四五六七八九十百千万\d]+[章节篇部分]\s*/u,"").trim(),c=(0,h.GQ)(b),d=/^(?:\d+(?:\.\d+)*\s*)?(?:[-—–]\s*)?(?:(?:判断|判定|识别|确认)?是否(?:涉及|涉|需要|适用).*|(?:如|若|如果)(?:涉及|不涉及|适用|不适用).*|.*(?:根据|结合).{0,12}(?:实际情况|项目情况|资料情况).{0,8}(?:判断|确定|编写|生成).*|.*(?:按需(?:生成|编写)|视情况|判断后|生成要求|编写要求|注意事项))\s*$/u;return d.test(b)||d.test(c)}function z(a){let b=[...a.matchAll(/^#{2,6}\s+(.+)$/gmu)].map(a=>(0,h.GQ)(a[1]||"")).filter(y);return b.length>0?[{level:"error",message:`正文存在疑似提示词指令标题:${[...new Set(b)].slice(0,8).join("、")}`,suggestion:"请删除或改写为正式施工组织设计小节标题,目录也不得收录该类标题。"}]:[]}function A(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=>w(a).length<=1);d&&b.push({level:"warning",message:`正文存在孤立字或残缺段落:${d}`,suggestion:"请删除残缺行或重新生成所在小节。"});let f=c.find(a=>/[,、;:和与在为对将]$/u.test(a)||/(通过|包括|如下|主要包括)$/u.test(a));f&&b.push({level:"warning",message:`正文存在疑似截断句:${f}`,suggestion:"请补完整该段落,避免以连接词、逗号或冒号结尾。"});let g=c.find(a=>a.length>380);g&&b.push({level:"warning",message:`正文存在过长段落:${g}`,suggestion:"请拆分为多段或表格,改善导出版式和可读性。"});let h=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));h&&b.push({level:"error",message:`正文存在列表项粘连同一行:${h.slice(0,120)}`,suggestion:"有序列表和无序列表必须逐项独占一行,确保 Markdown/PDF/DOCX 正确排版。"});let i=a.match(/(?: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];i&&b.push({level:"error",message:`正文残留资料页码元信息:${i}`,suggestion:"正式投标正文应引用招标文件、施工图设计文件、工程量清单和相关专业图纸,不写 PDF 页码或资料页数。"});let j=c.find(a=>/仅作为内部事实提取依据|正式正文不得引用文件名|后台事实|内部事实/u.test(a));return j&&b.push({level:"error",message:`正文残留内部处理说明:${j.slice(0,120)}`,suggestion:"正式投标正文不得出现内部事实抽取、后台处理或文件名引用限制说明。"}),b}function B(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,h.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,h.GQ)(a[1]||"")),i=(0,h.GQ)((e[c][1]||"").replace(/^第[一二三四五六七八九十百千万\d]+章\s*/u,""));1===g.length&&w(g[0])===w(i)&&b.push({level:"error",message:`章节只有一个且与章名同名的小节:${e[c][1]}`,suggestion:"应拆分为多个业务小节,不能用章标题重复作为唯一二级小节。"})}return b}function C(a){let b=[];/按审批确认执行/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>20&&b.push({level:"error",message:`表格分隔线异常重复:${f.length} 行`,suggestion:"请修复表格规范化逻辑,禁止把数据行拆成多个碎表。"}),r(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:"请统一表头和数据行列数;不应通过自动填充兜底词修补表格。"})}return b}function D(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 E(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:w(i),level:e,body:a.slice(f,h)}}).filter(a=>a.title&&(3===a.level||4===a.level))}function F(a,b,c,d,f){let g=D(d),h=e.w7.test(d)&&d.split(e.A5).some(a=>e.N3.test(a)),i=D(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 G(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(w(a))&&!/^附录/u.test(a.trim()))){let f=w(a),g=function(a,b){let c=E(a).filter(a=>(function(a,b){let c=w(a),d=w(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:F("",b,a.level,a.body,!0),textLength:D(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=F(e.title,a,g.level,g.body,!0);i&&c.push(i),d.add(h)}for(let a of E(b)){let b=`${e.title}|${a.title}|actual`,f=`${e.title}|${a.title}|planned`;if(d.has(b)||d.has(f))continue;let g=F(e.title,a.title,a.level,a.body,!1);g&&"empty"===g.reason&&c.push(g),d.add(b)}}return c}function H(a,b){return G(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 I(a){return`${a.fieldName||a.key} ${(0,k.lG)(a.value)}`.replace(/\s+/gu," ").trim()}function J(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]}function K(a,b,c){let d=[],e=new Set,f=RegExp(`(?:${b.source})(?:[^\\n。;;,,]{0,14}?)(\\d{2,}(?:[.,]\\d+)?\\s*万?)\\s*(${c.source})`,"giu");for(let b of a.matchAll(f)){let a=b[1].replace(/[,,]/gu,"").replace(/\s+/gu,""),c=b[2],f=`${a}|${c}`;!a||e.has(f)||(e.add(f),d.push({value:a,unit:c}))}return d}function L(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 M=/(?<![地上地下门卫室值班室配电室配电房泵房水泵房锅炉房公厕车库车棚岗亭传达室警卫室样板房售楼处门房])总?建筑面积|总?建设规模/u,N=/㎡|m²|m2|平方米/u,O=/合同估算价|合同估算价格|投资估算|最高投标限价|招标控制价|工程总投资|总投资|工程造价/u,P=/万元|亿元/u;function Q(a,b,c){let d=[],e=a=>c?.find(b=>b.kind===a&&b.resolution)?.resolution,f=a=>{let b=/(\d+(?:\.\d+)?)\s*(㎡|m²|m2|平方米|万元|亿元)/u.exec(a);return b?{value:b[1],unit:b[2]}:void 0},g=e("duration")??b.schedule.map(I).find(a=>/\d+\s*(?:日历天|天|个月|月)|计划工期|合同工期/u.test(a)),h=b.quality.map(I).find(a=>/质量|合格|优良/u.test(a));if(g){let b=J(g)[0],c=J(a.split("\n").filter(a=>!/^\s*\|/u.test(a.trim())).join("\n")),e=b?c.filter(a=>a!==b&&/日历天/u.test(a)):[];b&&e.length>=2&&d.push({level:"warning",message:`跨章一致性冲突:正文出现与资料工期不一致的表述 ${e.slice(0,6).join("、")}`,suggestion:`请统一使用资料中的工期口径:${g}`})}h&&!/质量标准|质量目标|合格|优良/u.test(a)&&d.push({level:"error",message:"跨章一致性缺口:正文未稳定体现资料中的质量目标",suggestion:`请在工程概况、质量保证和验收相关章节统一体现:${h}`});let i=e("area"),j=i??b.project.map(I).find(a=>/建设规模|建筑面积/u.test(a));if(j){let b=i?f(i):K(j,M,N)[0],c=K(a,M,N);if(b){let a=c.filter(a=>L(a)!==L(b));a.length>=1&&d.push({level:"error",message:`跨章一致性冲突:正文出现与资料建设规模不一致的表述 ${a.slice(0,6).map(a=>`${a.value}${a.unit}`).join("、")}`,suggestion:`请统一使用资料中的建设规模口径:${j.slice(0,80)}`})}}let k=e("cost"),l=k??b.project.map(I).find(a=>/合同估算|投资估算|最高投标限价|招标控制价|总投资|工程造价/u.test(a));if(l){let b=k?f(k):K(l,O,P)[0],c=K(a,O,P);if(b){let a=c.filter(a=>L(a)!==L(b));a.length>=1&&d.push({level:"error",message:`跨章一致性冲突:正文出现与资料估算价不一致的表述 ${a.slice(0,6).map(a=>`${a.value}${a.unit}`).join("、")}`,suggestion:`请统一使用资料中的估算价口径:${l.slice(0,80)}`})}}return d}function R(a){let b=[],c=new Set;for(let d of a.matchAll(/找平层|抹灰层|防水层|保温层|结合层|垫层|面层|粘结层|隔热层|隔离层/gu)){let e=d[0],f=a.slice(Math.max(0,d.index-60),Math.min(a.length,d.index+90)),g=f.match(/(\d+:\d+(?:\.\d+)?)/u)?.[1],h=f.match(/(\d+(?:\.\d+)?)\s*mm/u),i=h?Number(h[1]):void 0,j=`${e}|${g||""}|${i??""}`;c.has(j)||(c.add(j),b.push({layer:e,ratio:g,thickness:i}))}return b}function S(a,b){let c=[],d=R([...b.specifications,...b.quality,...b.preciseFacts,...b.bills].map(I).join("\n"));if(0===d.length)return c;let e=new Map;for(let a of d){let b=e.get(a.layer)||[];b.push(a),e.set(a.layer,b)}let f=R(a),g=new Set;for(let[a,b]of e){let d=[...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 f.filter(b=>b.layer===a)){if(1===d.length&&b.ratio&&b.ratio!==d[0]){let e=`ratio|${a}|${b.ratio}`;g.has(e)||(g.add(e),c.push({level:"error",message:`工序规格冲突:正文${a}配比 ${b.ratio} 与资料口径 ${d[0]} 不一致`,suggestion:`请将${a}配比统一为资料口径 ${d[0]},禁止改写资料规格。`}))}if(1===e.length&&Number.isFinite(b.thickness)&&Math.abs(b.thickness-e[0])>=1){let d=`thickness|${a}|${b.thickness}`;g.has(d)||(g.add(d),c.push({level:"error",message:`工序规格冲突:正文${a}厚度 ${b.thickness}mm 与资料口径 ${e[0]}mm 不一致`,suggestion:`请将${a}厚度统一为资料口径 ${e[0]}mm。`}))}}}return c}function T(a){let b=[],c=/(?:三检制|三级教育|三级管理|5S|24\s*小时|每日|每周|每月|一次|两次)/gu;for(let d of a){let a=[...new Set(d.content.match(c)||[])];a.length>=3&&!/责任人|检查记录|整改|复查|验收|台账|交底|巡查|闭环/u.test(d.content)&&b.push({level:"warning",message:`${d.title} 管理措施数字较多但缺少执行闭环:${a.slice(0,8).join("、")}`,suggestion:"这些管理数字可以保留,但需要补充责任主体、检查频次、记录台账、整改复查和闭环要求。"})}return b}function U(a){let b=/(?:加强组织领导|严格执行规范|落实责任制度|确保工程质量|强化过程管理|提高思想认识|完善管理体系|形成闭环管理)/gu,c=[];for(let d of a)(d.content.match(b)||[]).length>=6&&!/材料|工序|验收|复验|节点|风险|交底|隐蔽|检验批|进场/u.test(d.content)&&c.push({level:"error",message:`${d.title} 存在较多未绑定项目事实和工序控制点的泛化套话`,suggestion:"请替换为结合资料事实、施工对象、工序控制、验收资料和整改闭环的专业内容。"});return c}function V(a,b){let c=[...b.project,...b.schedule,...b.quality,...b.safety,...b.resources,...b.preciseFacts,...b.bills,...b.drawings,...b.rules,...b.specifications].map(I).join("\n");if(80>(0,f.V7)(c))return[];let d=[],e=(0,g.K3)(c),h=[],i=[],j=[];for(let b of(0,g.zn)(a)){if(/^\d+\.\d+$/u.test(b))continue;let c=(0,g.K3)(b),d=a.indexOf(b);if(d<0)continue;let f=a.lastIndexOf("\n",d-1)+1,k=a.slice(f,0>a.indexOf("\n",d)?a.length:a.indexOf("\n",d));if(/^\s*\|/u.test(k.trim()))continue;let l=a.slice(Math.max(0,d-36),Math.min(a.length,d+b.length+36)),m=function(a,b){let c=`${a} ${b}`;return/三检制|三级|5S|24\s*小时|每日|每周|每月|一次|两次|责任制|制度/u.test(c)||/暂列金额|暂估价|报价|单价|合价|综合单价|税率|增值税|预留金/u.test(c)||/^\d+(?:\.\d+)?(?:月|年)$/u.test(a)&&/开工|竣工|日期|计划|年|月/u.test(b)?"soft":/总工期|计划工期|合同工期|日历天/u.test(c)||/最高投标限价|招标控制价|合同估算价|投资估算|报价|金额|万元|元/u.test(c)||/(?:建设规模|总建筑面积|总用地面积|总占地面积).{0,16}(?:m²|㎡|m2|平方米)/u.test(c)?"scope":/(?:工程量|清单|建设规模|建筑面积|长度|材料|设备|规格|型号).{0,24}(?:m²|㎡|m3|m³|米|吨|套|台|个|项|%)/u.test(c)?"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(c)?"soft":/标准|规范|编号/u.test(c)?"spec":"soft"}(b,l);"scope"!==m||e.includes(c)||h.push(b),"spec"!==m||e.includes(c)||i.push(b),"soft"!==m||e.includes(c)||j.push(b)}let l=[...new Set(h)],m=[...new Set(i)],n=[...new Set(j)];return l.length>=1&&d.push({level:"error",message:`生成后事实反查失败:正文出现资料事实主表中未找到的总量口径数字 ${l.slice(0,8).join("、")}`,suggestion:"总量口径数字(工期/金额/建设规模)必须与资料一致;请删除或改写为资料确认的口径,禁止编造。"}),m.length>=2&&d.push({level:"warning",message:`生成后事实反查提示:正文出现资料事实主表中未找到的规格明细数字 ${m.slice(0,8).join("、")}`,suggestion:"建议复核这些规格是否来自管理制度、规范要求或资料事实;如无依据,改为定性管理要求。"}),n.length>=6&&d.push({level:"warning",message:`生成后事实反查提示:正文出现较多未在资料事实主表中反查到的管理数字 ${n.slice(0,10).join("、")}`,suggestion:"请确认这些管理数字属于通用制度、规范要求或项目资料事实;如无依据,建议改为定性管理要求。"}),/质量目标|质量标准/u.test(a)&&b.quality.length>0&&!b.quality.some(b=>a.includes((0,k.lG)(b.value).slice(0,18)))&&d.push({level:"warning",message:"生成后事实反查提示:正文质量目标表述未明显匹配质量事实主表",suggestion:"请使用资料中的质量目标原文或等价表述。"}),d}function W(a){let b=[];for(let d of a){var c;let a=d.content;if(800>(0,f.V7)(a))continue;let e=/资料|招标|清单|图纸|标准|范围|工期|质量|验收/u.test(a)?2:+!!/项目|工程|要求/u.test(a),g=/首先|其次|同时|最后|一是|二是|流程|步骤|阶段|组织顺序/u.test(a)?2:+!!/并且|同时|然后|因此/u.test(a),h=/控制点|关键线路|复验|隐蔽验收|风险|交底|检验批|整改|闭环/u.test(a)?2:+!!/措施|要求|管理|检查/u.test(a),i=/责任人|检查|记录|验收|整改|复查|进场|调配|应急/u.test(a)?2:+!!/落实|执行|安排|组织/u.test(a),j=/本项目|本工程|招标范围|工程量|建设地点|计划工期|质量目标/u.test(a)?2:+!!/项目|工程/u.test(a),k=/工期|质量|安全|资源|验收/u.test(a)?2:+!!/目标|要求/u.test(a),l={factuality:e,structure:g,depth:h,executable:i,specificity:j,consistency:k},m=e+g+h+i+j+k,n=(c=d.title,/概况|工程|项目/u.test(c)?{min:5,focus:"事实依据、项目特异性"}:/部署|总体|组织/u.test(c)?{min:6,focus:"组织结构、可执行闭环、跨章一致性"}:/进度|工期/u.test(c)?{min:6,focus:"进度结构、工期一致性、纠偏机制"}:/质量/u.test(c)?{min:6,focus:"质量深度、验收复验、资料闭环"}:/安全|文明|危大|风险/u.test(c)?{min:6,focus:"风险覆盖、应急响应、检查整改"}:/资源|材料|设备|劳动力/u.test(c)?{min:5,focus:"资源依据、进场调配、进度支撑"}:{min:4,focus:"事实依据、专业深度、可执行性"});if(m<n.min){let a=Object.entries(l).filter(([,a])=>a<1).map(([a])=>a).join("、")||n.focus;b.push({level:"error",message:`${d.title} 专业评分不足:${m}/12,薄弱维度:${a}`,suggestion:`请按章节任务卡补齐${n.focus},并写出资料依据、实施流程、专业控制点和检查整改闭环。`})}}return b}function X(a){let b=[{re:/进度|工期/u,need:/关键线路|穿插|纠偏|资源保障|节点|动态调整/u,message:"进度工期章节缺少关键线路、穿插施工或纠偏保障内容"},{re:/质量/u,need:/材料.*验收|复验|隐蔽验收|整改.*复验|质量.*资料|检验批/u,message:"质量章节缺少材料验收复验、隐蔽验收或整改复验闭环"},{re:/安全|文明|危大|风险/u,need:/风险|临电|消防|应急|检查.*整改|文明施工|人员|设备/u,message:"安全文明章节缺少风险识别、现场控制或应急检查闭环"},{re:/资源|材料|设备|劳动力/u,need:/进场|验收|调配|保管|供应|投入计划/u,message:"资源章节缺少进场、验收、调配或保管计划"},{re:/施工|工艺|技术|方案/u,need:/准备|流程|工艺|控制点|验收|交底/u,message:"施工技术章节缺少施工准备、工艺流程、控制点或验收要求"}],c=[];for(let d of a){let a=d.content;for(let e of b)e.re.test(d.title)&&(0,f.V7)(a)>=600&&!e.need.test(a)&&c.push({level:"error",message:`${d.title}:${e.message}`,suggestion:"请按专业任务卡定向补写该章节,补齐可实施的控制措施、资料依据和闭环要求。"})}return c}function Y(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 Z(a,b){let c=0;for(let d of a)b.includes(d.replace(e.ug,""))&&(c+=1);return c}let $=/日历天|个月|㎡|m²|m3|m³|MPa|kPa|kN|GB\/T|GB|JGJ|ISO|DN|φ|Φ|米\/秒|天$/u;function _(a,b,c=[]){let d=[],f=a.replace(e.ug,""),g=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);Y(d,f)||b.add(d)}}return[...b]}(c),h=g.length>=e.mu?g: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();Y(c,d)||b.add(c)}}return[...b]}(b),i=Z(h,f);h.length>=e.mu&&i/h.length<e.tg&&d.push({level:"warning",message:`可靠精确参数使用不足:${i}/${h.length}`,suggestion:"请将资料中可靠的规格、参数、数量、时间、比例和标准编号写入对应章节;商务金额、单价、税率、预留金不得写入正文。"});let j=function(a){let b=[...a].sort((a,b)=>a.localeCompare(b,"zh")),c=b.filter(a=>$.test(a)),d=b.filter(a=>!$.test(a));return[...c.slice(0,8),...d.slice(0,2)].slice(0,10)}(h);if(j.length>=6){let a=Z(j,f);if(a/j.length<.5){let b=j.filter(a=>!f.includes(a.replace(e.ug,""))).slice(0,3);d.push({level:"error",message:`可靠精确参数使用不足:关键参数抽查 ${a}/${j.length}${b.length?`(缺失如 ${b.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}function aa(a,b,c){let d=[],e=c.tables||[];if(0===e.length)return d;let f=a.replace(/\s+/gu,"").toLowerCase(),g=0,h=0,i=[];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){g+=1;let a=c>=0?(b[c]||"").replace(/\s+/gu,""):"",j=d>=0?(b[d]||"").replace(/\s+/gu,""):"",k=e>=0?(b[e]||"").replace(/\s+/gu,""):"",l=a.length>=3?a.slice(0,Math.min(a.length,16)):"",m=j.length>=3?j.slice(0,Math.min(j.length,12)):"",n=l&&f.includes(l),o=m&&f.includes(m);n||o?h+=1:a.length>=3&&i.push(`${a.slice(0,40)}${k?` ${k}`:""}(未落位)`)}}if(g>0){let a=h/g,b=i.length>0?`未落位项(共${i.length}项):${i.slice(0,12).join(";")}${i.length>12?` 及其他${i.length-12}项`:""}`:"";a<.3?d.push({level:"warning",message:`清单项落位严重不足:${h}/${g} 项(${Math.round(100*a)}%)`,suggestion:`清单明细数量较大,建议优先补充主要分部分项、关键规格和大额工程量。${b}`}):a<.6&&d.push({level:"warning",message:`清单项落位不足:${h}/${g} 项(${Math.round(100*a)}%)`,suggestion:`建议补充落位以下清单项:${b}`})}return d}function ab(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 ac(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 ad(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 ae(a,b){let c=`${b.name} ${b.category} ${b.outputTitle} ${b.description}`,f=[];for(let a of(0,d.V)().autoSpecGates)ad(c,a.templateMatchers)&&f.push(a);if(0===f.length)return[];let g=[],h=r(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 af(a){let b=`${a.name} ${a.category} ${a.outputTitle} ${a.description}`,c=new Set;for(let a of(0,d.V)().autoSpecGates)if(ad(b,a.templateMatchers))for(let b of a.requiredTexts)b&&c.add(b);return[...c]}function ag(a,b,c,d,g,h,j){var k;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||(k=b.name,/国家法律法规|地方法规|规章|规范标准|标准规范|行业标准|现行规范|法律法规|合规|施工方法|工艺流程|质量控制|安全文明|应急|劳动力|材料投入|机械设备|检测仪器|关键节点/u.test(k)))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,i.I2)(c,b)&&(e=!0),!f&&(0,i.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=r(g),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}(g),s=(0,f.Cv)(g);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},f=a.target||b.target||"",i=a.value||b.value||f,k=d.find(a=>a.title===f),r=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:f,value:i,min:a.min||Number(b.value)||1,markdown:g,textScope:"chapter"===a.subject&&k?k.content:g,regex:i?function(a){try{return RegExp(a,"iu")}catch{return}}(i):void 0,chapter:k,factNames:n,chapterTitles:o,tableBlocks:p,imageRefs:q,estimatedPages:s,allFacts:m,factsModel:c,projectBindings:h,promptBindings:j});r&&l.push(r)}return l}function ah(a,b){let c=function(a){let b="";for(let c of(0,j.dU)(a))c.content&&(b+=`${c.content}
|
|
2
2
|
|
|
3
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[]}},34680:(a,b,c)=>{c.d(b,{JP:()=>m,Tz:()=>q,X6:()=>o,Zk:()=>n,fC:()=>r,l8:()=>p});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(95734),l=c(22157);function m(a){let b=a.template.chapters.length,c=b>0?a.targetWords/b:a.targetWords,d=`${a.template.name}
|
|
4
4
|
${a.template.category||""}
|
|
@@ -35,7 +35,7 @@ ${b}
|
|
|
35
35
|
返回 JSON:{"issues":[]}`,{maxTokens:1e3,temperature:.1,signal:a.signal,diagnostics:a.diagnostics})))).flatMap(a=>Array.isArray(a?.issues)?a.issues:[]).map(aE).filter(Boolean))];return{issues:e,stage:(0,al.X5)({type:"llm_review",roleId:"global-consistency-review",status:e.length>0?"failed":"success",message:e.length>0?`全局一致性审查完成:发现 ${e.length} 个跨章问题`:"全局一致性审查通过"},{subtitle:"全局一致性审查"})}}var aI=c(71001);let aJ=/安全|文明|质量|绿色施工|环保|扬尘|消防|应急|危大|风险|规范|标准|管理要求|施工工艺|技术措施|验收/u,aK=/项目名称|工程名称|建设地点|建设单位|招标人|发包人|建设规模|招标范围|合同工期|计划工期|质量标准|危大工程清单|工程量|材料规格|设备型号|图纸参数|报价|单价|利润|税率|合同金额|联系方式|品牌/u,aL=/报价|单价|合价|金额|利润|税率|增值税|招标控制价|最高投标限价|中标价|合同价|暂列金额/u,aM=/联网增强|联网检索|网页资料|搜索结果|根据网页|互联网资料|在线资料|浏览器|搜索引擎/u,aN=["项目名称","工程名称","建设地点","建设单位","招标人","发包人","建设规模","招标范围","合同工期","计划工期","工程量","报价","单价"];function aO(a){return a.replace(/&/gu,"&").replace(/</gu,"<").replace(/>/gu,">").replace(/"/gu,'"').replace(/'/gu,"'").replace(/<[^>]+>/gu,"").replace(/\s+/gu," ").trim()}async function aP(a,b,c,d,e){let f=`https://duckduckgo.com/html/?q=${encodeURIComponent(a)}`,g=new AbortController,h=setTimeout(()=>g.abort(),8e3),i=()=>g.abort();e?.addEventListener("abort",i,{once:!0});let j=await fetch(f,{headers:{"User-Agent":"Mozilla/5.0 compatible; customize-agent web research"},signal:g.signal}).finally(()=>{clearTimeout(h),e?.removeEventListener("abort",i)});return j.ok?[...(await j.text()).matchAll(/<a[^>]+class="result__a"[^>]+href="([^"]+)"[^>]*>([\s\S]*?)<\/a>[\s\S]*?<a[^>]+class="result__snippet"[^>]*>([\s\S]*?)<\/a>/giu)].map(a=>{let b=aO(a[1]||""),c=aO(a[2]||""),d=aO(a[3]||""),e=/uddg=([^&]+)/u.exec(b)?.[1];return{url:e?decodeURIComponent(e):b,title:c,snippet:d}}).filter(a=>{let b=`${a.title} ${a.snippet} ${a.url}`;return!(!a.url||!a.snippet||aK.test(b)||aL.test(b)||aM.test(b)||d.some(a=>a&&b.includes(a)))&&(0===c.length||c.some(b=>a.url.includes(b)))}).slice(0,b):[]}async function aQ(a){if(!a.config.enabled||!function(a,b){let c=`${a} ${b.join(" ")}`;return!(!aJ.test(c)||/项目概况|工程概况|建设地点|建设规模|招标范围|工程量|报价|造价/u.test(c)&&!/安全|文明|质量|危大|环保|工艺|措施/u.test(c))}(a.chapterTitle,a.sectionTitles))return{evidence:[],queries:[],filtered:0};let b=function(a,b,c){let d=`${a} ${b.join(" ")}`,e=[/危大/u.test(d)?"危大工程 专项施工方案 管理规定 安全措施":"",/安全|文明/u.test(d)?"建筑工程 安全文明施工 管理要求":"",/质量|验收/u.test(d)?"建筑工程 质量控制 质量验收 通用要求":"",/扬尘|环保|绿色/u.test(d)?"施工现场 扬尘治理 绿色施工 环保要求":"",/消防|应急/u.test(d)?"施工现场 消防 应急管理 要求":"",/工艺|技术措施/u.test(d)?"建筑工程 施工工艺 技术措施 通用要求":""].filter(Boolean),f=`${a.replace(aK,"")} 公开规范 通用要求`.trim();return[...new Set(e.length?e:[f])].slice(0,c)}(a.chapterTitle,a.sectionTitles,a.config.maxQueriesPerChapter),c=[],d=0;for(let e of b)try{for(let b of(await aP(e,a.config.maxResultsPerQuery,a.config.trustedDomains,a.runtimeRules.forbiddenTerms||[],a.signal))){let e=function(a,b){let c=a;for(let a of aN)c=c.replace(RegExp(`${a}[^。;;
|
|
36
36
|
]{0,80}`,"gu"),"");for(let a of b.map(a=>{var b;return null==(b=a.value)?"":"string"==typeof b||"number"==typeof b||"boolean"==typeof b?String(b).trim():""}).filter(a=>a.length>=3&&a.length<=80))c=c.replace(RegExp(a.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&"),"gu"),"");return c.replace(aL,"").trim()}(b.snippet,a.localFacts);if(!e||e.length<20){d+=1;continue}c.push({chapterId:a.chapterId,filePath:b.url,score:.42,content:`参考依据:${b.title}
|
|
37
37
|
${e}`,source:function(a){let b=a.toLowerCase();return b.includes(".gov.cn")||b.includes("mohurd")||b.includes("zjt")||a.includes("住建")?"web-policy":"web-evidence"}(b.url),sectionTitle:a.chapterTitle})}}catch{d+=1}return{evidence:c,queries:b,filtered:d}}function aR(a){return e.resolve(a).replace(/\\/gu,"/").toLowerCase()}function aS(a,b=[]){return{projectId:a,allowedFilePaths:[...new Set(b.filter(Boolean).map(aR))]}}function aT(a){return!!a?.allowedFilePaths.length}function aU(a,b){if(!aT(b))return!0;if(!a)return!1;let c=aR(a);return b.allowedFilePaths.includes(c)}function aV(a,b){return a.filter(a=>aU(a.filePath,b))}function aW(a,b){return a.filter(a=>aU(a.sourceFile,b))}function aX(a,b,c){if(!aT(b))return;let d=a.filter(a=>!aU(a.filePath,b));if(d.length>0){let a=d.slice(0,5).map(a=>a.filePath).join(";");throw Error(`EVIDENCE_SCOPE_VIOLATION:${c}:${a}`)}}function aY(a){return/--|延期到|资料|附件|扫描|目录|汇总|打包|备份|\d{1,2}\.\d{1,2}/u.test(a)}function aZ(a){return a.replace(/[((]\d+[))]/gu,"").replace(/副本|最终版|扫描件|定稿/gu,"").replace(/[\s,。,.;;::《》“”‘’()()_-]+/gu,"").toLowerCase()}function a$(a,b){let c=aZ(b);if(!c||c.length<4)return!0;let d=aZ(a);return!!d.includes(c)||c.length>=12&&d.includes(c.slice(0,Math.max(8,Math.floor(.72*c.length))))}function a_(a){return a.replace(/[((]\d+[))]/gu,"").replace(/副本|最终版|扫描件|定稿/gu,"").replace(/\s+/gu,"").replace(/[,。,.;;::《》“”‘’()()_-]/gu,"").toLowerCase()}function a0(a,b){let c=a.trim();if(p(b,c)||o(b,c)||/签章|盖章|联系人|联系电话|电话|邮箱|解密|开标|评标|保证金|交易系统|空白|填写|上传|下载|递交|投标文件制作|电子服务系统|交易平台/u.test(c)||/\|/u.test(c)||/^#+\s*/u.test(c)||/见(?:招标公告|投标人须知|前附表|本项目|补疑)|资料参数行摘要|公共资源交易监督管理|开评标程序|监管部门|招标代理机构|监督管理部门|行政监督部门/u.test(c)||/是否|符合|采购范围|规定的投标截止时间|电子交易系统|投标人须知|招标文件正文/u.test(c)&&/\d{3,}/u.test(c)||/项目名称|工程名称/u.test(c)&&/项目编号|工程概况|建筑面积|本项目分为|现状建筑物|改造工程|标段/u.test(c)||/项目编号[::]|工程概况[::]|本项目分为|现状建筑物|总建筑面积|本次改造工程|清单编制说明/u.test(c))return"";let d=/\d+(?:\.\d+)?\s*(?:日历天|天|个月|月)/u.exec(c)?.[0],e=a_(d&&/工期|总工期|合同工期|计划工期|施工周期/u.test(c)?d:c);return!e||e.length>80?"":e}var a1=c(1358);function a2(a){return(0,R.K3)(`${a.fieldName||a.key} ${(0,z.lG)(a.value)}`)}function a3(a){return[...a.project,...a.schedule,...a.quality,...a.safety,...a.resources,...a.preciseFacts,...a.bills,...a.drawings,...a.rules,...a.specifications].map(a2).join("\n")}function a4(a,b){let c=[{label:"工期",corpus:a3({...b,project:[],quality:[],safety:[],resources:[],preciseFacts:[],bills:[],drawings:[],rules:[],specifications:[]}),required:/工期|日历天|合同工期|计划工期/u},{label:"质量",corpus:a3({...b,project:[],schedule:[],safety:[],resources:[],preciseFacts:[],bills:[],drawings:[],rules:[],specifications:[]}),required:/质量目标|质量标准|验收|复验/u},{label:"安全",corpus:a3({...b,project:[],schedule:[],quality:[],resources:[],preciseFacts:[],bills:[],drawings:[],rules:[],specifications:[]}),required:/安全|文明|风险|应急/u},{label:"资源",corpus:a3({...b,project:[],schedule:[],quality:[],safety:[],preciseFacts:[],bills:[],drawings:[],rules:[],specifications:[]}),required:/资源|材料|设备|劳动力/u},{label:"工程量",corpus:a3({...b,project:[],schedule:[],quality:[],safety:[],resources:[],preciseFacts:[],drawings:[],rules:[],specifications:[]}),required:/工程量|清单|建筑面积|长度|吨|台|套|项/u}],d=(0,R.K3)(a.replace(/\s+/gu,"")),e=[];for(let b of c)b.required.test(a)&&0===[...new Set(b.corpus.split("\n").map(a=>a.replace(/\s+/gu,"").slice(0,24)).filter(Boolean))].filter(a=>a.length>=6&&d.includes(a)).length&&e.push({level:"warning",message:`证据使用覆盖率偏低:正文中未明显使用${b.label}相关事实`,suggestion:`请在相应章节中引用至少一项${b.label}事实,避免只写通用表述。`});return e}function a5(a){let b=[],c=new Map(a.map(a=>[a.title,a.content])),d=a.map(a=>`${a.title}
|
|
38
|
-
${a.content}`).join("\n\n");return/进度|工期/u.test(d)&&/资源|材料|设备|劳动力/u.test(d)&&!/保障|投入|调配|进场|计划/u.test(c.get(a.find(a=>/资源|材料|设备|劳动力/u.test(a.title))?.title||"")||"")&&b.push({level:"warning",message:"章节逻辑依赖不足:进度章节与资源章节之间缺少明显支撑关系",suggestion:"请在资源章节补充与工期目标相匹配的劳动力、材料、设备投入和调配计划。"}),/质量/u.test(d)&&/施工|工艺|技术/u.test(d)&&!/验收|复验|控制点|交底|隐蔽/u.test(d)&&b.push({level:"warning",message:"章节逻辑依赖不足:质量章节未明显支撑施工工艺控制",suggestion:"请在施工技术和质量章节之间补齐工艺控制点、验收要求和整改复验闭环。"}),/安全|文明|风险/u.test(d)&&!/应急|检查|整改|巡查|培训|演练/u.test(d)&&b.push({level:"warning",message:"章节逻辑依赖不足:安全章节缺少检查整改和应急支撑",suggestion:"请补齐风险识别、检查整改、应急响应和演练闭环。"}),b}let a6=[{label:"工程名称",factGroups:["project"],patterns:[/工程名称\s*[::]\s*([^\n|]+)/u],locations:"封面、工程概况、页眉页脚、专项方案、表格标题"},{label:"建设地点",factGroups:["project"],patterns:[/建设地点\s*[::]\s*([^\n|]+)/u,/工程地点\s*[::]\s*([^\n|]+)/u],locations:"工程概况、周边环境、扬尘噪声、交通导改、属地化措施"},{label:"总工期",factGroups:["schedule"],patterns:[/总工期\s*[::]\s*([^\n|]+)/u,/计划工期\s*[::]\s*([^\n|]+)/u,/工期目标\s*[::]\s*([^\n|]+)/u],locations:"工程概况、进度计划、横道图、资源计划、纠偏措施"},{label:"建设规模",factGroups:["project","preciseFacts"],patterns:[/建设规模\s*[::]\s*([^\n|]+)/u,/建筑面积\s*[::]\s*([^\n|]+)/u,/道路长度\s*[::]\s*([^\n|]+)/u,/管线长度\s*[::]\s*([^\n|]+)/u],locations:"工程概况、工程量表、施工部署、资源配置"},{label:"机械数量型号",factGroups:["resources"],patterns:[/([\p{Script=Han}A-Za-z0-9]+(?:机|吊|泵|车))\s*[^\n|]{0,12}(\d+)\s*(台|套|辆)/u],locations:"机械表、平面布置、进度保障、安全专项方案"},{label:"劳动力人数",factGroups:["resources"],patterns:[/劳动力\s*[^\n|]{0,12}(\d+)\s*人/u,/班组\s*[^\n|]{0,12}(\d+)\s*人/u],locations:"劳动力计划、进度节点、抢工方案、工资保障台账"},{label:"危大工程清单",factGroups:["safety","preciseFacts"],patterns:[/危大工程\s*[::]\s*([^\n|]+)/u,/深基坑|高支模|起重吊装|脚手架/u],locations:"安全章节、专项方案、审批表、应急预案"},{label:"环保监测指标",factGroups:["quality","safety","preciseFacts"],patterns:[/PM10|PM2\.5|TSP|噪声|扬尘在线监测/u],locations:"文明施工、扬尘噪声、智慧工地、应急联动"}];function a7(a){return a.replace(/[\s,。;;::|]/gu,"").trim()}let a8=/塔式起重机|履带吊|汽车吊|卷扬机|脚手架|扣件|钢管|模板|噪声|PM2\.5|PM10|TSP|扬尘在线监测|临电|消防|安全网|围挡|洗车台|沉淀池|雾炮/u,a9=/不使用|不采用|不配置|无需|未采用|不得使用|禁止使用/u;function ba(a,b){let c=[];for(let d of b){let b=a[d];if(Array.isArray(b))for(let a of b)a&&"object"==typeof a&&"value"in a&&"string"==typeof a.value&&c.push(a.value)}return c.map(a7).filter(Boolean)}let bb={project:"项目基础事实",schedule:"工期与节点",quality:"质量目标与验收",safety:"安全文明要求",resources:"资源投入依据",quantities:"清单/图纸/工程量事实",rules:"规范规则与验收要求"};var bc=c(98632),bd=c(28103),be=c(42484);function bf(a,b){return b<=0?100*(a>0):Math.min(120,a/b*100)}function bg(...a){return a.flat()}var bh=c(87942);let bi=[{key:"project_name",label:"项目名称",aliases:["项目名称","工程名称","招标项目名称"],valueType:"text"},{key:"project_code",label:"项目编号",aliases:["项目编号","招标项目编号","工程编号"],valueType:"identifier"},{key:"owner",label:"招标人",aliases:["招标人","项目业主","建设单位","发包人","采购人"],valueType:"organization"},{key:"project_location",label:"建设地点",aliases:["建设地点","实施地点","服务地点","交付地点"],valueType:"location"},{key:"project_scale",label:"建设规模",aliases:["建设规模","工程规模","项目规模"],valueType:"scale"},{key:"schedule_requirement",label:"计划工期",aliases:["计划工期","合同工期","总工期","工期","实施周期","服务期限"],valueType:"duration"},{key:"quality_standard",label:"质量标准",aliases:["质量标准","质量目标","验收标准","服务标准"],valueType:"standard"},{key:"project_investment_estimate",label:"合同估算价",aliases:["合同估算价","合同估算价格","投资估算","估算价格","最高投标限价","招标控制价","预算金额"],valueType:"money"}];function bj(a){return/^(见|详见|参见|按|以).{0,30}(招标公告|招标文件|投标人须知|前附表|合同|附件|图纸|清单|约定|规定|执行)/u.test(a)||/见招标公告|见投标人须知前附表|详见|按.*执行/u.test(a)}function bk(a,b){switch(b.valueType){case"duration":if(!/\d+(?:\.\d+)?\s*(?:日历天|天|个月|月|年)/u.test(a))return{rejected:!0,score:-80,reason:"缺少明确工期数值和时间单位"};return{rejected:!1,score:45,reason:"包含明确工期数值和时间单位"};case"money":if(!/\d+(?:\.\d+)?\s*(?:万元|元|亿元)/u.test(a))return{rejected:!0,score:-80,reason:"缺少明确金额数值和单位"};if(/综合单价|税率|增值税|利润|报价明细/u.test(a))return{rejected:!0,score:-90,reason:"命中非目标商务明细"};return{rejected:!1,score:45,reason:"包含明确金额数值和单位"};case"standard":if(!/合格|优良|一次性验收|达到|满足|符合/u.test(a))return{rejected:!0,score:-70,reason:"不符合标准类字段表达"};if(/工期|投标|技术标准|有效期/u.test(a))return{rejected:!0,score:-90,reason:"标准字段包含其他字段或投标条款"};return{rejected:!1,score:40,reason:"符合标准类字段表达"};case"location":if(bj(a))return{rejected:!1,score:-40,reason:"引用型地点弱值"};if(!/(省|市|区|县|镇|街道|路|园区|大道|巷|内|号)/u.test(a))return{rejected:!1,score:-10,reason:"地点具体性不足"};return{rejected:!1,score:35,reason:"包含具体地址特征"};case"organization":if(/监督管理部门|投标人|中标候选人|评标委员会/u.test(a))return{rejected:!0,score:-90,reason:"组织字段角色串位"};if(/(公司|集团|单位|委员会|机关|中心|局|院|所|政府|运营管理)/u.test(a))return{rejected:!1,score:35,reason:"包含组织名称特征"};return{rejected:!1,score:5,reason:"组织名称特征较弱"};case"identifier":if(!/^[A-Za-z0-9\-_.()()]+$/u.test(a))return{rejected:!0,score:-70,reason:"编号格式不合法"};if(/(?:㎡|m²|m2|m3|m³|平方米|米|万元|元|日历天|个月)/u.test(a))return{rejected:!0,score:-60,reason:"编号中混入量纲单位,疑似字段串位"};return{rejected:!1,score:35,reason:"符合编号格式"};case"scale":if(/\d+(?:\.\d+)?\s*(?:㎡|平方米|m²|米|m|层|栋|座|万元|元)/iu.test(a))return{rejected:!1,score:30,reason:"包含规模数值或单位"};return{rejected:!1,score:5,reason:"规模字段为文本描述"};default:if("project_name"===b.key){if(/存在部位|风险等级|管控措施|监测频次|闭环要求|序号|内容|范围|不适用/u.test(a))return{rejected:!0,score:-90,reason:"项目名称字段串位或表头噪声"};if(!/项目|工程|学院|宿舍|楼|校区|施工总承包/u.test(a))return{rejected:!0,score:-70,reason:"项目名称缺少工程名称特征"};return{rejected:!1,score:35,reason:"符合项目名称特征"}}return{rejected:!1,score:a.length>=2?10:-20,reason:"文本字段"}}}function bl(a,b){let c=X(a.value),d=[],e=30,f=!1;(!c||c.length>260)&&(f=!0,e-=100,d.push("空值或过长")),/###|投标文件的编制|备选投标方案|投标将被否决|投标人提供|投标有效期|电子交易系统|公共资源交易监督管理部门|中标候选|评标委员会|实质性内容作出响应|招标人有权核查/u.test(c)&&(f=!0,e-=100,d.push("大段条款或 Markdown 噪声")),bi.some(a=>a.key!==b.key&&a.aliases.some(a=>c.includes(a)))&&(e-=45,d.push("包含其他字段名,疑似字段串位")),bj(c)&&(e-=35,d.push("引用型弱值"));let g=bk(c,b);return e+=g.score,d.push(g.reason),g.rejected&&(f=!0),"evidence"===a.sourceType&&(e+=20,d.push("来源为证据原文")),a.sourceName&&/补疑|答疑|澄清|补充|更正|修改/u.test(a.sourceName)&&(e+=35,d.push("补疑/澄清类修正文件,权威最高")),a.sourceName&&/招标文件|招标公告|前附表|合同|需求书|正文/u.test(a.sourceName)&&(e+=15,d.push("来源文件可信")),"generated_markdown"===a.sourceType&&(e-=10),{...a,value:c,confidence:e,rejected:f,reasons:d}}function bm(a){return function(a,b=bi){let c=new Map;for(let d of b){let b=a.filter(a=>a.fieldKey===d.key).sort((a,b)=>b.confidence-a.confidence),e=b.find(a=>!a.rejected&&a.confidence>0);e&&c.set(d.key,{fieldKey:d.key,label:d.label,value:e.value,source:e.sourceName||e.sourceType,confidence:e.confidence,candidates:b,selectedReason:e.reasons.join(";")})}return c}([...function(a){let b=[];for(let c of a){let a=function(a){let b=`${a.fieldId||""}${a.key||""}${a.fieldName||""}`;return bi.find(c=>c.key===a.fieldId||c.aliases.some(a=>b.includes(a)))}(c);if(!a)continue;let d=(0,z.lG)(c.value);b.push(bl({fieldKey:a.key,label:a.label,value:d,sourceType:"structured_fact",sourceName:c.sourceFile||c.sourceRef?.sectionTitle||"structured_fact"},a))}return b}(a.facts),...function(a,b="generated_markdown"){let c=[];for(let d of a.split(/\r?\n/u)){if(!/^\|.*\|\s*$/u.test(d)||/^\|\s*:?-{3,}:?/u.test(d))continue;let a=d.trim().replace(/^\|/u,"").replace(/\|$/u,"").split("|").map(a=>a.replace(/\*\*/gu,"").trim());if(a.length<2)continue;let e="序号"===a[0]&&a.length>=3?a[1]:a[0],f="序号"===a[0]&&a.length>=3?a[2]:a[1],g="序号"===a[0]&&a.length>=4?a[3]:a[2],h=bi.find(a=>a.aliases.some(a=>e.includes(a))||a.label===e);!h||!f||/内容|参数|资料未明确|系统暂未确认|暂未从知识库确认/u.test(f)||c.push(bl({fieldKey:h.key,label:h.label,value:f,sourceType:"generated_markdown",sourceName:g||b},h))}return c}(a.markdown||"")])}function bn(a){return({user:100,addendum:96,contract:90,tender:85,boq:75,drawing:70,standard:60,evidence:55,structured_fact:50,projectGraph:40,generated_markdown:30,derived:20,unknown:10})[a]}function bo(a){let b=e.join(process.env.HOME||process.cwd(),".customize-agent","cache","document-workflow",(0,z.c6)(a||"default"));return P.mkdirSync(b,{recursive:!0}),b}function bp(a){let b=[];for(let c of["area","cost","duration"]){let d=new Set,e=[];for(let b of a){let a=(0,z.lG)(b.value),f=function(a,b){let c=`${a||""} ${b||""}`;return/补疑|答疑|澄清|补充|更正|修改/u.test(c)?95:/合同/u.test(c)?90:/招标文件|招标公告|前附表|投标人须知|需求书/u.test(c)?85:/清单|工程量|BOQ|编制说明/u.test(c)?75:/图纸|设计/u.test(c)?70:50}(b.sourceFile,b.roleId);for(let g of function(a,b){let c=[],d="area"===b?/总?建筑面积|建设规模|总?用地面积|总?占地面积/u:"cost"===b?/合同估算价|合同估算价格|投资估算|最高投标限价|招标控制价|工程总投资|总投资|工程造价/u:/计划工期|合同工期|总工期|施工周期/u,e=RegExp(`(?:${d.source})(?:[^0-9\\n]{0,14}?)(\\d{2,}(?:[.,]\\d+)?)\\s*${"area"===b?"(万?㎡|万?m\xb2|万?m2|万?平方米)":"cost"===b?"(万元|亿元|万?元)":"(日历天|天|个月|月)"}`,"giu");for(let f of a.matchAll(e)){let e,g=f[0].match(d)?.[0]||"",h=f[1].replace(/[,,]/gu,"").trim(),i=(f[2]||"").trim();if(g&&h){if("duration"!==b){let b=a.slice(Math.max(0,f.index-12),f.index).replace(/^.*[。;;\n,,]/u,"");if(/拟|计划|规划|目标|力争|预计|期望|远期|未来|设想|建议|预期|争取/u.test(b))continue}if("duration"===b)e=`${h}|${i}`;else{let a=+!!/万/u.test(i),b=Number(h)*(a?1e4:1);if(!Number.isFinite(b))continue;e=String(/亿元/u.test(i)?1e8*b:/万元/u.test(i)?1e4*b:b)}c.push({scope:g,value:h,unit:i,compareKey:e})}}return c}(a,c)){let a=`${b.sourceFile||""}|${g.scope}|${g.compareKey}`;d.has(a)||(d.add(a),e.push({...g,sourceFile:b.sourceFile,priority:f}))}}if(!(e.length<2))for(let[a,d]of e.reduce((a,b)=>{let c=b.scope.replace(/^总/u,""),d=a.get(c)||[];return d.push(b),a.set(c,d),a},new Map)){if(new Set(d.map(a=>a.compareKey)).size<2||new Set(d.map(a=>a.sourceFile).filter(Boolean)).size<2)continue;let e=Math.max(...d.map(a=>a.priority)),f=d.filter(a=>a.priority===e),g=new Set(f.map(a=>a.compareKey)),h=f[0];b.push({kind:c,scope:`${a}(${"area"===c?"面积":"cost"===c?"金额":"工期"}口径)`,values:[...new Map(d.map(a=>[`${a.value}${a.unit}|${a.sourceFile||""}`,{value:a.value,unit:a.unit,sourceFile:a.sourceFile,priority:a.priority}])).values()],resolution:1===g.size?`${h.value}${h.unit}`:void 0})}}return b}function bq(a){let b=new Map;for(let c of a){if(!c.resolution||b.has(c.kind))continue;let a=c.values.find(a=>`${a.value}${a.unit}`===c.resolution),d=a?a.value.replace(/[,,]/gu,""):"",e=c.values.filter(a=>`${a.value}${a.unit}`!==c.resolution).map(a=>({value:a.value.replace(/[,,]/gu,""),unit:a.unit}));d&&0!==e.length&&b.set(c.kind,{winnerNum:d,losers:e})}return b}function br(a,b){return b?.length?a.map(a=>{let c=function(a,b){let c=a;for(let{winnerNum:a,losers:d}of bq(b).values())for(let b of d)b.unit&&c.includes(`${b.value}${b.unit}`)?c=c.split(`${b.value}${b.unit}`).join(`${a}${b.unit}`):c.includes(b.value)&&(c=c.split(b.value).join(a));return c}(a.content,b);return c===a.content?a:{...a,content:c}}):a}function bs(a,b){let c=bq(b);if(0===c.size)return a;let d={area:/建设规模|工程规模|建筑面积|用地面积|占地面积|project_scale|scale/u,cost:/合同估算|投资估算|最高投标限价|招标控制价|总投资|工程造价|project_cost|cost|price|amount/u,duration:/计划工期|合同工期|总工期|施工周期|duration|schedule/u};return a.map(a=>{let b=[...c.keys()].find(b=>d[b].test(a.key)||d[b].test(a.value));if(!b)return a;let{winnerNum:e,losers:f}=c.get(b),g=a.value,h=!1;for(let a of f)a.unit&&g.includes(`${a.value}${a.unit}`)?(g=g.split(`${a.value}${a.unit}`).join(`${e}${a.unit}`),h=!0):g.includes(a.value)&&(g=g.split(a.value).join(e),h=!0);return h?{...a,value:g}:a})}var bt=c(32434),bu=c(22213);function bv(a){return a.some(a=>"error"!==a.level&&"blocker"!==a.severity&&/正文不足,未达到任务最小深度/u.test(a.message))}function bw(a,b){let c=a?.[b];return c&&c.length>0?c[0]:b}function bx(a,b){return 0>=(0,w.V7)(a.content)?"failed":"completed"}let by=["项目名称 项目编号 招标人 项目概况与招标范围 建设地点 建设规模 计划工期 质量标准 合同估算价","计划工期 合同工期 总工期 日历天","合同估算价 合同估算价格 投资估算 最高投标限价 招标控制价","质量标准 质量目标 合格","建设地点 建设规模 招标范围"];function bz(a){let b=X(a),c=0;return/项目名称|工程名称|招标项目名称|项目编号|招标项目编号|招标人|建设单位|发包人/u.test(b)&&(c+=4),/计划工期|合同工期|总工期|\d+(?:\.\d+)?\s*(?:日历天|天|个月|月|年)/u.test(b)&&(c+=6),/合同估算价|投资估算|最高投标限价|招标控制价|\d+(?:\.\d+)?\s*(?:万元|元)/u.test(b)&&(c+=5),/质量标准|质量目标|合格|优良/u.test(b)&&(c+=4),/建设地点|建设规模|招标范围|项目概况与招标范围/u.test(b)&&(c+=4),/工程量|清单|图纸|设计说明|施工范围|施工内容|材料|设备|工艺|验收|复试|检测/u.test(b)&&(c+=3),/投标人须知|保证金|付款|违约金|电子交易|公共资源|开标|评标|合同协议书/u.test(b)&&(c-=4),c}async function bA(a){let b=[],c=new Set(a.scopedFilePaths),d=await Promise.all(by.map(async b=>((0,z.Te)(a.signal),(await a.manager.search(a.projectRoot,b,{scope:"project",filters:{filePaths:a.scopedFilePaths},limit:10,weights:{keyword:.65,vector:.25,rewrite:.8,hybridBonus:.2},generationMode:!1})).results.filter(a=>c.has(a.filePath)&&bz(`${a.sectionTitle||""}
|
|
38
|
+
${a.content}`).join("\n\n");return/进度|工期/u.test(d)&&/资源|材料|设备|劳动力/u.test(d)&&!/保障|投入|调配|进场|计划/u.test(c.get(a.find(a=>/资源|材料|设备|劳动力/u.test(a.title))?.title||"")||"")&&b.push({level:"warning",message:"章节逻辑依赖不足:进度章节与资源章节之间缺少明显支撑关系",suggestion:"请在资源章节补充与工期目标相匹配的劳动力、材料、设备投入和调配计划。"}),/质量/u.test(d)&&/施工|工艺|技术/u.test(d)&&!/验收|复验|控制点|交底|隐蔽/u.test(d)&&b.push({level:"warning",message:"章节逻辑依赖不足:质量章节未明显支撑施工工艺控制",suggestion:"请在施工技术和质量章节之间补齐工艺控制点、验收要求和整改复验闭环。"}),/安全|文明|风险/u.test(d)&&!/应急|检查|整改|巡查|培训|演练/u.test(d)&&b.push({level:"warning",message:"章节逻辑依赖不足:安全章节缺少检查整改和应急支撑",suggestion:"请补齐风险识别、检查整改、应急响应和演练闭环。"}),b}let a6=[{label:"工程名称",factGroups:["project"],patterns:[/工程名称\s*[::]\s*([^\n|]+)/u],locations:"封面、工程概况、页眉页脚、专项方案、表格标题"},{label:"建设地点",factGroups:["project"],patterns:[/建设地点\s*[::]\s*([^\n|]+)/u,/工程地点\s*[::]\s*([^\n|]+)/u],locations:"工程概况、周边环境、扬尘噪声、交通导改、属地化措施"},{label:"总工期",factGroups:["schedule"],patterns:[/总工期\s*[::]\s*([^\n|]+)/u,/计划工期\s*[::]\s*([^\n|]+)/u,/工期目标\s*[::]\s*([^\n|]+)/u],locations:"工程概况、进度计划、横道图、资源计划、纠偏措施"},{label:"建设规模",factGroups:["project","preciseFacts"],patterns:[/建设规模\s*[::]\s*([^\n|]+)/u,/建筑面积\s*[::]\s*([^\n|]+)/u,/道路长度\s*[::]\s*([^\n|]+)/u,/管线长度\s*[::]\s*([^\n|]+)/u],locations:"工程概况、工程量表、施工部署、资源配置"},{label:"机械数量型号",factGroups:["resources"],patterns:[/([\p{Script=Han}A-Za-z0-9]+(?:机|吊|泵|车))\s*[^\n|]{0,12}(\d+)\s*(台|套|辆)/u],locations:"机械表、平面布置、进度保障、安全专项方案"},{label:"劳动力人数",factGroups:["resources"],patterns:[/劳动力\s*[^\n|]{0,12}(\d+)\s*人/u,/班组\s*[^\n|]{0,12}(\d+)\s*人/u],locations:"劳动力计划、进度节点、抢工方案、工资保障台账"},{label:"危大工程清单",factGroups:["safety","preciseFacts"],patterns:[/危大工程\s*[::]\s*([^\n|]+)/u,/深基坑|高支模|起重吊装|脚手架/u],locations:"安全章节、专项方案、审批表、应急预案"},{label:"环保监测指标",factGroups:["quality","safety","preciseFacts"],patterns:[/PM10|PM2\.5|TSP|噪声|扬尘在线监测/u],locations:"文明施工、扬尘噪声、智慧工地、应急联动"}];function a7(a){return a.replace(/[\s,。;;::|]/gu,"").trim()}let a8=/塔式起重机|履带吊|汽车吊|卷扬机|脚手架|扣件|钢管|模板|噪声|PM2\.5|PM10|TSP|扬尘在线监测|临电|消防|安全网|围挡|洗车台|沉淀池|雾炮/u,a9=/不使用|不采用|不配置|无需|未采用|不得使用|禁止使用/u;function ba(a,b){let c=[];for(let d of b){let b=a[d];if(Array.isArray(b))for(let a of b)a&&"object"==typeof a&&"value"in a&&"string"==typeof a.value&&c.push(a.value)}return c.map(a7).filter(Boolean)}let bb={project:"项目基础事实",schedule:"工期与节点",quality:"质量目标与验收",safety:"安全文明要求",resources:"资源投入依据",quantities:"清单/图纸/工程量事实",rules:"规范规则与验收要求"};var bc=c(98632),bd=c(28103),be=c(42484);function bf(a,b){return b<=0?100*(a>0):Math.min(120,a/b*100)}function bg(...a){return a.flat()}var bh=c(87942);let bi=[{key:"project_name",label:"项目名称",aliases:["项目名称","工程名称","招标项目名称"],valueType:"text"},{key:"project_code",label:"项目编号",aliases:["项目编号","招标项目编号","工程编号"],valueType:"identifier"},{key:"owner",label:"招标人",aliases:["招标人","项目业主","建设单位","发包人","采购人"],valueType:"organization"},{key:"project_location",label:"建设地点",aliases:["建设地点","实施地点","服务地点","交付地点"],valueType:"location"},{key:"project_scale",label:"建设规模",aliases:["建设规模","工程规模","项目规模"],valueType:"scale"},{key:"schedule_requirement",label:"计划工期",aliases:["计划工期","合同工期","总工期","工期","实施周期","服务期限"],valueType:"duration"},{key:"quality_standard",label:"质量标准",aliases:["质量标准","质量目标","验收标准","服务标准"],valueType:"standard"},{key:"project_investment_estimate",label:"合同估算价",aliases:["合同估算价","合同估算价格","投资估算","估算价格","最高投标限价","招标控制价","预算金额"],valueType:"money"}];function bj(a){return/^(见|详见|参见|按|以).{0,30}(招标公告|招标文件|投标人须知|前附表|合同|附件|图纸|清单|约定|规定|执行)/u.test(a)||/见招标公告|见投标人须知前附表|详见|按.*执行/u.test(a)}function bk(a,b){switch(b.valueType){case"duration":if(!/\d+(?:\.\d+)?\s*(?:日历天|天|个月|月|年)/u.test(a))return{rejected:!0,score:-80,reason:"缺少明确工期数值和时间单位"};return{rejected:!1,score:45,reason:"包含明确工期数值和时间单位"};case"money":if(!/\d+(?:\.\d+)?\s*(?:万元|元|亿元)/u.test(a))return{rejected:!0,score:-80,reason:"缺少明确金额数值和单位"};if(/综合单价|税率|增值税|利润|报价明细/u.test(a))return{rejected:!0,score:-90,reason:"命中非目标商务明细"};return{rejected:!1,score:45,reason:"包含明确金额数值和单位"};case"standard":if(!/合格|优良|一次性验收|达到|满足|符合/u.test(a))return{rejected:!0,score:-70,reason:"不符合标准类字段表达"};if(/工期|投标|技术标准|有效期/u.test(a))return{rejected:!0,score:-90,reason:"标准字段包含其他字段或投标条款"};return{rejected:!1,score:40,reason:"符合标准类字段表达"};case"location":if(bj(a))return{rejected:!1,score:-40,reason:"引用型地点弱值"};if(!/(省|市|区|县|镇|街道|路|园区|大道|巷|内|号)/u.test(a))return{rejected:!1,score:-10,reason:"地点具体性不足"};return{rejected:!1,score:35,reason:"包含具体地址特征"};case"organization":if(/监督管理部门|投标人|中标候选人|评标委员会/u.test(a))return{rejected:!0,score:-90,reason:"组织字段角色串位"};if(/(公司|集团|单位|委员会|机关|中心|局|院|所|政府|运营管理)/u.test(a))return{rejected:!1,score:35,reason:"包含组织名称特征"};return{rejected:!1,score:5,reason:"组织名称特征较弱"};case"identifier":if(!/^[A-Za-z0-9\-_.()()]+$/u.test(a))return{rejected:!0,score:-70,reason:"编号格式不合法"};if(/(?:㎡|m²|m2|m3|m³|平方米|米|万元|元|日历天|个月)/u.test(a))return{rejected:!0,score:-60,reason:"编号中混入量纲单位,疑似字段串位"};return{rejected:!1,score:35,reason:"符合编号格式"};case"scale":if(/\d+(?:\.\d+)?\s*(?:㎡|平方米|m²|米|m|层|栋|座|万元|元)/iu.test(a))return{rejected:!1,score:30,reason:"包含规模数值或单位"};return{rejected:!1,score:5,reason:"规模字段为文本描述"};default:if("project_name"===b.key){if(/存在部位|风险等级|管控措施|监测频次|闭环要求|序号|内容|范围|不适用/u.test(a))return{rejected:!0,score:-90,reason:"项目名称字段串位或表头噪声"};if(!/项目|工程|学院|宿舍|楼|校区|施工总承包/u.test(a))return{rejected:!0,score:-70,reason:"项目名称缺少工程名称特征"};return{rejected:!1,score:35,reason:"符合项目名称特征"}}return{rejected:!1,score:a.length>=2?10:-20,reason:"文本字段"}}}function bl(a,b){let c=X(a.value),d=[],e=30,f=!1;(!c||c.length>260)&&(f=!0,e-=100,d.push("空值或过长")),/###|投标文件的编制|备选投标方案|投标将被否决|投标人提供|投标有效期|电子交易系统|公共资源交易监督管理部门|中标候选|评标委员会|实质性内容作出响应|招标人有权核查/u.test(c)&&(f=!0,e-=100,d.push("大段条款或 Markdown 噪声")),bi.some(a=>a.key!==b.key&&a.aliases.some(a=>c.includes(a)))&&(e-=45,d.push("包含其他字段名,疑似字段串位")),bj(c)&&(e-=35,d.push("引用型弱值"));let g=bk(c,b);return e+=g.score,d.push(g.reason),g.rejected&&(f=!0),"evidence"===a.sourceType&&(e+=20,d.push("来源为证据原文")),a.sourceName&&/补疑|答疑|澄清|补充|更正|修改/u.test(a.sourceName)&&(e+=35,d.push("补疑/澄清类修正文件,权威最高")),a.sourceName&&/招标文件|招标公告|前附表|合同|需求书|正文/u.test(a.sourceName)&&(e+=15,d.push("来源文件可信")),"generated_markdown"===a.sourceType&&(e-=10),{...a,value:c,confidence:e,rejected:f,reasons:d}}function bm(a){return function(a,b=bi){let c=new Map;for(let d of b){let b=a.filter(a=>a.fieldKey===d.key).sort((a,b)=>b.confidence-a.confidence),e=b.find(a=>!a.rejected&&a.confidence>0);e&&c.set(d.key,{fieldKey:d.key,label:d.label,value:e.value,source:e.sourceName||e.sourceType,confidence:e.confidence,candidates:b,selectedReason:e.reasons.join(";")})}return c}([...function(a){let b=[];for(let c of a){let a=function(a){let b=`${a.fieldId||""}${a.key||""}${a.fieldName||""}`;return bi.find(c=>c.key===a.fieldId||c.aliases.some(a=>b.includes(a)))}(c);if(!a)continue;let d=(0,z.lG)(c.value);b.push(bl({fieldKey:a.key,label:a.label,value:d,sourceType:"structured_fact",sourceName:c.sourceFile||c.sourceRef?.sectionTitle||"structured_fact"},a))}return b}(a.facts),...function(a,b="generated_markdown"){let c=[];for(let d of a.split(/\r?\n/u)){if(!/^\|.*\|\s*$/u.test(d)||/^\|\s*:?-{3,}:?/u.test(d))continue;let a=d.trim().replace(/^\|/u,"").replace(/\|$/u,"").split("|").map(a=>a.replace(/\*\*/gu,"").trim());if(a.length<2)continue;let e="序号"===a[0]&&a.length>=3?a[1]:a[0],f="序号"===a[0]&&a.length>=3?a[2]:a[1],g="序号"===a[0]&&a.length>=4?a[3]:a[2],h=bi.find(a=>a.aliases.some(a=>e.includes(a))||a.label===e);!h||!f||/内容|参数|资料未明确|系统暂未确认|暂未从知识库确认/u.test(f)||c.push(bl({fieldKey:h.key,label:h.label,value:f,sourceType:"generated_markdown",sourceName:g||b},h))}return c}(a.markdown||"")])}function bn(a){return({user:100,addendum:96,contract:90,tender:85,boq:75,drawing:70,standard:60,evidence:55,structured_fact:50,projectGraph:40,generated_markdown:30,derived:20,unknown:10})[a]}function bo(a){let b=e.join(process.env.HOME||process.cwd(),".customize-agent","cache","document-workflow",(0,z.c6)(a||"default"));return P.mkdirSync(b,{recursive:!0}),b}function bp(a){let b=[];for(let c of["area","cost","duration"]){let d=new Set,e=[];for(let b of a){let a=(0,z.lG)(b.value),f=function(a,b){let c=`${a||""} ${b||""}`;return/补疑|答疑|澄清|补充|更正|修改/u.test(c)?95:/合同/u.test(c)?90:/招标文件|招标公告|前附表|投标人须知|需求书/u.test(c)?85:/清单|工程量|BOQ|编制说明/u.test(c)?75:/图纸|设计/u.test(c)?70:50}(b.sourceFile,b.roleId);for(let g of function(a,b){let c=[],d="area"===b?/总?建筑面积|建设规模/u:"cost"===b?/合同估算价|合同估算价格|投资估算|最高投标限价|招标控制价|工程总投资|总投资|工程造价/u:/计划工期|合同工期|总工期|施工周期/u,e=RegExp(`(?:${d.source})(?:[^0-9\\n]{0,14}?)(\\d{2,}(?:[.,]\\d+)?)\\s*${"area"===b?"(万?㎡|万?m\xb2|万?m2|万?平方米)":"cost"===b?"(万元|亿元|万?元)":"(日历天|天|个月|月)"}`,"giu");for(let f of a.matchAll(e)){let e,g=f[0].match(d)?.[0]||"",h=f[1].replace(/[,,]/gu,"").trim(),i=(f[2]||"").trim();if(g&&h){if("duration"!==b){let b=a.slice(Math.max(0,f.index-12),f.index).replace(/^.*[。;;\n,,]/u,"");if(/拟|计划|规划|目标|力争|预计|期望|远期|未来|设想|建议|预期|争取/u.test(b))continue}if("duration"===b)e=`${h}|${i}`;else{let a=+!!/万/u.test(i),b=Number(h)*(a?1e4:1);if(!Number.isFinite(b))continue;e=String(/亿元/u.test(i)?1e8*b:/万元/u.test(i)?1e4*b:b)}c.push({scope:g,value:h,unit:i,compareKey:e})}}return c}(a,c)){let a=`${b.sourceFile||""}|${g.scope}|${g.compareKey}`;d.has(a)||(d.add(a),e.push({...g,sourceFile:b.sourceFile,priority:f}))}}if(!(e.length<2))for(let[a,d]of e.reduce((a,b)=>{let c=b.scope.replace(/^总/u,""),d=a.get(c)||[];return d.push(b),a.set(c,d),a},new Map)){if(new Set(d.map(a=>a.compareKey)).size<2||new Set(d.map(a=>a.sourceFile).filter(Boolean)).size<2)continue;let e=Math.max(...d.map(a=>a.priority)),f=d.filter(a=>a.priority===e),g=new Set(f.map(a=>a.compareKey)),h=f[0];b.push({kind:c,scope:`${a}(${"area"===c?"面积":"cost"===c?"金额":"工期"}口径)`,values:[...new Map(d.map(a=>[`${a.value}${a.unit}|${a.sourceFile||""}`,{value:a.value,unit:a.unit,sourceFile:a.sourceFile,priority:a.priority}])).values()],resolution:1===g.size?`${h.value}${h.unit}`:void 0})}}return b}function bq(a){let b=new Map;for(let c of a){if(!c.resolution||b.has(c.kind))continue;let a=c.values.find(a=>`${a.value}${a.unit}`===c.resolution),d=a?a.value.replace(/[,,]/gu,""):"",e=c.values.filter(a=>`${a.value}${a.unit}`!==c.resolution).map(a=>({value:a.value.replace(/[,,]/gu,""),unit:a.unit}));d&&0!==e.length&&b.set(c.kind,{winnerNum:d,losers:e})}return b}function br(a,b){return b?.length?a.map(a=>{let c=function(a,b){let c=a;for(let{winnerNum:a,losers:d}of bq(b).values())for(let b of d)b.unit&&c.includes(`${b.value}${b.unit}`)?c=c.split(`${b.value}${b.unit}`).join(`${a}${b.unit}`):c.includes(b.value)&&(c=c.split(b.value).join(a));return c}(a.content,b);return c===a.content?a:{...a,content:c}}):a}function bs(a,b){let c=bq(b);if(0===c.size)return a;let d={area:/建设规模|工程规模|建筑面积|用地面积|占地面积|project_scale|scale/u,cost:/合同估算|投资估算|最高投标限价|招标控制价|总投资|工程造价|project_cost|cost|price|amount/u,duration:/计划工期|合同工期|总工期|施工周期|duration|schedule/u};return a.map(a=>{let b=[...c.keys()].find(b=>d[b].test(a.key)||d[b].test(a.value));if(!b)return a;let{winnerNum:e,losers:f}=c.get(b),g=a.value,h=!1;for(let a of f)a.unit&&g.includes(`${a.value}${a.unit}`)?(g=g.split(`${a.value}${a.unit}`).join(`${e}${a.unit}`),h=!0):g.includes(a.value)&&(g=g.split(a.value).join(e),h=!0);return h?{...a,value:g}:a})}var bt=c(32434),bu=c(22213);function bv(a){return a.some(a=>"error"!==a.level&&"blocker"!==a.severity&&/正文不足,未达到任务最小深度/u.test(a.message))}function bw(a,b){let c=a?.[b];return c&&c.length>0?c[0]:b}function bx(a,b){return 0>=(0,w.V7)(a.content)?"failed":"completed"}let by=["项目名称 项目编号 招标人 项目概况与招标范围 建设地点 建设规模 计划工期 质量标准 合同估算价","计划工期 合同工期 总工期 日历天","合同估算价 合同估算价格 投资估算 最高投标限价 招标控制价","质量标准 质量目标 合格","建设地点 建设规模 招标范围"];function bz(a){let b=X(a),c=0;return/项目名称|工程名称|招标项目名称|项目编号|招标项目编号|招标人|建设单位|发包人/u.test(b)&&(c+=4),/计划工期|合同工期|总工期|\d+(?:\.\d+)?\s*(?:日历天|天|个月|月|年)/u.test(b)&&(c+=6),/合同估算价|投资估算|最高投标限价|招标控制价|\d+(?:\.\d+)?\s*(?:万元|元)/u.test(b)&&(c+=5),/质量标准|质量目标|合格|优良/u.test(b)&&(c+=4),/建设地点|建设规模|招标范围|项目概况与招标范围/u.test(b)&&(c+=4),/工程量|清单|图纸|设计说明|施工范围|施工内容|材料|设备|工艺|验收|复试|检测/u.test(b)&&(c+=3),/投标人须知|保证金|付款|违约金|电子交易|公共资源|开标|评标|合同协议书/u.test(b)&&(c-=4),c}async function bA(a){let b=[],c=new Set(a.scopedFilePaths),d=await Promise.all(by.map(async b=>((0,z.Te)(a.signal),(await a.manager.search(a.projectRoot,b,{scope:"project",filters:{filePaths:a.scopedFilePaths},limit:10,weights:{keyword:.65,vector:.25,rewrite:.8,hybridBonus:.2},generationMode:!1})).results.filter(a=>c.has(a.filePath)&&bz(`${a.sectionTitle||""}
|
|
39
39
|
${a.content}`)>0).map(b=>({chapterId:"project-basic",filePath:b.filePath,score:Math.max(b.score,1)+bz(`${b.sectionTitle||""}
|
|
40
40
|
${b.content}`),content:b.content,roleId:a.fileRoleByPath.get(b.filePath),processingType:a.fileProcessingByPath.get(b.filePath),sectionTitle:b.sectionTitle,source:"pinned-evidence"})))));for(let c of(b.push(...d.flat()),a.scopedFilePaths)){(0,z.Te)(a.signal);let d=a.project.getFileDetail?.(c,{maxChunkContentChars:12e3});if(d?.chunks?.length)for(let e of d.chunks){let f=bz(`${e.sectionTitle||""}
|
|
41
41
|
${e.content||""}`);if(f<=0)continue;let g=d.file?.relativePath||c;b.push({chapterId:"project-basic",filePath:g,score:1+f,content:e.content,roleId:a.fileRoleByPath.get(g),processingType:a.fileProcessingByPath.get(g),sectionTitle:e.sectionTitle,source:"pinned-evidence"})}}let e=new Set;return b.sort((a,b)=>b.score-a.score).filter(a=>{let b=`${a.filePath}|${a.sectionTitle||""}|${X(a.content).slice(0,180)}`;return!e.has(b)&&(e.add(b),!0)}).slice(0,24)}function bB(a){return a.filter(a=>/项目名称|工程名称|项目编号|招标项目编号|招标人|建设单位|发包人|建设地点|建设规模|招标范围|计划工期|合同工期|周期要求|质量标准|合同估算|投资估算|最高投标限价|招标控制价/u.test(`${a.key||""}${a.fieldName||""}${a.fieldId||""}`))}function bC(a){return X(a).replace(/[。;;]$/u,"").trim()}function bD(a,b="",c=b){let d=function(a){let b=new Map;for(let c of a.split(/\r?\n/u)){if(!/^\|.*\|\s*$/u.test(c)||/^\|\s*:?-{3,}:?/u.test(c))continue;let a=c.trim().replace(/^\|/u,"").replace(/\|$/u,"").split("|").map(a=>a.replace(/\*\*/gu,"").trim());if(a.length<2)continue;let d="序号"===a[0]&&a.length>=3?a[1]:a[0],e="序号"===a[0]&&a.length>=3?a[2]:a[1],f="序号"===a[0]&&a.length>=4?a[3]:a[2],g=d.replace(/\/|:|:/gu,"").trim();if(!/项目名称|工程名称|项目编号|招标项目编号|招标人|项目业主|建设单位|发包人|建设地点|建设规模|施工范围|招标范围|计划工期|合同工期|质量标准|合同估算价|合同估算价格|投资估算|最高投标限价|招标控制价/u.test(g))continue;let h=/计划工期|合同工期/u.test(g)?"schedule_requirement":/质量标准/u.test(g)?"quality_standard":/合同估算价|合同估算价格|投资估算|最高投标限价|招标控制价/u.test(g)?"project_investment_estimate":/招标人|项目业主|建设单位|发包人/u.test(g)?"owner":/建设地点/u.test(g)?"project_location":/项目编号|招标项目编号/u.test(g)?"project_code":void 0;!(!e||/内容|参数|资料未明确|系统暂未从知识库确认|项目资料暂未明确/u.test(e))&&Z(h||"project_name",e)&&b.set(g,[bC(e),bC(f||"项目资料")||"项目资料"])}return b}(b),e=bm({facts:a,markdown:c}),f=a=>bC((0,z.lG)(a||"")).replace(/\|/gu,"").replace(/\bCOL\d+\b/gu,"").replace(/\s{2,}/gu," ").trim(),g=(a,b)=>{let g=e.get(a);if(g){let b=f(g.value);if(b&&Z(a,b))return[b,g.source||"项目资料"]}return function(a,b){for(let[c,d]of a.entries())if(b.some(a=>a.test(c)))return d}(d,b)||("project_name"===a?(()=>{let a=[/([\u4e00-\u9fa5A-Za-z0-9()()\-—_\s·]+?(?:施工总承包项目|一期项目|学生宿舍一期|学生宿舍项目))/u.exec(c)?.[1],/项目名称[::\s|]+([^|\n。;;]{6,80})/u.exec(c)?.[1]].map(f).filter(a=>a&&Z("project_name",a));return a[0]?[a[0],"项目资料"]:void 0})():void 0)||["",""]};return[["项目名称",...g("project_name",[/项目名称|工程名称|project_name/u])],["项目编号",...g("project_code",[/项目编号|招标项目编号|project_code/u])],["招标人",...g("owner",[/招标人|项目业主|建设单位|发包人|owner/u])],["建设地点",...g("project_location",[/建设地点|project_location/u])],["建设规模",...g("project_scale",[/建设规模|project_scale/u])],["计划工期",...g("schedule_requirement",[/计划工期|合同工期|周期要求|schedule_requirement/u])],["质量标准",...g("quality_standard",[/质量标准|quality_standard/u])],["合同估算价",...g("project_investment_estimate",[/合同估算|投资估算|最高投标限价|招标控制价|project_investment_estimate/u])]].filter(([,a])=>!!a).map(([a,b,c])=>[a,b,c||"项目资料"])}function bE(a,b="",c=b){return["**项目基本信息表**","","| 信息项 | 内容 |","|---|---|",...bD(a,b,c).map(a=>`| ${a[0]} | ${a[1]} |`)].join("\n")}function bF(a){return/^\s*\|?\s*:?-{3,}:?\s*(?:\|\s*:?-{3,}:?\s*)+\|?\s*$/u.test(a.trim())}function bG(a){let b=a.trim();if(!b||/^#{1,6}\s+/u.test(b)||bF(b))return!1;let c=(b.match(/\|/gu)||[]).length;return c>=2||c>=1&&/^\s*\|/u.test(b)||c>=1&&/\|\s*$/u.test(b)}function bH(a){return a.trim().replace(/^\|/u,"").replace(/\|$/u,"").trim().split("|").map(a=>a.trim())}function bI(a,b){let c=a.slice(0,b);for(;c.length<b;)c.push("");return`| ${c.join(" | ")} |`}function bJ(a){let b=a.replace(/\r?\n/gu,"\n").split("\n"),c=[];for(let a=0;a<b.length;){let d=b[a]||"",e=b[a+1]?.trim()===""?a+2:a+1,f=b[e]||"";if(bG(d)&&bF(f)){for(c.push(d),e!==a+1&&c.push(b[a+1]||""),c.push(f),a=e+1;a<b.length&&bG(b[a]||"");)c.push(b[a]||""),a+=1;continue}if(!bG(d)){c.push(d),a+=1;continue}let g=[],h=a;for(;h<b.length&&bG(b[h]||"");)g.push(b[h]||""),h+=1;let i=g.map(a=>bH(a)),j=i.map(a=>a.length),k=j[0]||0,l=/^(?:项目名称|工程名称|项目编号|招标人|建设单位|建设地点|建设规模|计划工期|质量标准|合同估算价|招标范围)$/u;if(g.length<2||k<2||j.some(a=>a!==k)||i.some(a=>l.test(a[0]||""))){c.push(...g),a=h;continue}for(let a of(c.length>0&&c[c.length-1]?.trim()&&c.push(""),c.push(bI(function(a){if(2===a)return["信息项","内容"];let b=["控制项目","执行要求","责任岗位","检查标准","形成资料","闭环要求","备注"];return Array.from({length:a},(a,c)=>b[c]||`补充说明${c+1}`)}(k),k)),c.push(bI(Array.from({length:k},()=>"---"),k)),g))c.push(bI(bH(a),k));(a=h)<b.length&&b[a]?.trim()&&c.push("")}return c.join("\n").replace(/\n{3,}/gu,"\n\n")}function bK(a){let b=a.replace(/\r?\n/gu,"\n").split("\n"),c=[],d=a=>a.trim().replace(/^\|/u,"").replace(/\|$/u,"").split("|").map(a=>a.trim()),e=a=>/^\s*\|.*\|\s*$/u.test(a),f=a=>/^\s*\|\s*:?-{3,}:?\s*(?:\|\s*:?-{3,}:?\s*)+\|?\s*$/u.test(a),g=a=>`| ${a.join(" | ")} |`;for(let a=0;a<b.length;){let h=b[a]||"",i=b[a+1]||"";if(!e(h)||!f(i)){c.push(h),a+=1;continue}let j=d(h),k=j.map((a,b)=>/^(?:资料来源|资料来源\/(?:说明|证明)|来源|证明)$/u.test(a)?b:-1).filter(a=>a>=0);if(0===k.length){c.push(h),a+=1;continue}let l=a=>a.filter((a,b)=>!k.includes(b));for(c.push(g(l(j))),c.push(g(l(d(i)).map(a=>a||"---"))),a+=2;a<b.length&&e(b[a]||"");)c.push(g(l(d(b[a]||"")))),a+=1}return c.join("\n").replace(/资料来源\/(?:说明|证明)/gu,"")}function bL(a){let b=[/^项目名称$/u,/^工程名称$/u,/^项目编号$/u,/^招标项目编号$/u,/^招标人$/u,/^项目业主$/u,/^建设单位$/u,/^发包人$/u,/^建设地点$/u,/^实施地点$/u,/^建设规模$/u,/^工程规模$/u,/^计划工期$/u,/^合同工期$/u,/^总工期$/u,/^质量标准$/u,/^质量目标$/u,/^合同估算价$/u,/^投资估算$/u,/^最高投标限价$/u,/^招标控制价$/u],c=a.replace(/\r?\n/gu,"\n").split("\n"),d=[],e=!1,f=a=>bH(a).map(a=>a.replace(/\*\*/gu,"").trim()),g=a=>b.some(b=>b.test(a)),h=a=>{let b=a.slice(2).map(f).filter(a=>a.length>=2).map(a=>a[0]||""),c=b.filter(g).length;return c>=3&&c>=Math.ceil(.45*b.length)};for(let a=0;a<c.length;){let b=c[a]||"",f=c[a+1]||"";if(/(?:\*\*[^\n]*项目基本信息表[^\n]*\*\*|####\s+[^\n]*项目基本信息表[^\n]*|###\s+[^\n]*项目基本信息表[^\n]*)/u.test(b)){let f=[b];for(a+=1;a<c.length&&!(bG(c[a]||"")&&bF(c[a+1]||""))&&""===(c[a]||"").trim();)f.push(c[a]||""),a+=1;if(a<c.length&&bG(c[a]||"")&&bF(c[a+1]||""))for(f.push(c[a]||"",c[a+1]||""),a+=2;a<c.length&&bG(c[a]||"");)f.push(c[a]||""),a+=1;e||(e=!0,d.push(...f));continue}if(/^###\s+(?:\d+\.\d+\s+)?(?:项目基本信息|工程概况|项目概况)\s*$/u.test(b)){let f=[b];for(a+=1;a<c.length&&!(bG(c[a]||"")&&bF(c[a+1]||""))&&!/^###\s+/u.test(c[a]||"");)f.push(c[a]||""),a+=1;if(a<c.length&&bG(c[a]||"")&&bF(c[a+1]||"")){let g=[c[a]||"",c[a+1]||""];for(a+=2;a<c.length&&bG(c[a]||"");)g.push(c[a]||""),a+=1;if(h(g)){if(e){let a=f.filter(a=>a.trim()&&!/^###\s+/u.test(a));a.length&&d.push(b,...a)}else e=!0,d.push(...f,...g);continue}d.push(...f,...g);continue}d.push(...f);continue}if(bG(b)&&bF(f)){let g=[b,f];for(a+=2;a<c.length&&bG(c[a]||"");)g.push(c[a]||""),a+=1;if(h(g)){e||(e=!0,d.push(...g));continue}d.push(...g);continue}d.push(b),a+=1}return d.join("\n").replace(/\n{3,}/gu,"\n\n").replace(/\n{1,2}\|\s*信息项\s*\|\s*内容\s*\|\s*\n+(?:该小节围绕[^\n]*\n+)+\|\s*:?-{3,}:?\s*\|\s*:?-{3,}:?\s*\|\s*/gu,"\n\n")}function bM(a,b){if(a=((a,b)=>{let c=a.split("\n"),d=[];for(let a=0;a<c.length;a+=1){let e=c[a]||"",f=/^(#{3,5})\s+(.+)$/u.exec(e.trim()),g=f?.[2]?.replace(/^\d+(?:\.\d+)*\s+/u,"").trim()||"";if(f&&b.some(a=>a.test(g))){for(a+=1;a<c.length&&!/^#{2,5}\s+/u.test((c[a]||"").trim());)a+=1;a-=1;continue}d.push(e)}return d.join("\n")})(a,[/^工程概况一览表$/u,/^招标文件?评分.*响应索引表$/u,/^招标评分项响应索引表$/u]).replace(/\*\*(?:工程概况一览表|招标文件?评分.*响应索引表|招标评分项响应索引表)\*\*[\s\S]*?(?=\n{2,}#{2,5}\s+|\n{2,}(?:[^|\n#]|$)|$)/gu,"").replace(/\n{3,}/gu,"\n\n"),!/项目基本信息|项目概况|工程概况|招标范围/u.test(a))return bL(bJ(bK(a)));if(!/\|\s*信息项\s*\|\s*内容\s*\|/u.test(a)&&bB(b).length>0){let c=/^(###\s+(?:\d+\.\d+\s+)?[^\n]*(?:项目概况|工程概况|项目基本信息|招标范围)[^\n]*\n)/mu.exec(a);if(c?.index||c?.index===0){let d=c.index+c[0].length,e=`${bE(b,"",a)}
|
|
@@ -94,4 +94,4 @@ ${a.slice(j).trimStart()}`:a}}let l=h(c);return l?`${a.trimEnd()}
|
|
|
94
94
|
|
|
95
95
|
${l}`:a},E=async b=>{var c;(0,z.Te)(a.signal);let e=b.message.replace(/\s*Writer 未完成.*$/u,"").replace(/\s*正文不足,未达到任务最小深度.*$/u,"").trim(),g=/Writer 未完成/u.test(b.message)?"缺失小节":"深度不足小节",h=bo.task.sections.find(a=>a.title===e),i=r.get(bw(m,e))||0,j=(c=h?.minChars,Math.max(c||0,i&&i>0?Math.ceil(i/.8):0,/项目主要施工内容/u.test(e)?2200:/主要分部分项工程施工方案|主要施工方法/u.test(e)?1800:/项目特点.*重点.*难点|重点.*难点.*分析/u.test(e)?1500:/原材料进场复试|见证取样|危大工程专项施工方案审批流程/u.test(e)?900:760)),k=/正文不足,未达到任务最小深度/u.test(b.message),l=aV(await bc(e).catch(()=>[]),aU);aX(l.length?l:au,aU,`repair:${d.id}:${e}`),b9.llm.lastError=void 0;let n=await D(()=>(0,am.X6)(b9,`agent-repairer-section:${d.id}:${e}`,()=>(0,ap.mF)({template:p,chapter:d,sectionTitle:e,evidence:l.length?l:au,missingFacts:ay,promptTexts:[f||bp,o].filter(Boolean).join("\n\n"),projectContext:bK,requirement:a.requirement,roleContext:aG,targetWords:j,maxWords:1.25*j,forbidDrawingImages:!1,factCoverageContext:bn,qualityFeedback:`Repairer 定向补写“${e}”。必须输出该小节正式正文并彻底删除 WRITER_MISSING_SECTION 标记。`,diagnostics:b9,signal:a.signal,allowLenientStructureGate:!0})));if(!n||n.includes("WRITER_MISSING_SECTION")){let b=b9.llm.lastError;b9.llm.lastError=void 0,n=await D(()=>(0,am.X6)(b9,`agent-repairer-section-retry:${d.id}:${e}`,()=>(0,ap.mF)({template:p,chapter:d,sectionTitle:e,evidence:l.length?l:au,missingFacts:ay,promptTexts:o,projectContext:bK,requirement:a.requirement,roleContext:aG,targetWords:j,maxWords:1.15*j,forbidDrawingImages:!1,factCoverageContext:bn,qualityFeedback:`第二次定向补写“${e}”:只写该小节正式正文,不写解释,不保留 WRITER_MISSING_SECTION。${b?`上次失败原因:${b},必须逐条修正。`:""}`,diagnostics:b9,signal:a.signal,allowLenientStructureGate:!0})))}if(n&&!n.includes("WRITER_MISSING_SECTION")){let a=/^#{3,4}\s+/u.test(n.trim())?n.trim():`### ${e}
|
|
96
96
|
|
|
97
|
-
${n.trim()}`,b=(0,w.V7)(a),c=Math.min(Math.max(Math.floor(.7*j),(0,ap.ap)(e)),Math.max(500,j)),d=!k||b>=c;return{sectionTitle:e,rewriteReason:g,normalizedSection:a,normalizedLength:b,enoughDepth:d,evidenceCount:l.length||au.length,repairTargetWords:j}}return{sectionTitle:e,rewriteReason:g,normalizedLength:0,enoughDepth:!1,evidenceCount:0,repairTargetWords:j,failed:n?"仍包含 WRITER_MISSING_SECTION":b9.llm.lastError||"空响应"}};for(let b=0;b<x.length;b+=3){let e=x.slice(b,b+3);for(let b of(await Promise.allSettled(e.map(a=>E(a))))){if("rejected"===b.status){if(a.signal?.aborted)throw b.reason;A.push(`失败:${b.reason instanceof Error?b.reason.message:"未知异常"}`);continue}if(!b.value)continue;if(b.value.failed){A.push(`失败:${b.value.sectionTitle}(${b.value.failed})`);continue}let d=bw(m,b.value.sectionTitle),e=b.value.enoughDepth?C(c.content,b.value.sectionTitle,b.value.normalizedSection||"",d):c.content,f=e!==c.content;f&&(c={...c,content:e}),A.push(f?`成功:${b.value.sectionTitle}(${b.value.normalizedLength}字,证据 ${b.value.evidenceCount} 条)`:`失败:${b.value.sectionTitle}(${b.value.enoughDepth?"未定位到原小节块":`补写不足 ${b.value.normalizedLength}/${b.value.repairTargetWords} 字`})`)}(0,al.fx)(I,(0,al.X5)({type:"llm_review",roleId:`agent-repairer-${d.id}`,status:"running",message:`${(0,t.GQ)(d.title)} 已补写深度不足小节 ${Math.min(b+3,x.length)}/${x.length}`,details:A},{subtitle:"Agent Repairer",order:s})),B(y)}let F={content:c.content,appliedCount:0};g.some(a=>!/Writer 未完成|正文不足,未达到任务最小深度/u.test(a.message))&&(F=await D(()=>(0,am.X6)(b9,`agent-repairer:${d.id}`,()=>(0,am.l8)({template:p,chapter:{id:d.id,title:d.title,content:c.content,evidence:au,missingFacts:ay,sections:ca},issues:g.map(a=>`${a.message};${a.suggestion||""}`),promptTexts:[f||bp,o].filter(Boolean).join("\n\n"),requirement:a.requirement,forbidDrawingImages:!1,diagnostics:b9,signal:a.signal})))),c={...c,content:bO(F.content||c.content,d)},e=cu({task:bo.task,draft:c,context:bu,plannedCoverage:m}),bu.reviewResults={...bu.reviewResults||{},[d.id]:e},i=(g=e.issues.filter(a=>"blocker"===a.severity||"error"===a.level)).some(a=>/Writer 未完成/u.test(a.message)),j=g.some(a=>/正文不足,未达到任务最小深度/u.test(a.message)),k=bv(e.issues),l=g.length>0&&(e.repairable||i||j)||k;let G=g.length>0;bu.nodes.push({id:`chapter-repairer-${d.id}`,type:"chapter_repairer",status:G?"failed":"completed",startedAt:Date.now(),completedAt:Date.now(),outputSummary:e.issues.length?`修复后仍有 ${e.issues.length} 个问题`:"定向修复通过",metrics:{supportedFacts:e.supportedFacts},issues:e.issues}),(0,bt.cN)(bu),(0,al.fx)(I,(0,al.X5)({type:"llm_review",roleId:`agent-reviewer-${d.id}`,status:G?"failed":"success",message:G?`${(0,t.GQ)(d.title)} Reviewer 第 ${q} 轮复审仍有 ${g.length} 个阻断问题${l&&q<n?",继续下一轮修复":""}`:`${(0,t.GQ)(d.title)} Reviewer 第 ${q} 轮复审通过`,details:e.issues.map(a=>a.message)},{subtitle:"Agent Reviewer",order:s-1})),(0,al.fx)(I,(0,al.X5)({type:"llm_review",roleId:`agent-repairer-${d.id}`,status:G?"failed":"success",message:e.issues.length?`${(0,t.GQ)(d.title)} 第 ${q} 轮定向修复后仍有 ${e.issues.length} 个问题`:`${(0,t.GQ)(d.title)} 定向修复通过`,details:[...A,...e.issues.map(a=>`剩余:${a.message}`)]},{subtitle:"Agent Repairer",order:s})),B(y)}if(e.issues.some(a=>"blocker"===a.severity||"error"===a.level)){let a=function(a){let b=a.filter(a=>/正文不足,未达到任务最小深度|Writer 未完成/u.test(a.message)).length,c=a.length-b;return Math.max(b>0?Math.ceil(b/2):0,+(c>0))}(g);a3.push(`${(0,t.GQ)(d.title)} Reviewer 未通过:${e.issues.map(a=>a.message).join(";")}(修复轮次预算 ${n} 轮已用尽,预估还需 ${a} 轮修复;问题已标记并转入门禁阻断,可在记录详情查看后决定继续修复或调整模板)`)}a5[h]=c,y=a5.filter(a=>!!a),B(y),b9.quality.blockingCount+=e.issues.filter(a=>"error"===a.level).length,b9.quality.importantCount+=e.issues.filter(a=>"warning"===a.level).length}catch(b){if(a.signal?.aborted)throw b;console.error(`[gen] chapter ${d.title} review failed:`,b),a3.push(`${(0,t.GQ)(d.title)}:审查修复阶段失败:${b instanceof Error?b.message:"未知错误"}`)}}}catch(c){if(a.signal?.aborted)throw c;console.error(`[gen] chapter ${d.title} failed:`,c);let b=`${d.title}:${c instanceof Error?c.message:"生成失败"}`;a3.push(b),g=(0,al.X5)({type:"chapter_generation",roleId:"chapter_generation",status:"failed",message:`${(0,t.GQ)(d.title)} 生成失败:${b}`},{subtitle:(0,t.GQ)(d.title),order:h}),a6[h]=g}g&&(I[j]=g),B(y)}))))f&&cy.push(cx.run(f))}await Promise.all(cy);let cC=a5.filter(a=>!!a);a4.push(...a6.filter(a=>!!a));let cD=[];if(b7.enableGlobalReview)try{let b=b7.globalReviewSamplingRate??1,c=b>=1||cC.length<=2?cC:cC.filter((a,c)=>c%Math.max(2,Math.round(1/b))==0),d=c.length,e=()=>D(()=>aH({template:p,chapters:c,chapterReviews:[],promptTexts:aL,requirement:a.requirement,projectContext:bK,diagnostics:b9,signal:a.signal})),f=await e();cD=f.issues;for(let b=0;b<2&&cD.length>0;b+=1){(0,al.fx)(I,(0,al.X5)({type:"llm_review",roleId:"global-consistency-repair",status:"running",message:`跨章一致性冲突第 ${b+1} 轮定向修复(${cD.length} 个冲突)`},{subtitle:"跨章一致性修复"})),B(cC);let c=0;for(let b of cC){let d=cD.filter(a=>a.includes(b.title));if(0===d.length)continue;let e=await D(()=>(0,am.X6)(b9,`global-consistency-repair:${b.id}`,()=>(0,am.l8)({template:p,chapter:{id:b.id,title:b.title,content:b.content,evidence:b.evidence||[],missingFacts:b.missingFacts||[],sections:b.sections},issues:d.map(a=>`${a};请严格按冲突描述中给出的正确口径统一本章全部数值,不得引入第三个数值。`),promptTexts:aL,requirement:a.requirement,forbidDrawingImages:!0,diagnostics:b9,signal:a.signal})));e.content&&e.content!==b.content&&(b.content=e.content,c+=1)}if(0===c)break;B(cC),cD=(await e()).issues,(0,al.fx)(I,(0,al.X5)({type:"llm_review",roleId:"global-consistency-review",status:cD.length>0?"failed":"success",message:cD.length>0?`跨章一致性复检:仍有 ${cD.length} 个冲突`:"跨章一致性复检通过"},{subtitle:"全局一致性审查"})),B(cC)}let g=d<cC.length?{...f.stage,message:`${f.stage.message||"全局一致性审查完成"}(抽检 ${d}/${cC.length} 章)`}:f.stage;(0,al.fx)(I,g),B(cC)}catch(b){if(a.signal?.aborted)throw b;console.error("[gen] global consistency review failed:",b)}let cE=(0,N.Xi)(bH,cC);if(cE.length>0)for(let b=0;b<2&&cE.length>0;b+=1){(0,al.fx)(I,(0,al.X5)({type:"llm_review",roleId:"table-execution-repair",status:"running",message:`表格执行率修复第 ${b+1} 轮(${cE.length} 个章节缺表)`},{subtitle:"表格执行率修复"})),B(cC);let c=0;for(let b of cE){let d=cC.find(a=>a.title===b.chapterTitle||b.chapterTitle.includes(a.title)||a.title.includes(b.chapterTitle));if(!d)continue;let e=await D(()=>(0,am.X6)(b9,`table-execution-repair:${d.id}`,()=>(0,am.l8)({template:p,chapter:{id:d.id,title:d.title,content:d.content,evidence:d.evidence||[],missingFacts:d.missingFacts||[],sections:d.sections},issues:[`计划表格缺失(计划 ${b.planned} 张,实际仅 ${b.actual} 张):${b.plans.map(a=>`${a.title}(表头:${a.fields.map(a=>a.name).join("、")})`).join(";")}。必须按表头字段补齐这些 markdown 表格并紧跟相关小节输出,不得删除已有正文;每个表格前须有 1~2 句引导叙述说明表格作用与关键结论,表格不能替代小节正文;deriveFromProject 字段基于项目工程量、总工期与工序流水按定额工效推导具体数值,projectFactOnly 字段不得编造。`],promptTexts:aL,requirement:a.requirement,forbidDrawingImages:!0,diagnostics:b9,signal:a.signal})));e.content&&e.content!==d.content&&(d.content=e.content,c+=1)}if(0===c)break;B(cC),cE=(0,N.Xi)(bH,cC),(0,al.fx)(I,(0,al.X5)({type:"llm_review",roleId:"table-execution-review",status:cE.length>0?"failed":"success",message:cE.length>0?`表格执行率复检:仍有 ${cE.length} 个章节缺表`:"表格执行率复检通过"},{subtitle:"表格执行率核验"}))}return ch({chapterDrafts:cC,chapterDraftsByOrder:a5,chapterGenerationStagesByOrder:a6,chapterGenerationStages:a4,effectiveChapters:bH,template:p,allEvidence:a_,projectMaterialScope:aU,progressStages:I,documentSpec:as,projectMaterialProfile:R,projectMaterialSummary:aq,domainProfile:at,documentBudget:b4,promptTexts:aJ,reviewPromptTexts:aL,input:a,generationStrategy:b7,generationDiagnostics:b9,promptBindings:K,promptDocumentRules:aF,projectUnderstanding:W,projectContext:bK,projectRoot:c,projectId:o,readiness:au,factExtractionPromptTexts:aK,hasExplicitOutline:ac,missingItems:a2,retrievalCoverageReports:a0,failedChapterMessages:a3,webResearchReport:a1,indexHealth:aR,promptPlan:J,globalConsistencyIssues:cD,scopeConflicts:bz.scopeConflicts,writingTaskBrief:b1,agentWorkflow:bu,emitProgress:B,withProgressHeartbeat:D})}},79227:(a,b,c)=>{c.d(b,{C:()=>f,previewGenerationBudgetForTemplate:()=>g});var d=c(34680),e=c(95734);function f(a){let b=Math.max(1,a.chapters.length),c=a.targetWords>0?Math.round(a.targetWords/b):1200,d=a.strategy,f=[],g=a.materialFileCount<4&&a.evidenceCount<6,h=Math.max(1,Math.min(b,(Number.isFinite(a.configuredChapterConcurrency)&&a.configuredChapterConcurrency>0?Math.floor(a.configuredChapterConcurrency):void 0)??b)),i=(0,e.Qf)(a.targetWords),j="fast"===d.mode?1:Math.max(1,Math.min(i>=32?5:i>=24?4:i>=16?3:2,b)),{floorChars:k,ceilingChars:l}=c>=6e3?{floorChars:7e3,ceilingChars:26e3}:c>=3e3?{floorChars:6e3,ceilingChars:18e3}:{floorChars:4e3,ceilingChars:12e3},m=d.repairRoundBudget??3;return"strict"===d.mode&&f.push("strict:风险领域关键词命中(专项/安全/质量/验收/合同/合规等)"),a.targetWords>=4e4&&f.push("strict:目标篇幅超长(≥4 万字)"),g&&f.push("strict:资料稀疏(资料包文件 <4 且可用证据 <6 条)"),"fast"===d.mode&&f.push("fast:小文档(≤6000 字且 ≤4 章)全局审查降级为 35% 抽检"),"longform"===d.mode&&f.push("longform:长文档(≥3 万字或 ≥8 章)"),"balanced"===d.mode&&f.push("balanced:常规篇幅文档,标准审查深度"),f.push(`全章节并行生成(${h}/${b} 章同批),审查流水线 ${j} 路,全局 LLM 并发档位 ${i},每章证据预算 ${Math.round(k/1e3)}k-${Math.round(l/1e3)}k 字符,修复轮次预算 ${m}`),{strategy:d,chapterConcurrency:h,reviewConcurrency:j,llmConcurrency:i,evidenceFloorChars:k,evidenceCeilingChars:l,repairRoundBudget:m,triggers:f}}function g(a){let b=Math.max(1,a.chapters.length),c=Math.max(0,Math.round(a.targetWords??0)),e=(0,d.JP)({template:a.template,targetWords:c,requirement:a.requirement,materialFileCount:a.materialFileCount,evidenceCount:a.evidenceCount}),g=f({template:a.template,chapters:a.chapters,targetWords:c,requirement:a.requirement,materialFileCount:a.materialFileCount,evidenceCount:a.evidenceCount,hasVeryLargeExplicitChapter:a.hasVeryLargeExplicitChapter??!1,configuredChapterConcurrency:a.configuredChapterConcurrency??0,strategy:e});return{mode:e.mode,enableGlobalReview:e.enableGlobalReview,globalReviewSamplingRate:e.globalReviewSamplingRate??1,repairRoundBudget:g.repairRoundBudget,chapterConcurrency:g.chapterConcurrency,reviewConcurrency:g.reviewConcurrency,evidenceFloorChars:g.evidenceFloorChars,evidenceCeilingChars:g.evidenceCeilingChars,targetWords:c,chapterCount:b,triggers:g.triggers}}},87942:(a,b,c)=>{c.d(b,{x:()=>d});let d={version:"professional-document-workflow-v3",rules:["complete-local-knowledge-assumption","knowledge-coverage-recovery","fact-trace-placement","chapter-coverage-gate","structured-quality-report","post-repair-verification"]}}};
|
|
97
|
+
${n.trim()}`,b=(0,w.V7)(a),c=Math.min(Math.max(Math.floor(.7*j),(0,ap.ap)(e)),Math.max(500,j)),d=!k||b>=c;return{sectionTitle:e,rewriteReason:g,normalizedSection:a,normalizedLength:b,enoughDepth:d,evidenceCount:l.length||au.length,repairTargetWords:j}}return{sectionTitle:e,rewriteReason:g,normalizedLength:0,enoughDepth:!1,evidenceCount:0,repairTargetWords:j,failed:n?"仍包含 WRITER_MISSING_SECTION":b9.llm.lastError||"空响应"}};for(let b=0;b<x.length;b+=3){let e=x.slice(b,b+3);for(let b of(await Promise.allSettled(e.map(a=>E(a))))){if("rejected"===b.status){if(a.signal?.aborted)throw b.reason;A.push(`失败:${b.reason instanceof Error?b.reason.message:"未知异常"}`);continue}if(!b.value)continue;if(b.value.failed){A.push(`失败:${b.value.sectionTitle}(${b.value.failed})`);continue}let d=bw(m,b.value.sectionTitle),e=b.value.enoughDepth?C(c.content,b.value.sectionTitle,b.value.normalizedSection||"",d):c.content,f=e!==c.content;f&&(c={...c,content:e}),A.push(f?`成功:${b.value.sectionTitle}(${b.value.normalizedLength}字,证据 ${b.value.evidenceCount} 条)`:`失败:${b.value.sectionTitle}(${b.value.enoughDepth?"未定位到原小节块":`补写不足 ${b.value.normalizedLength}/${b.value.repairTargetWords} 字`})`)}(0,al.fx)(I,(0,al.X5)({type:"llm_review",roleId:`agent-repairer-${d.id}`,status:"running",message:`${(0,t.GQ)(d.title)} 已补写深度不足小节 ${Math.min(b+3,x.length)}/${x.length}`,details:A},{subtitle:"Agent Repairer",order:s})),B(y)}let F={content:c.content,appliedCount:0};g.some(a=>!/Writer 未完成|正文不足,未达到任务最小深度/u.test(a.message))&&(F=await D(()=>(0,am.X6)(b9,`agent-repairer:${d.id}`,()=>(0,am.l8)({template:p,chapter:{id:d.id,title:d.title,content:c.content,evidence:au,missingFacts:ay,sections:ca},issues:g.map(a=>`${a.message};${a.suggestion||""}`),promptTexts:[f||bp,o].filter(Boolean).join("\n\n"),requirement:a.requirement,forbidDrawingImages:!1,diagnostics:b9,signal:a.signal})))),c={...c,content:bO(F.content||c.content,d)},e=cu({task:bo.task,draft:c,context:bu,plannedCoverage:m}),bu.reviewResults={...bu.reviewResults||{},[d.id]:e},i=(g=e.issues.filter(a=>"blocker"===a.severity||"error"===a.level)).some(a=>/Writer 未完成/u.test(a.message)),j=g.some(a=>/正文不足,未达到任务最小深度/u.test(a.message)),k=bv(e.issues),l=g.length>0&&(e.repairable||i||j)||k;let G=g.length>0;bu.nodes.push({id:`chapter-repairer-${d.id}`,type:"chapter_repairer",status:G?"failed":"completed",startedAt:Date.now(),completedAt:Date.now(),outputSummary:e.issues.length?`修复后仍有 ${e.issues.length} 个问题`:"定向修复通过",metrics:{supportedFacts:e.supportedFacts},issues:e.issues}),(0,bt.cN)(bu),(0,al.fx)(I,(0,al.X5)({type:"llm_review",roleId:`agent-reviewer-${d.id}`,status:G?"failed":"success",message:G?`${(0,t.GQ)(d.title)} Reviewer 第 ${q} 轮复审仍有 ${g.length} 个阻断问题${l&&q<n?",继续下一轮修复":""}`:`${(0,t.GQ)(d.title)} Reviewer 第 ${q} 轮复审通过`,details:e.issues.map(a=>a.message)},{subtitle:"Agent Reviewer",order:s-1})),(0,al.fx)(I,(0,al.X5)({type:"llm_review",roleId:`agent-repairer-${d.id}`,status:G?"failed":"success",message:e.issues.length?`${(0,t.GQ)(d.title)} 第 ${q} 轮定向修复后仍有 ${e.issues.length} 个问题`:`${(0,t.GQ)(d.title)} 定向修复通过`,details:[...A,...e.issues.map(a=>`剩余:${a.message}`)]},{subtitle:"Agent Repairer",order:s})),B(y)}if(e.issues.some(a=>"blocker"===a.severity||"error"===a.level)){let a=function(a){let b=a.filter(a=>/正文不足,未达到任务最小深度|Writer 未完成/u.test(a.message)).length,c=a.length-b;return Math.max(b>0?Math.ceil(b/2):0,+(c>0))}(g);a3.push(`${(0,t.GQ)(d.title)} Reviewer 未通过:${e.issues.map(a=>a.message).join(";")}(修复轮次预算 ${n} 轮已用尽,预估还需 ${a} 轮修复;问题已标记并转入门禁阻断,可在记录详情查看后决定继续修复或调整模板)`)}a5[h]=c,y=a5.filter(a=>!!a),B(y),b9.quality.blockingCount+=e.issues.filter(a=>"error"===a.level).length,b9.quality.importantCount+=e.issues.filter(a=>"warning"===a.level).length}catch(b){if(a.signal?.aborted)throw b;console.error(`[gen] chapter ${d.title} review failed:`,b),a3.push(`${(0,t.GQ)(d.title)}:审查修复阶段失败:${b instanceof Error?b.message:"未知错误"}`)}}}catch(c){if(a.signal?.aborted)throw c;console.error(`[gen] chapter ${d.title} failed:`,c);let b=`${d.title}:${c instanceof Error?c.message:"生成失败"}`;a3.push(b),g=(0,al.X5)({type:"chapter_generation",roleId:"chapter_generation",status:"failed",message:`${(0,t.GQ)(d.title)} 生成失败:${b}`},{subtitle:(0,t.GQ)(d.title),order:h}),a6[h]=g}g&&(I[j]=g),B(y)}))))f&&cy.push(cx.run(f))}await Promise.all(cy);let cC=a5.filter(a=>!!a);a4.push(...a6.filter(a=>!!a));let cD=[];if(b7.enableGlobalReview)try{let b=b7.globalReviewSamplingRate??1,c=b>=1||cC.length<=2?cC:cC.filter((a,c)=>c%Math.max(2,Math.round(1/b))==0),d=c.length,e=()=>D(()=>aH({template:p,chapters:c,chapterReviews:[],promptTexts:aL,requirement:a.requirement,projectContext:bK,diagnostics:b9,signal:a.signal})),f=()=>{let a=cC.map(a=>a.content).join("\n\n");return[...(0,x.qm)(a,bq,bz.scopeConflicts).filter(a=>/跨章一致性冲突/u.test(a.message)),...(0,x.hr)(a,bq).filter(a=>"error"===a.level)].map(a=>`${a.message};${a.suggestion||""}`)},g=await e();cD=[...new Set([...g.issues,...f()])];for(let b=0;b<2&&cD.length>0;b+=1){(0,al.fx)(I,(0,al.X5)({type:"llm_review",roleId:"global-consistency-repair",status:"running",message:`跨章一致性冲突第 ${b+1} 轮定向修复(${cD.length} 个冲突)`},{subtitle:"跨章一致性修复"})),B(cC);let c=0;for(let b of cC){let d=b.content.replace(/\s+/gu,"").replace(/平方米|m²|m2/giu,"㎡"),e=cD.filter(a=>{if(a.includes(b.title)||(a.match(/不一致的表述\s*([^。\n]+)/u)?.[1]||"").split(/[、,,]/u).some(a=>{let b=a.trim().replace(/\s+/gu,"").replace(/平方米|m²|m2/giu,"㎡");return b.length>=3&&d.includes(b)}))return!0;let c=a.match(/正文([^配比厚度\s]{1,6}?)(?:配比|厚度)/u)?.[1];return!!(c&&b.content.includes(c))});if(0===e.length)continue;let f=await D(()=>(0,am.X6)(b9,`global-consistency-repair:${b.id}`,()=>(0,am.l8)({template:p,chapter:{id:b.id,title:b.title,content:b.content,evidence:b.evidence||[],missingFacts:b.missingFacts||[],sections:b.sections},issues:e.map(a=>`${a};请严格按冲突描述中给出的资料口径修正本章对应表述,不得引入新的数值;与资料口径一致的既有表述(含分层/子项数值)不得改动。`),promptTexts:aL,requirement:a.requirement,forbidDrawingImages:!0,diagnostics:b9,signal:a.signal})));f.content&&f.content!==b.content&&(b.content=f.content,c+=1)}if(0===c)break;B(cC);let d=await e();cD=[...new Set([...d.issues,...f()])],(0,al.fx)(I,(0,al.X5)({type:"llm_review",roleId:"global-consistency-review",status:cD.length>0?"failed":"success",message:cD.length>0?`跨章一致性复检:仍有 ${cD.length} 个冲突`:"跨章一致性复检通过"},{subtitle:"全局一致性审查"})),B(cC)}let h=d<cC.length?{...g.stage,message:`${g.stage.message||"全局一致性审查完成"}(抽检 ${d}/${cC.length} 章)`}:g.stage;(0,al.fx)(I,h),B(cC)}catch(b){if(a.signal?.aborted)throw b;console.error("[gen] global consistency review failed:",b)}let cE=(0,N.Xi)(bH,cC);if(cE.length>0)for(let b=0;b<2&&cE.length>0;b+=1){(0,al.fx)(I,(0,al.X5)({type:"llm_review",roleId:"table-execution-repair",status:"running",message:`表格执行率修复第 ${b+1} 轮(${cE.length} 个章节缺表)`},{subtitle:"表格执行率修复"})),B(cC);let c=0;for(let b of cE){let d=cC.find(a=>a.title===b.chapterTitle||b.chapterTitle.includes(a.title)||a.title.includes(b.chapterTitle));if(!d)continue;let e=await D(()=>(0,am.X6)(b9,`table-execution-repair:${d.id}`,()=>(0,am.l8)({template:p,chapter:{id:d.id,title:d.title,content:d.content,evidence:d.evidence||[],missingFacts:d.missingFacts||[],sections:d.sections},issues:[`计划表格缺失(计划 ${b.planned} 张,实际仅 ${b.actual} 张):${b.plans.map(a=>`${a.title}(表头:${a.fields.map(a=>a.name).join("、")})`).join(";")}。必须按表头字段补齐这些 markdown 表格并紧跟相关小节输出,不得删除已有正文;每个表格前须有 1~2 句引导叙述说明表格作用与关键结论,表格不能替代小节正文;deriveFromProject 字段基于项目工程量、总工期与工序流水按定额工效推导具体数值,projectFactOnly 字段不得编造。`],promptTexts:aL,requirement:a.requirement,forbidDrawingImages:!0,diagnostics:b9,signal:a.signal})));e.content&&e.content!==d.content&&(d.content=e.content,c+=1)}if(0===c)break;B(cC),cE=(0,N.Xi)(bH,cC),(0,al.fx)(I,(0,al.X5)({type:"llm_review",roleId:"table-execution-review",status:cE.length>0?"failed":"success",message:cE.length>0?`表格执行率复检:仍有 ${cE.length} 个章节缺表`:"表格执行率复检通过"},{subtitle:"表格执行率核验"}))}return ch({chapterDrafts:cC,chapterDraftsByOrder:a5,chapterGenerationStagesByOrder:a6,chapterGenerationStages:a4,effectiveChapters:bH,template:p,allEvidence:a_,projectMaterialScope:aU,progressStages:I,documentSpec:as,projectMaterialProfile:R,projectMaterialSummary:aq,domainProfile:at,documentBudget:b4,promptTexts:aJ,reviewPromptTexts:aL,input:a,generationStrategy:b7,generationDiagnostics:b9,promptBindings:K,promptDocumentRules:aF,projectUnderstanding:W,projectContext:bK,projectRoot:c,projectId:o,readiness:au,factExtractionPromptTexts:aK,hasExplicitOutline:ac,missingItems:a2,retrievalCoverageReports:a0,failedChapterMessages:a3,webResearchReport:a1,indexHealth:aR,promptPlan:J,globalConsistencyIssues:cD,scopeConflicts:bz.scopeConflicts,writingTaskBrief:b1,agentWorkflow:bu,emitProgress:B,withProgressHeartbeat:D})}},79227:(a,b,c)=>{c.d(b,{C:()=>f,previewGenerationBudgetForTemplate:()=>g});var d=c(34680),e=c(95734);function f(a){let b=Math.max(1,a.chapters.length),c=a.targetWords>0?Math.round(a.targetWords/b):1200,d=a.strategy,f=[],g=a.materialFileCount<4&&a.evidenceCount<6,h=Math.max(1,Math.min(b,(Number.isFinite(a.configuredChapterConcurrency)&&a.configuredChapterConcurrency>0?Math.floor(a.configuredChapterConcurrency):void 0)??b)),i=(0,e.Qf)(a.targetWords),j="fast"===d.mode?1:Math.max(1,Math.min(i>=32?5:i>=24?4:i>=16?3:2,b)),{floorChars:k,ceilingChars:l}=c>=6e3?{floorChars:7e3,ceilingChars:26e3}:c>=3e3?{floorChars:6e3,ceilingChars:18e3}:{floorChars:4e3,ceilingChars:12e3},m=d.repairRoundBudget??3;return"strict"===d.mode&&f.push("strict:风险领域关键词命中(专项/安全/质量/验收/合同/合规等)"),a.targetWords>=4e4&&f.push("strict:目标篇幅超长(≥4 万字)"),g&&f.push("strict:资料稀疏(资料包文件 <4 且可用证据 <6 条)"),"fast"===d.mode&&f.push("fast:小文档(≤6000 字且 ≤4 章)全局审查降级为 35% 抽检"),"longform"===d.mode&&f.push("longform:长文档(≥3 万字或 ≥8 章)"),"balanced"===d.mode&&f.push("balanced:常规篇幅文档,标准审查深度"),f.push(`全章节并行生成(${h}/${b} 章同批),审查流水线 ${j} 路,全局 LLM 并发档位 ${i},每章证据预算 ${Math.round(k/1e3)}k-${Math.round(l/1e3)}k 字符,修复轮次预算 ${m}`),{strategy:d,chapterConcurrency:h,reviewConcurrency:j,llmConcurrency:i,evidenceFloorChars:k,evidenceCeilingChars:l,repairRoundBudget:m,triggers:f}}function g(a){let b=Math.max(1,a.chapters.length),c=Math.max(0,Math.round(a.targetWords??0)),e=(0,d.JP)({template:a.template,targetWords:c,requirement:a.requirement,materialFileCount:a.materialFileCount,evidenceCount:a.evidenceCount}),g=f({template:a.template,chapters:a.chapters,targetWords:c,requirement:a.requirement,materialFileCount:a.materialFileCount,evidenceCount:a.evidenceCount,hasVeryLargeExplicitChapter:a.hasVeryLargeExplicitChapter??!1,configuredChapterConcurrency:a.configuredChapterConcurrency??0,strategy:e});return{mode:e.mode,enableGlobalReview:e.enableGlobalReview,globalReviewSamplingRate:e.globalReviewSamplingRate??1,repairRoundBudget:g.repairRoundBudget,chapterConcurrency:g.chapterConcurrency,reviewConcurrency:g.reviewConcurrency,evidenceFloorChars:g.evidenceFloorChars,evidenceCeilingChars:g.evidenceCeilingChars,targetWords:c,chapterCount:b,triggers:g.triggers}}},87942:(a,b,c)=>{c.d(b,{x:()=>d});let d={version:"professional-document-workflow-v3",rules:["complete-local-knowledge-assumption","knowledge-coverage-recovery","fact-trace-placement","chapter-coverage-gate","structured-quality-report","post-repair-verification"]}}};
|