@customize-agent/server 4.2.3 → 4.2.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.
Files changed (46) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +2 -2
  3. package/.next/prerender-manifest.json +3 -3
  4. package/.next/server/chunks/1936.js +3 -3
  5. package/.next/server/chunks/5284.js +96 -7
  6. package/.next/server/chunks/6071.js +69 -0
  7. package/.next/server/chunks/8661.js +1 -1
  8. package/.next/server/chunks/9301.js +3 -3
  9. package/.next/server/pages/404.html +1 -1
  10. package/.next/server/pages/500.html +1 -1
  11. package/.next/server/pages/_error.js +1 -1
  12. package/.next/server/pages/api/assets/generated/preview.js +1 -1
  13. package/.next/server/pages/api/assets/generated/preview.js.nft.json +1 -1
  14. package/.next/server/pages/api/assets/generated.js +1 -1
  15. package/.next/server/pages/api/assets/generated.js.nft.json +1 -1
  16. package/.next/server/pages/api/documents/chapter/regenerate.js +1 -1
  17. package/.next/server/pages/api/documents/chapter/regenerate.js.nft.json +1 -1
  18. package/.next/server/pages/api/documents/export.js +1 -1
  19. package/.next/server/pages/api/documents/export.js.nft.json +1 -1
  20. package/.next/server/pages/api/documents/generate.js +2 -2
  21. package/.next/server/pages/api/documents/generate.js.nft.json +1 -1
  22. package/.next/server/pages/api/documents/generated/[id].js +1 -1
  23. package/.next/server/pages/api/documents/generated/[id].js.nft.json +1 -1
  24. package/.next/server/pages/api/documents/generated.js +1 -1
  25. package/.next/server/pages/api/documents/generated.js.nft.json +1 -1
  26. package/.next/server/pages/api/documents/templates.js +1 -1
  27. package/.next/server/pages/api/documents/templates.js.nft.json +1 -1
  28. package/.next/server/pages/asset-library.html +1 -1
  29. package/.next/server/pages/document-roles.html +1 -1
  30. package/.next/server/pages/documents.html +1 -1
  31. package/.next/server/pages/guide.html +1 -1
  32. package/.next/server/pages/index.html +1 -1
  33. package/.next/server/pages/knowledge/file-detail.html +1 -1
  34. package/.next/server/pages/knowledge/files.html +1 -1
  35. package/.next/server/pages/knowledge/manage.html +1 -1
  36. package/.next/server/pages/knowledge.html +1 -1
  37. package/.next/server/pages/models.html +1 -1
  38. package/.next/server/pages/overview.html +1 -1
  39. package/.next/server/pages/prompt.html +1 -1
  40. package/.next/server/pages/settings.html +1 -1
  41. package/.next/server/pages/system/logs.html +1 -1
  42. package/.next/server/pages-manifest.json +32 -32
  43. package/package.json +1 -1
  44. package/.next/server/chunks/8325.js +0 -155
  45. /package/.next/static/{NlYmM-VSPiEiIrPNdk1GP → mvAsRk5Gy-Q_z_e6HUGRA}/_buildManifest.js +0 -0
  46. /package/.next/static/{NlYmM-VSPiEiIrPNdk1GP → mvAsRk5Gy-Q_z_e6HUGRA}/_ssgManifest.js +0 -0
@@ -1,155 +0,0 @@
1
- "use strict";exports.id=8325,exports.ids=[8325],exports.modules={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$:()=>W,N1:()=>Q,NS:()=>C,S2:()=>R,ST:()=>M,Ty:()=>u,bM:()=>T,f8:()=>x,gN:()=>v,i0:()=>O,iC:()=>s,ji:()=>P,k0:()=>A,kQ:()=>V,mR:()=>U,qK:()=>H,qm:()=>K,vY:()=>N,xX:()=>L,yd:()=>S,yw:()=>G});var d=c(8753),e=c(74329),f=c(78217),g=c(11248),h=c(70208),i=c(91977),j=c(52511),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)&&(!!/项目特点、重点、难点分析 正文不足|项目主要施工内容 正文不足/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),g=d?[]:f.filter(a=>"error"===a.level&&p(a)),h=[{key:"no_errors",label:"无阻断级校验错误",passed:0===g.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))}];return{passed:0===g.length,blockingIssues:g,checklist:h}}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),e=d.indexOf("\n\n");c.push(e>=0?d.slice(0,e):d.slice(0,800))}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);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:"missing_planned_section"===a.reason?"warning":"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){let c=[],d=b.schedule.map(I).find(a=>/\d+\s*(?:日历天|天|个月|月)|计划工期|合同工期/u.test(a)),e=b.quality.map(I).find(a=>/质量|合格|优良/u.test(a));if(d){let b=J(d)[0],e=J(a),f=b?e.filter(a=>a!==b&&/日历天/u.test(a)):[];b&&f.length>=2&&c.push({level:"warning",message:`跨章一致性冲突:正文出现与资料工期不一致的表述 ${f.slice(0,6).join("、")}`,suggestion:`请统一使用资料中的工期口径:${d}`})}return e&&!/质量标准|质量目标|合格|优良/u.test(a)&&c.push({level:"error",message:"跨章一致性缺口:正文未稳定体现资料中的质量目标",suggestion:`请在工程概况、质量保证和验收相关章节统一体现:${e}`}),c}function L(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 M(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 N(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=[];for(let b of(0,g.zn)(a)){let c=(0,g.K3)(b),d=a.indexOf(b),f=d>=0?a.slice(Math.max(0,d-36),Math.min(a.length,d+b.length+36)):a,j=function(a,b){let c=`${a} ${b}`;return/三检制|三级|5S|24\s*小时|每日|每周|每月|一次|两次|责任制|制度/u.test(c)?"soft":/总工期|计划工期|合同工期|日历天/u.test(c)||/最高投标限价|招标控制价|合同估算价|投资估算|报价|金额|万元|元/u.test(c)||/(?:工程量|清单|建设规模|建筑面积|长度|材料|设备|规格|型号).{0,24}(?:m²|㎡|m3|m³|米|吨|套|台|个|项|%)/u.test(c)?"hard":/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/u.test(c)?"soft":/标准|规范|编号/u.test(c)?"hard":"soft"}(b,f);"hard"!==j||e.includes(c)||h.push(b),"soft"!==j||e.includes(c)||i.push(b)}let j=[...new Set(h)],l=[...new Set(i)];return j.length>=2&&d.push({level:"warning",message:`生成后事实反查提示:正文出现资料事实主表中未找到的关键数字 ${j.slice(0,8).join("、")}`,suggestion:"建议复核这些数字是否来自管理制度、规范要求或资料事实;如无依据,改为定性管理要求。"}),l.length>=6&&d.push({level:"warning",message:`生成后事实反查提示:正文出现较多未在资料事实主表中反查到的管理数字 ${l.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 O(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 P(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 Q(a,b){let c=[],d=a.replace(e.ug,""),f=function(a){let b=new Set;for(let c of a.preciseFacts){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();/万元|元|报价|单价|合价|综合单价|预留金|税率|增值税|利润|结算/u.test(`${c} ${d}`)||/OCR|识别错误|乱码|无法确认|疑似|不确定|语义断裂|页码|目录/u.test(d)||/^\d+$/.test(c)&&10>Number(c)||b.add(c)}}return[...b]}(b),g=function(a,b){let c=0;for(let d of a)b.includes(d.replace(e.ug,""))&&(c+=1);return c}(f,d);return f.length>=e.mu&&g/f.length<e.tg&&c.push({level:"warning",message:`可靠精确参数使用不足:${g}/${f.length}`,suggestion:"请将资料中可靠的规格、参数、数量、时间、比例和标准编号写入对应章节;商务金额、单价、税率、预留金不得写入正文。"}),b.bills.length>0&&!e.pP.test(a)&&c.push({level:"error",message:"正文未体现结构化数据资料",suggestion:"请从表格、列表或明细中提取对象、单位、数量、规格和关键参数补入对应章节。"}),b.drawings.length>0&&!e._U.test(a)&&c.push({level:"error",message:"正文未体现设计/方案/说明类资料",suggestion:"请从设计、方案或说明资料中提取对象、流程、节点、做法、配置、规则和标准要求。"}),c}function R(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 S(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 T(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 U(a,b){let c=`${b.name} ${b.category} ${b.outputTitle} ${b.description}`,f=[];for(let a of(0,d.V)().autoSpecGates)(function(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})(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 V(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 W(a,b){let c=function(a){let b="";for(let c of(0,j.dU)(a))c.content&&(b+=`${c.content}
2
-
3
- `);return b}(b);if(!c.trim())return[];let d=a.replace(e.ug," ");for(let a of c.matchAll(e.QX)){let b=(a[1]||"").replace(e.ug," ").trim();if(b&&d.includes(b))return[{level:"error",message:"正文疑似包含提示词示例内容",suggestion:"请删除提示词样例数据,仅保留基于当前绑定材料生成的正文。"}]}return[]}},38325:(a,b,c)=>{c.d(b,{h0x:()=>d.h0,bVF:()=>d.bV,OXS:()=>dv,QJx:()=>d.QJ,jGg:()=>d.jG,R1O:()=>dw,Bhi:()=>d.Bh,xmB:()=>d.xm,J5_:()=>d.J5});var d=c(52511),e=c(76760),f=c(19898),g=c(44533),h=c(29281),i=c(25840),j=c(6444),k=c(85441);let l={id:"default_general_document",name:"通用文档",factFields:[{id:"document_identity",name:"对象名称",aliases:["项目名称","工程名称","文档名称","任务名称","招标项目名称","建设项目名称"],category:"identity",cardinality:"single",derivationPolicy:"source_only",usagePolicy:"must_use",confidencePolicy:{minForGeneration:.75,minForValidation:.85,allowPathOnly:!1},conflictPolicy:"strict"},{id:"schedule_requirement",name:"周期要求",aliases:["计划工期","工期","周期要求","进度节点要求","开工日期","竣工日期"],category:"schedule",cardinality:"single",derivationPolicy:"source_only",usagePolicy:"must_use",confidencePolicy:{minForGeneration:.7,minForValidation:.8,allowPathOnly:!1},conflictPolicy:"strict"},{id:"quality_requirement",name:"质量要求",aliases:["质量要求","质量标准","验收要求","评价标准"],category:"quality",cardinality:"multiple",derivationPolicy:"source_only",usagePolicy:"use_if_relevant",confidencePolicy:{minForGeneration:.65,minForValidation:.75,allowPathOnly:!1},conflictPolicy:"allow_multiple"},{id:"safety_requirement",name:"安全合规要求",aliases:["安全要求","安全合规要求","风险控制要求","合规要求"],category:"safety",cardinality:"multiple",derivationPolicy:"source_only",usagePolicy:"use_if_relevant",confidencePolicy:{minForGeneration:.65,minForValidation:.75,allowPathOnly:!1},conflictPolicy:"allow_multiple"},{id:"technical_parameter",name:"技术参数",aliases:["技术参数","参数规格范围","规格","型号","尺寸","标准编号","材料设备"],category:"technical",cardinality:"multiple",derivationPolicy:"source_only",usagePolicy:"must_use",confidencePolicy:{minForGeneration:.7,minForValidation:.8,allowPathOnly:!1},conflictPolicy:"allow_multiple"},{id:"resource_plan",name:"资源配置",aliases:["劳动力","机械","检测设备","应急物资","资源配置","人员配置"],category:"resource",cardinality:"multiple",derivationPolicy:"plan_inferable",usagePolicy:"use_if_relevant",confidencePolicy:{minForGeneration:.45,minForValidation:.55,allowPathOnly:!1},conflictPolicy:"allow_multiple"},{id:"commercial_data",name:"商务数据",aliases:["报价","单价","合价","综合单价","预留金","税率","金额","利润"],category:"commercial",cardinality:"multiple",derivationPolicy:"forbidden",usagePolicy:"do_not_use",confidencePolicy:{minForGeneration:1,minForValidation:1,allowPathOnly:!1},conflictPolicy:"ignore"},{id:"rule_requirement",name:"规则要求",aliases:["规则要求","变更说明","实施范围","对象范围","结构化数据范围"],category:"compliance",cardinality:"multiple",derivationPolicy:"source_only",usagePolicy:"use_if_relevant",confidencePolicy:{minForGeneration:.6,minForValidation:.7,allowPathOnly:!1},conflictPolicy:"allow_multiple"}],forbiddenValuePatterns:[/投标报价|报价明细|单价|合价|综合单价|预留金|暂列金额|税率|增值税|利润|结算/u],diagnosticValuePatterns:[/OCR|识别错误|乱码|无法确认|疑似|不确定|绑定片段|兜底|知识库|提示词|后台|文件路径|PDF|DWG|Excel/u,/^#+\s*/u,/^见(?:招标|投标人|前附|补疑|图纸|清单|文件|资料|公告|须知)/u],lowConfidenceValuePatterns:[/无法确认|疑似|不确定|需复核|文字模糊|语义断裂|识别错误|乱码/u]},m={...l,id:"construction_organization_design",name:"施工组织设计"};function n(a,b){return a.factFields.find(a=>a.name===b||a.aliases.some(a=>b.includes(a)||a.includes(b)))}function o(a,b){return a.forbiddenValuePatterns.some(a=>a.test(b))}function p(a,b){return a.diagnosticValuePatterns.some(a=>a.test(b))}function q(a,b){return a.lowConfidenceValuePatterns.some(a=>a.test(b))}var r=c(56942),s=c(70933),t=c(70208),u=c(91977),v=c(61373),w=c(78217),x=c(23760);let y=[{id:"basis-overview",title:"编制说明与工程概况",aliases:["编制说明","工程概况","项目概况","项目基本情况","工程基本信息"],category:"setup",level:"core",sectionItems:["编制依据","项目主要施工内容","项目特点、重点、难点分析"],queries:["工程概况","编制依据","招标范围","建设地点","建设规模","工期质量目标"],facts:["工程名称","建设地点","建设规模","招标范围","计划工期","质量目标"],tableSections:["项目重难点识别表"],attachHints:["概况","项目","工程","说明","总纲","部署"]},{id:"organization",title:"项目管理组织机构与职责",aliases:["组织机构","项目管理","岗位职责","管理机构","管理人员"],category:"setup",level:"core",sectionItems:["项目管理组织架构","管理人员岗位职责","内外部协调机制","劳务实名制与人员管理"],queries:["项目管理组织机构","岗位职责","项目经理","技术负责人","劳资员"],facts:["项目管理人员","岗位职责","持证人员","管理组织"],tableSections:["项目管理人员岗位职责配置表","内外协调沟通计划表"],attachHints:["组织","管理","部署","概况","保障"]},{id:"deployment",title:"施工部署与施工流水组织",aliases:["施工部署","总体部署","流水组织","施工组织","流水段"],category:"setup",level:"core",sectionItems:["施工总体部署","施工区段与流水段划分","各阶段施工顺序","多工序穿插与交叉作业管理","资源动态调配机制"],queries:["施工部署","流水段划分","施工顺序","工序穿插","资源调配"],facts:["施工范围","施工阶段","流水段","工期节点","资源配置"],tableSections:["施工流水段划分一览表","交叉作业安全管控清单"],attachHints:["部署","组织","总体","概况","方案"]},{id:"site-layout",title:"施工现场平面布置与临设管理",aliases:["总平面布置","现场平面","平面布置","临设","临水临电","人车分流"],category:"setup",level:"core",sectionItems:["施工现场总平面布置","办公区生活区加工区材料堆放区布置","现场交通组织与人车分流","临时用水布置","临时用电三级配电两级保护","材料场内转运路线"],queries:["施工总平面","临时用电","临时用水","材料堆放","场内交通"],facts:["施工现场条件","临设布置","临水临电","材料堆场","交通组织"],tableSections:["现场总平面分区布置表","场内交通导改组织计划表","临时用电负荷统计表","临时用水布置统计表","材料场内转运路线规划表"],attachHints:["部署","平面","现场","临设","组织"]},{id:"progress",title:"进度计划与工期保障",aliases:["进度计划","工期保障","工期计划","节点控制","进度控制"],category:"setup",level:"core",sectionItems:["总进度计划","关键节点控制计划","周计划日计划分解机制","进度偏差分析与纠偏措施","工期风险预警机制"],queries:["总工期","进度计划","关键节点","工期保障","进度纠偏"],facts:["计划工期","开竣工时间","关键节点","资源保障"],tableSections:["关键施工节点控制计划表"],attachHints:["进度","工期","部署","资源","保障"]},{id:"resources",title:"资源配置计划",aliases:["资源配置","机械设备","劳动力","材料计划","人材机"],category:"setup",level:"core",sectionItems:["主要施工机械设备投入计划","分阶段劳动力投入计划","主要材料进场计划","周转材料配置计划","资源动态调配机制"],queries:["机械设备投入","劳动力计划","材料进场计划","周转材料","资源配置"],facts:["机械设备","劳动力","材料","工程量","施工阶段"],tableSections:["主要施工机械设备投入计划表","分阶段劳动力动态投入计划表","主要材料进场验收管控表"],attachHints:["资源","部署","进度","保障","组织"]},{id:"main-methods",title:"主要分部分项工程施工方案",aliases:["主要施工方案","施工方案","施工方法","分部分项","工艺方案","技术措施"],category:"technical",level:"core",sectionItems:["主要分部分项工程施工流程","关键工序施工工艺","质量控制点与验收要求","施工重难点专项措施"],queries:["分部分项工程","施工工艺","施工方法","验收要求","技术措施"],facts:["施工内容","工程量","图纸做法","技术标准","验收规范"],tableSections:["分项工程施工控制要点表","主要工程量一览表"],attachHints:["方案","施工","技术","工艺","措施"]},{id:"quality",title:"质量管理体系与质量保证措施",aliases:["质量管理","质量保证","质量控制","质量措施","验收管理"],category:"assurance",level:"core",sectionItems:["质量管理目标","三检制度","样板引路制度","隐蔽工程验收","原材料进场复试与见证取样","实测实量与质量通病治理","成品保护专项措施","质量问题闭环整改机制"],queries:["质量保证措施","三检制度","样板引路","隐蔽验收","质量通病","成品保护"],facts:["质量目标","验收标准","材料复试","质量控制点"],tableSections:["隐蔽工程验收清单表","分项工程质量控制要点表","质量通病防治清单表","样板引路实施计划表","成品保护管控清单表"],attachHints:["质量","保障","保证","措施","管理","验收"]},{id:"safety-risk",title:"安全管理、风险分级与危大工程管控",aliases:["安全管理","安全措施","风险分级","危大工程","安全生产","隐患排查"],category:"assurance",level:"core",sectionItems:["安全管理目标","危险源辨识与风险分级管控","危大工程辨识清单","危大工程专项施工方案审批流程","安全技术逐级交底","临边洞口高处作业起重吊装消防临电管理","安全隐患排查与闭环整改","应急救援组织与应急演练"],queries:["安全管理","风险分级管控","危大工程","安全技术交底","临时用电","消防安全"],facts:["安全目标","危大工程","风险源","安全标准","应急要求"],tableSections:["危险源辨识与风险分级管控清单","危大工程全流程闭环管控表","安全防护设施验收计划表","交叉作业安全管控清单","消防设施布置表"],attachHints:["安全","风险","危大","保障","措施","管理"]},{id:"environment-green",title:"文明施工、扬尘、噪声与绿色施工",aliases:["文明施工","扬尘治理","噪声管控","绿色施工","环保措施","四节一环保","建筑垃圾"],category:"environment",level:"core",sectionItems:["文明施工目标","扬尘污染专项管控","噪声分时段管控","施工废水沉淀处理","建筑垃圾分类回收","四节一环保措施","智慧工地与在线监测"],queries:["文明施工","扬尘治理","噪声管控","绿色施工","建筑垃圾分类","四节一环保"],facts:["文明施工目标","扬尘要求","噪声要求","环保标准","垃圾处置"],tableSections:["环境污染物管控指标一览表","建筑垃圾分类管理表","噪声分级管控表"],attachHints:["文明","环保","绿色","扬尘","噪声","保障","措施"]},{id:"labor-wage",title:"农民工工资保障与劳务管理",aliases:["农民工工资","工资保障","劳务管理","实名制","银行代发","工资专户"],category:"labor",level:"mandatory",sectionItems:["劳务实名制管理","农民工工资专用账户","银行代发制度","工资按月足额发放","考勤台账与工资支付台账","工资保证金与劳资纠纷处置"],queries:["农民工工资保障","劳务实名制","工资专用账户","银行代发","工资支付台账"],facts:["劳务管理要求","工资支付要求","实名制要求"],tableSections:["农民工工资管控台账表","劳务实名制管理台账表"],attachHints:["工资","劳务","实名","保障","措施","管理"]},{id:"external-protection",title:"周边环境、管线与既有建构筑物保护",aliases:["周边环境","管线保护","地下管线","既有建筑","交通导行","居民沟通"],category:"external",level:"conditional",sectionItems:["周边道路居民区学校医院商业区识别","既有地下管线探测与保护","临近建构筑物沉降监测","交通导行与公众安全保障","居民沟通与投诉响应机制"],queries:["地下管线保护","周边环境保护","交通导行","居民沟通","临近建筑沉降监测"],facts:["周边环境","地下管线","交通条件","居民区","既有建筑"],tableSections:["临近建筑地下管线保护清单表","交通导改组织计划表"],attachHints:["周边","管线","交通","居民","市政","改造","保护","环境","方案"]},{id:"seasonal",title:"季节性施工保障",aliases:["季节性施工","雨季施工","夏季高温","冬季施工","防汛","大风天气"],category:"seasonal",level:"core",sectionItems:["雨季施工措施","夏季高温施工措施","冬季施工措施","防汛防雷大风天气应急措施"],queries:["季节性施工","雨季施工","高温施工","冬季施工","防汛措施"],facts:["施工季节","当地气候","工期节点","防汛要求"],tableSections:["季节性施工资源配置表"],attachHints:["季节","雨季","高温","冬季","防汛","保障","措施"]},{id:"emergency",title:"应急管理体系",aliases:["应急管理","应急预案","应急救援","事故处置","演练计划"],category:"emergency",level:"core",sectionItems:["应急组织架构","应急物资储备","高处坠落物体打击坍塌触电火灾暴雨大风高温中暑专项预案","应急响应流程","应急演练计划","事故上报与复盘整改"],queries:["应急预案","应急组织","应急物资","应急演练","事故上报"],facts:["应急要求","安全风险","应急物资","演练计划"],tableSections:["应急物资储备清单表","应急演练计划表"],attachHints:["应急","预案","救援","安全","保障","措施"]},{id:"digital-bim",title:"BIM、智慧工地与创新加分模块",aliases:["BIM","智慧工地","数字化","智能监测","创新加分","AI视频识别"],category:"digital",level:"optional",sectionItems:["BIM场地布置优化","BIM管线综合深化","4D进度模拟","智慧工地视频监控","扬尘噪声实名制塔机黑匣子监测","AI视频识别与风险预警"],queries:["BIM应用","智慧工地","数字化管控","扬尘在线监测","实名制管理"],facts:["智慧工地要求","BIM要求","监测设备","信息化管理"],tableSections:["BIM智慧工地应用点表","智慧工地监测点位清单"],attachHints:["BIM","智慧","数字","创新","加分","保障","措施"]},{id:"delivery",title:"竣工清理、验收移交与保修",aliases:["竣工验收","竣工清理","验收移交","资料归档","保修","分户验收"],category:"delivery",level:"conditional",sectionItems:["竣工清理与垃圾外运","缺陷修补与复查销项","竣工资料归档","验收移交与保修响应"],queries:["竣工验收","资料归档","验收移交","保修响应","竣工清理"],facts:["竣工要求","验收标准","移交要求","保修要求"],tableSections:["竣工清理与移交计划表"],attachHints:["竣工","验收","移交","保修","收尾"]}],z={building:[{id:"building-methods",title:"房建工程专项施工工艺",aliases:["房建","基础主体","主体结构","二次结构","屋面防水","多塔吊"],category:"technical",level:"conditional",projectTypes:["building"],sectionItems:["基坑开挖及支护","基坑降水及沉降监测","钢筋模板混凝土施工","砌体及二次结构施工","屋面与厨卫防水闭水试验","机电预留预埋","多塔吊作业防碰撞"],queries:["房建工程施工","主体结构","二次结构","屋面防水","多塔防碰撞"],facts:["建筑结构","层数高度","基础形式","主体结构","防水做法"],tableSections:["多塔防碰撞管控表","隐蔽工程验收清单表"],attachHints:["方案","施工","技术","工艺","房建","主体"]}],municipal:[{id:"municipal-methods",title:"市政工程专项施工工艺",aliases:["市政","道路","管网","沟槽","交通导改","雨污水"],category:"technical",level:"conditional",projectTypes:["municipal"],sectionItems:["全线现场踏勘与地下管线探测","交通导改与占道施工","沟槽开挖支护与降排水","雨污水管道铺设与闭水试验","路基分层碾压与压实度检测","水稳基层与沥青面层施工","新旧管网道路接驳与竣工移交"],queries:["市政工程","交通导改","地下管线","沟槽开挖","管道闭水","沥青摊铺"],facts:["道路长度","管线类型","交通条件","沟槽深度","路面结构"],tableSections:["既有管线保护管控表","交通导改组织计划表"],attachHints:["方案","施工","技术","工艺","市政","道路","管网"]}],renovation:[{id:"renovation-methods",title:"老旧小区改造专项施工组织",aliases:["老旧小区","小区改造","改造工程","飞线整治","雨污分流"],category:"technical",level:"conditional",projectTypes:["renovation"],sectionItems:["居民沟通协调机制","楼栋单元分区分段施工","原有建构筑物与既有设施保护","外墙空鼓铲除加固与屋面翻新防水","雨污管网分流与飞线整治","降噪防尘与不中断通行保障"],queries:["老旧小区改造","居民沟通","分区施工","既有保护","飞线整治","雨污分流"],facts:["小区现状","居民通行","改造范围","既有设施","外墙屋面"],tableSections:["居民沟通协调计划表","既有成品保护清单表"],attachHints:["方案","施工","技术","工艺","改造","小区","居民"]}],decoration:[{id:"decoration-methods",title:"装饰装修工程专项施工工艺",aliases:["装饰装修","装修","精装修","吊顶","墙地面","成品保护"],category:"technical",level:"conditional",projectTypes:["decoration"],sectionItems:["墙地面基层处理与挂网防开裂","厨卫阳台分层防水与48小时闭水试验","吊顶龙骨加固与木构件防火防腐","墙地面铺装空鼓防控与阴阳角收口","交叉施工工序优化","室内空气质量管控与成品保护"],queries:["装饰装修","基层处理","闭水试验","吊顶龙骨","成品保护","室内空气质量"],facts:["装修范围","材料做法","防水部位","吊顶做法","环保要求"],tableSections:["成品保护管控清单表","交叉施工工序优化表"],attachHints:["方案","施工","技术","工艺","装饰","装修"]}]},A=[...y,...z.building,...z.municipal,...z.renovation,...z.decoration];function B(a){return(0,t.GQ)(a).replace(/\s+/gu,"").toLowerCase()}function C(a,b,c){let d=new Set,e=[...a||[],...b].map(a=>a.trim()).filter(a=>a&&!d.has(a)&&(d.add(a),!0));return"number"==typeof c?e.slice(0,c):e}function D(a){let b=B(`${a.template.name} ${a.template.outputTitle||""} ${a.requirement||""} ${a.chapters.map(a=>a.title).join(" ")}`),c=[];return/市政|道路|管网|雨污|污水|给水|沟槽|交通导|沥青|水稳|检查井/u.test(b)&&c.push("municipal"),/老旧小区|小区改造|改造|修缮|飞线|居民|雨污分流/u.test(b)&&c.push("renovation"),/装饰|装修|精装|吊顶|墙地面|乳胶漆|瓷砖|石材|室内/u.test(b)&&c.push("decoration"),/房建|住宅|办公楼|厂房|主体结构|基础|屋面|二次结构|塔吊|建筑/u.test(b)&&c.push("building"),c.length?[...new Set(c)]:["general"]}function E(a,b,c){return!!(!a.projectTypes?.length||a.projectTypes.some(a=>b.includes(a)))||a.aliases.some(a=>c.includes(B(a)))||a.sectionItems.some(a=>c.includes(B(a)))}function F(a,b){let c=B(a),d=0;for(let a of b.attachHints)c.includes(B(a))&&(d+=5);for(let a of b.aliases){let b=B(a);(c.includes(b)||b.includes(c))&&(d+=12)}return/概况|部署|组织|平面|资源|进度/u.test(c)&&"setup"===b.category&&(d+=6),/方案|施工|技术|工艺|分部分项|方法/u.test(c)&&"technical"===b.category&&(d+=8),/保障|保证|措施|管理/u.test(c)&&["assurance","environment","labor","seasonal","emergency","digital"].includes(b.category)&&(d+=6),/质量/u.test(c)&&"quality"===b.id&&(d+=15),/安全|危大|风险/u.test(c)&&"safety-risk"===b.id&&(d+=15),/文明|环保|扬尘|噪声|绿色/u.test(c)&&"environment-green"===b.id&&(d+=15),/工资|劳务|实名/u.test(c)&&"labor-wage"===b.id&&(d+=15),/应急|预案/u.test(c)&&"emergency"===b.id&&(d+=15),/季节|雨季|冬季|高温|防汛/u.test(c)&&"seasonal"===b.id&&(d+=15),/周边|管线|交通|居民|保护/u.test(c)&&"external-protection"===b.id&&(d+=12),/BIM|智慧|数字|创新/iu.test(a)&&"digital-bim"===b.id&&(d+=15),/竣工|验收|移交|保修/u.test(c)&&"delivery"===b.id&&(d+=15),d}function G(a,b){let c={index:0,score:-1};if(b.forEach((b,d)=>{let e=F(b.title,a);e>c.score&&(c={index:d,score:e})}),c.score>0)return c.index;let d={setup:/概况|部署|组织|资源|进度|总体/u,technical:/方案|施工|技术|工艺|措施/u,assurance:/保障|保证|措施|管理|质量|安全/u,environment:/保障|措施|文明|环保|绿色/u,labor:/保障|措施|劳务|工资/u,external:/方案|施工|周边|保护|交通/u,seasonal:/保障|措施|季节|雨季/u,emergency:/保障|措施|应急|安全/u,digital:/保障|措施|智慧|BIM|创新/u,delivery:/竣工|验收|移交|收尾/u},e=b.findIndex(b=>d[a.category].test(b.title));return e>=0?e:Math.max(0,b.length-1)}function H(a){if(!function(a){let b=B(`${a.template.name} ${a.template.outputTitle||""} ${a.requirement||""} ${a.chapters.map(a=>a.title).join(" ")}`);return!!/施工组织设计|施工组织|施组|技术标|投标技术|施工方案/u.test(b)||["施工","工程","质量","安全","进度","文明","部署","方案"].filter(a=>b.includes(a)).length>=3&&!/监理|可研|运维|维护|保养/u.test(b)}(a))return a.chapters;let b=D(a),c=B(`${a.template.name} ${a.template.outputTitle||""} ${a.requirement||""} ${a.chapters.map(a=>`${a.title} ${(a.sections||[]).join(" ")}`).join(" ")}`),d=a.chapters.some(a=>/概况|部署|总体|组织|主要施工方案|保障|保证|综合措施|管理体系/u.test(a.title)&&!/雨季|冬季|高温|防汛|扬尘|噪声|工资|劳务|应急|BIM|智慧|管线|交通导改/u.test(a.title)),e=A.filter(a=>E(a,b,c)),f=new Set,g=a.chapters.map(a=>({...a,sections:[...a.sections||[]],queries:[...a.queries||[]],requiredFacts:[...a.requiredFacts||[]],tableSections:[...a.tableSections||[]]}));for(let a of e){let e=g.map((b,c)=>({index:c,score:F(b.title,a),chapter:b})).filter(d=>(function(a,b,c,d){var e;if(!E(a,c,d))return!1;let f=B(b.title);if(a.aliases.some(a=>f.includes(B(a)))||a.sectionItems.some(a=>f.includes(B(a))))return!0;if(e=b.title,/雨季|冬季|高温|防汛|扬尘|噪声|工资|劳务|实名|应急|BIM|智慧|管线|交通导改|垃圾分类|多塔|成品保护/u.test(e))return!1;let g=F(b.title,a);return g>=10||("optional"===a.level?g>=12||/BIM|智慧|数字|创新/iu.test(d):"conditional"===a.level?g>=8||a.projectTypes?.some(a=>c.includes(a))===!0||a.aliases.some(a=>d.includes(B(a))):g>=6)})(a,d.chapter,b,c)).sort((a,b)=>b.score-a.score),h=e[0]?.index??(d&&("core"===a.level||"mandatory"===a.level)?G(a,g):-1);if(h<0)continue;let i=g[h],j=function(a,b){let c=B(b.title);return a.aliases.some(a=>c.includes(B(a)))||c.includes(B(a.title)),a.title}(a,i);i.sections=C(i.sections,[j,...a.sectionItems],50),i.queries=C(i.queries,[a.title,...a.queries],30),i.requiredFacts=C(i.requiredFacts,a.facts,30),i.tableSections=C(i.tableSections,a.tableSections||[],20),i.purpose=`${i.purpose};系统已按施工组织设计标准模块库自动挂靠“${a.title}”,仅在本章范围内展开与章节语义、项目类型和资料事实合理相关的内容,禁止机械塞入无关内容。`,f.add(a.id)}for(let a of d?e.filter(a=>("mandatory"===a.level||"core"===a.level)&&!f.has(a.id)):[]){let b=G(a,g),c=g[b];c.sections=C(c.sections,[a.title,...a.sectionItems],50),c.queries=C(c.queries,[a.title,...a.queries],30),c.requiredFacts=C(c.requiredFacts,a.facts,30),c.tableSections=C(c.tableSections,a.tableSections||[],20),c.purpose=`${c.purpose};系统已补足施工组织设计必备模块“${a.title}”,需以合理挂靠方式呈现,不改变用户一级章节。`}if(!g.some(a=>/项目主要施工内容|主要施工内容/u.test(`${a.title} ${(a.sections||[]).join(" ")}`))){let a=y.find(a=>"basis-overview"===a.id),b=g.findIndex(a=>/概况|重点|难点|部署|总体|施工|保障/u.test(a.title)),c=g[b>=0?b:0];c.sections=function(a,b,c){let d=new Set;return[...b,...a||[]].map(a=>a.trim()).filter(a=>a&&!d.has(a)&&(d.add(a),!0)).slice(0,50)}(c.sections,["项目主要施工内容"],50),c.queries=C(c.queries,["项目主要施工内容",...a?.queries||[]],30),c.requiredFacts=C(c.requiredFacts,a?.facts||["施工内容","工程量","施工范围"],30),c.purpose=`${c.purpose};系统已补足施工组织设计必备小节“项目主要施工内容”,必须按工作包展开施工概况、施工流程、施工方法。`}return g}let I=["精心组织","科学管理","精益求精","全力保障","高效推进","力争一流","完善体系","最大限度","显著提升","大力落实","充分确保","严格把控","加强管理","提高意识","强化监督","持续完善","定期检查","及时处理"],J=[{pattern:/质量|验收|隐蔽|样板|通病/u,label:"质量闭环",required:["自检","互检","交接检","整改","复查","归档"],prompt:"质量类内容必须形成“自检—互检—交接检—整改—复查—资料归档”闭环。"},{pattern:/安全|风险|危大|临电|消防|吊装|高处/u,label:"安全闭环",required:["辨识","交底","检查","整改","复查","销项"],prompt:"安全类内容必须形成“风险辨识—专项交底—现场检查—隐患整改—复查销项”闭环。"},{pattern:/进度|工期|节点|计划/u,label:"进度闭环",required:["计划","检查","偏差","纠偏","复核"],prompt:"进度类内容必须形成“计划分解—日/周检查—偏差识别—资源纠偏—节点复核”闭环。"},{pattern:/文明|扬尘|噪声|绿色|环保|垃圾/u,label:"环保闭环",required:["监测","预警","处置","台账"],prompt:"文明环保类内容必须形成“监测—预警—联动处置—台账记录”闭环。"},{pattern:/工资|劳务|实名/u,label:"工资闭环",required:["实名","考勤","核算","公示","代发","归档"],prompt:"工资保障类内容必须形成“实名登记—考勤—核算—公示—银行代发—归档”闭环。"},{pattern:/应急|预案|救援|事故/u,label:"应急闭环",required:["发现","警戒","疏散","处置","上报","复盘"],prompt:"应急类内容必须形成“发现险情—警戒疏散—初期处置—救援上报—复盘整改”闭环。"}],K={building:{label:"房建工程",chain:["施工准备","土方/基础","主体结构","二次结构","防水","机电安装","装饰装修","室外工程","竣工验收"],forbidden:["管道闭水试验","沥青摊铺","水稳层","交通导改"],prompt:"房建类章节应按“施工准备—基础—主体—二次结构—防水—机电—装饰—室外—验收”组织,不得混入市政道路工序。"},municipal:{label:"市政工程",chain:["测量放线","管线探测","围挡导行","沟槽/路基","管道/结构","回填","水稳/沥青/铺装","标线设施","验收移交"],forbidden:["主体结构","二次结构","塔吊","外脚手架","屋面防水"],prompt:"市政类章节应按“测量放线—管线探测—围挡导行—沟槽/路基—管道/结构—回填—路面恢复—验收移交”组织,不得写成房建主体结构逻辑。"},renovation:{label:"老旧小区改造",chain:["居民沟通","分区施工","既有保护","外墙/屋面/管网改造","扰民控制","竣工恢复"],forbidden:["大面积深基坑","高支模","大体量主体结构","长距离交通导改"],prompt:"老旧小区改造类章节必须体现“居民沟通—分区施工—既有保护—改造作业—扰民控制—竣工恢复”,不得忽略居民通行和既有设施保护。"},decoration:{label:"装饰装修工程",chain:["基层处理","防水闭水","吊顶龙骨","墙地面铺装","细部收口","成品保护","空气质量验收"],forbidden:["深基坑","路基压实","水稳层","沥青摊铺","大体量土方"],prompt:"装饰装修类章节应按“基层处理—防水闭水—吊顶墙面—地面铺装—细部收口—成品保护—空气质量验收”组织,不得混入基坑、路基等无关内容。"}},L=[{title:"招标评分项响应索引",pattern:/技术标|施工组织设计|评分|响应/u,prompt:"设置招标评分项响应索引,逐项对应章节、响应内容和位置。"},{title:"主要工程量一览表",pattern:/工程量|清单|土方|钢筋|混凝土|管道|路面/u,prompt:"将主要工程量表格化,关联资源配置和进度节点。"},{title:"影像资料留存",pattern:/隐蔽|危大|整改|验收|样板/u,prompt:"隐蔽、危大、材料验收、样板和整改前后对比必须留存影像资料。"},{title:"变更签证管理",pattern:/改造|市政|工期紧|变更|签证/u,prompt:"改造、市政或工期紧项目应补充变更识别、技术核定、签证资料和影响跟踪。"},{title:"危险品专项管理",pattern:/装修|装饰|动火|油漆|稀释剂|氧气|乙炔/u,prompt:"涉及动火、油漆、稀释剂、氧气乙炔时应补充危险品分区存放与动火审批。"},{title:"材料损耗与周转控制",pattern:/钢筋|模板|周转|材料|大体量/u,prompt:"体量大或材料占比高时应补充钢筋翻样、模板周转、余料回收和限额领料。"},{title:"分户验收",pattern:/住宅|住户|交付|分户/u,prompt:"住宅项目应补充分户实测、问题清单、整改销项和交付资料。"}];function M(a){return a.replace(/\s+/gu,"").toLowerCase()}function N(a){let b=`${a.title} ${(a.sections||[]).join(" ")}`;return/施工组织设计|施工组织|施组|技术标|施工方案|质量|安全|文明施工/u.test(b)?["【施工组织设计专项写作规则】","- 禁止空话套话:不要只写“加强管理、严格控制、确保质量、精心组织、科学管理”,必须写成“责任岗位+执行动作+量化标准+检查频次+整改时限+复查销项”。","- 每项措施至少包含责任主体、执行标准、检查频次、整改闭环;项目特有数据必须来自资料或图谱。",...J.filter(a=>a.pattern.test(b)).map(a=>`- ${a.prompt}`),...L.filter(a=>a.pattern.test(b)).map(a=>`- 高分补充:${a.prompt}`)].join("\n"):""}function O(a){let b=a.split("\n"),c=b.findIndex(a=>/^###\s+(?:\d+(?:\.\d+)*\s+)?(?:项目主要施工内容|主要施工内容)\s*$/u.test(a.trim()));if(c<0)return"";let d=b.length;for(let a=c+1;a<b.length;a+=1)if(/^#{2,3}\s+/u.test(b[a].trim())){d=a;break}return b.slice(c,d).join("\n").replace(/^\*\*([^*\n]{2,50})\*\*\s*$/gmu,"#### $1").replace(/承包人法(?=[::])/gu,"施工方法")}var P=c(22157),Q=c(51144);function R(a){let b=["project"];return/概况|工程|项目|部署|总体|施工|方案|资源/u.test(a)&&b.push("scope"),/进度|工期|部署|资源/u.test(a)&&b.push("schedule"),/质量|验收|材料/u.test(a)&&b.push("quality"),/安全|文明|风险|危大/u.test(a)&&b.push("safety"),/资源|材料|设备|劳动力|进度/u.test(a)&&b.push("resources"),/施工|工艺|技术|方案|清单|工程量/u.test(a)&&b.push("quantities"),[...new Set(b)]}function S(a,b){let c=R(a.title),d=c.filter(a=>"project"===a||"scope"===a?b.project.length>0||b.drawings.length>0:"schedule"===a?b.schedule.length>0:"quality"===a?b.quality.length>0||b.specifications.length>0:"safety"===a?b.safety.length>0||b.rules.length>0:"resources"===a?b.resources.length>0||b.bills.length>0:"quantities"===a&&(b.bills.length>0||b.drawings.length>0)),e=c.filter(a=>!d.includes(a)),f=c.length?d.length/c.length:1,g=f>=.75?"strong":f>=.4?"medium":"weak";return{level:g,mode:"strong"===g?"project-specific":"medium"===g?"standard-based":"restricted-general",supported:d,missing:e}}function T(a){return/概况|工程|项目/u.test(a)?["工程基础信息必须与资料一致","突出招标范围、建设地点、规模、工期、质量目标","说明施工组织编制边界"]:/部署|总体|组织/u.test(a)?["明确施工组织逻辑、专业接口和施工段划分","说明资源、进度、质量、安全之间的统筹关系","形成可执行的管理闭环"]:/进度|工期/u.test(a)?["围绕总工期和关键线路组织","说明资源保障、穿插施工、纠偏机制","不得编造系统暂未从知识库确认的日期节点"]:/质量/u.test(a)?["覆盖材料进场验收、复验、过程检查、隐蔽验收和资料归档","把资料中的质量标准落入控制点","明确整改复验闭环"]:/安全|文明|风险|危大/u.test(a)?["识别作业风险和现场管理边界","覆盖人员、设备、临电、消防、文明施工措施","明确检查整改和应急响应"]:/资源|材料|设备|劳动力/u.test(a)?["依据工程范围和进度组织资源配置","说明材料设备进场、验收、保管和调配","资源安排必须支撑工期和质量目标"]:/施工|工艺|技术|方案/u.test(a)?["明确施工准备、工艺流程、关键参数和验收要求","关联图纸、清单、说明资料中的对象和边界","突出重点难点和过程控制"]:["结合资料事实说明对象范围、实施方法、控制要点和验收闭环","避免泛化表述,必须体现本项目特征"]}function U(a){return[`章节任务卡:${a.title}`,` - 必须覆盖事实域:${R(a.title).join("、")}`,...T(a.title).map(a=>` - ${a}`),...(a.sections||[]).slice(0,10).map(a=>` - 小节任务:${a}|${T(a).join(";")}`),...function(a){let b=a.tablePlans||[];return 0===b.length?[]:[" - 本章必须按项目图谱生成以下表格/清单:",...b.map(a=>` * ${a.required?"必写":"按需"}《${a.title}》:字段=${a.fields.map(a=>a.name).join("、")};来源域=${a.sourceDomains.join("、")};${a.reason}`)]}(a),...function(a){let b=N(a);return b?b.split("\n").map(a=>` - ${a}`):[]}(a)].join("\n")}function V(a){let b=[...a.factsModel.project,...a.factsModel.schedule,...a.factsModel.quality,...a.factsModel.safety,...a.factsModel.resources,...a.factsModel.preciseFacts].filter((a,b,c)=>{let d=(0,P.lG)(a.value).replace(/\s+/gu," ").trim();return d.length>0&&c.findIndex(b=>`${b.key}:${(0,P.lG)(b.value).replace(/\s+/gu," ").trim()}`==`${a.key}:${d}`)===b}),c=(0,Q.Cr)(b,a=>(0,Q.rF)(a),{maxItems:48,maxChars:18e3},"coreFacts"),d=c.selected,f=c.dropped.length>0?[`⚠️ 因 LLM 上下文预算限制,${c.dropped.length} 个低优先级事实未纳入蓝图;完整事实主表可在生成后的事实覆盖报告查看。`]:[],g=function(a){let b=`${a.template.name} ${a.template.outputTitle||""} ${a.requirement||""} ${a.chapters.map(a=>a.title).join(" ")}`;return/专项施工|危大|专项方案/u.test(b)?{type:"专项施工方案",focus:["专项对象边界","工艺参数","风险控制","验收要求","应急措施"]}:/投标|技术标|响应|招标/u.test(b)?{type:"投标技术方案",focus:["招标响应","技术优势","工期质量安全承诺","资源保障","履约可实施性"]}:/监理|旁站|巡视|平行检验/u.test(b)?{type:"监理规划/细则",focus:["监理目标","旁站巡视","平行检验","验收程序","资料签认"]}:/可研|可行性|项目建议书|投资估算/u.test(b)?{type:"可研/项目建议类文档",focus:["建设必要性","方案比选","投资估算","风险分析","实施效益"]}:/运维|维护|保养|巡检/u.test(b)?{type:"运维维护方案",focus:["巡检频次","维护流程","故障响应","备品备件","记录闭环"]}:{type:"施工组织设计/施工技术方案",focus:["工程概况","施工部署","进度质量安全","资源配置","施工工艺和验收闭环"]}}(a),h=d.map((a,b)=>`${b+1}. ${a.fieldName||a.key||"资料事实"}|${(0,P.lG)(a.value).replace(/\s+/gu," ").slice(0,90)}|来源:${a.sourceFile?e.basename(a.sourceFile):"结构化事实主表"}`),i=function(a){let b={project:"项目基础事实",scope:"招标范围/施工边界",schedule:"工期与节点",quality:"质量目标与验收",safety:"安全文明要求",resources:"资源投入依据",quantities:"清单/图纸/工程量事实"};return a.map((a,c)=>`${c+1}. ${a.title}:${R(a.title).map(a=>b[a]||a).join("、")}`)}(a.chapters),j=a.chapters.map((b,c)=>{let d=S(b,a.factsModel);return`${c+1}. ${b.title}:${d.level}/${d.mode};缺失 ${d.missing.join("、")||"无"}`}),k=a.chapters.map(U),l=a.chapters.map(b=>(function(a,b){let c=S(a,b);return`章节实施方案:${a.title}
4
- - 写作模式:${c.mode};资料支撑度:${c.level}
5
- - 已支撑事实域:${c.supported.join("、")||"暂无"}
6
- - 系统暂未确认事实域:${c.missing.join("、")||"无"}
7
- - 章节目标:${T(a.title).join(";")}
8
- - 组织顺序:${(a.sections||[]).slice(0,10).join(" → ")||"按模板章节目标展开"}
9
- - 禁止内容:系统暂未从知识库确认的项目特有数字、日期、金额、工程量或材料规格不得编造;应触发扩大检索、事实补抽或事实落位修复。`})(b,a.factsModel)),m=function(a){let b=D({template:{id:"runtime",name:a.templateName,outputTitle:a.outputTitle||"",description:"",category:"",chapters:a.chapters},chapters:a.chapters,requirement:a.requirement}).filter(a=>"general"!==a).map(a=>K[a].prompt);return b.length?`【专业工序链约束】
10
- ${b.map(a=>`- ${a}`).join("\n")}`:""}({templateName:a.template.name,outputTitle:a.template.outputTitle,requirement:a.requirement,chapters:a.chapters});return["【全局文档蓝图与一致性约束】",`文档类型画像:${g.type};评分重点:${g.focus.join("、")}`,`文档目标:${a.template.outputTitle||a.template.name}`,a.requirement?`用户目标:${a.requirement}`:"",d.length?`可信基础事实主表:
11
- ${d.map(a=>`- ${function(a){let b=a.fieldName||a.key||"资料事实",c=(0,P.lG)(a.value).replace(/\s+/gu," ").trim();return`${b}:${c}${a.sourceFile?`(来源:${e.basename(a.sourceFile)})`:""}`}(a)}`).join("\n")}`:"可信基础事实主表:系统当前结构化事实确认不足,应扩大本地知识库检索、补抽事实并修复事实落位;正文只能使用已确认事实,不得编造参数。",h.length?`关键事实证据追踪清单:
12
- ${h.join("\n")}`:"",`事实覆盖矩阵:
13
- ${i.join("\n")}`,`知识库确认覆盖矩阵:
14
- ${j.join("\n")}`,m,"证据引用约束:工期、质量目标、招标范围、金额、工程量、标准规范、验收要求等关键事实必须来自可信基础事实主表或绑定材料;系统暂未从知识库确认的数字和参数不得编造。","跨章一致性要求:所有章节必须共用同一套工期、质量、范围、资源和验收口径;不得在不同章节写出相互矛盾的项目基础信息。",`章节专业任务卡:
15
- ${k.join("\n")}`,`章节实施方案:
16
- ${l.join("\n")}`,...f].filter(Boolean).join("\n")}let W=[{id:"overview",title:"工程概况与总体理解",requiredSectionPatterns:[/编制依据|编制说明/u,/工程概况|项目概况|基本概况/u,/现场踏勘|施工条件|现场条件/u],chapterPatterns:[/概况|总体|理解|说明|编制|项目/u],remedy:"应设置工程概况章节,包含编制依据、工程基本概况、现场条件与总体理解。",level:"required"},{id:"major-content",title:"项目主要施工内容",requiredSectionPatterns:[/主要施工内容|主要施工项目|施工内容/u],chapterPatterns:[/概况|总体|理解|主要施工|工程/u],remedy:'必须包含"项目主要施工内容"小节,按工作包展开施工概况、施工流程、施工方法。',level:"required"},{id:"key-difficulty",title:"重难点分析与对策",requiredSectionPatterns:[/重点.*难点|难点.*对策|重难点/u],chapterPatterns:[/概况|总体|理解|重点|难点|施工/u],remedy:"应设置项目特点、重点、难点分析小节,并逐项给出应对措施与责任闭环。",level:"required"},{id:"deployment",title:"施工部署与施工组织",requiredSectionPatterns:[/施工部署|总体部署|流水|施工顺序|施工区段/u],chapterPatterns:[/部署|组织|总体|方案/u],remedy:"应设置施工部署小节,明确流水段划分、施工顺序与资源调配。",level:"required"},{id:"schedule",title:"进度计划与工期保障",requiredSectionPatterns:[/进度计划|工期|节点/u],chapterPatterns:[/进度|工期|计划|保障/u],remedy:"应设置进度计划与工期保障小节,含总进度计划、关键节点与纠偏措施。",level:"required"},{id:"quality",title:"质量保证体系与措施",requiredSectionPatterns:[/质量/u],chapterPatterns:[/质量|验收|保障|措施/u],remedy:"应设置质量保证体系与措施小节,含质量目标、三检、隐蔽验收、通病防治。",level:"required"},{id:"safety",title:"安全文明施工与危大工程管控",requiredSectionPatterns:[/安全/u,/危大/u],chapterPatterns:[/安全|文明|风险|危大|保障|措施/u],remedy:"应设置安全管理与危大工程管控小节,含危险源辨识、危大清单、专项方案。",level:"required"},{id:"resources",title:"劳动力材料机械设备配置",requiredSectionPatterns:[/劳动力|机械设备|材料.*计划|资源配置|人材机/u],chapterPatterns:[/资源|劳动力|机械|材料|设备|计划/u],remedy:"应设置资源配置小节,含分阶段劳动力、机械设备投入与材料进场计划。",level:"required"},{id:"environment",title:"绿色文明施工与环保措施",requiredSectionPatterns:[/文明施工|扬尘|噪声|绿色|环保|四节/u],chapterPatterns:[/文明|绿色|环保|扬尘|噪声|保障|措施/u],remedy:"应设置文明施工与绿色施工小节,含扬尘噪声管控与四节一环保措施。",level:"required"},{id:"emergency",title:"应急管理体系",requiredSectionPatterns:[/应急/u],chapterPatterns:[/应急|安全|保障|措施/u],remedy:"应设置应急管理小节,含应急组织、物资储备与专项预案。",level:"recommended"}],X={building:[{id:"key-difficulty",title:"危大工程专项管控(房建)",requiredSectionPatterns:[/深基坑|高支模|起重吊装|脚手架/u],chapterPatterns:[/危大|安全|专项/u],remedy:"房建项目应对深基坑、高支模、起重吊装、脚手架等危大工程逐项给出专项方案与安全管理措施。",level:"recommended"}],municipal:[{id:"key-difficulty",title:"交通导改与管线保护(市政)",requiredSectionPatterns:[/交通导改|交通导行|占道施工/u,/管线保护|管线探测/u],chapterPatterns:[/交通|管线|安全|专项|保障/u],remedy:"市政项目应设置交通导改与既有管线保护专项内容。",level:"recommended"}],renovation:[{id:"key-difficulty",title:"居民协调与既有保护(改造)",requiredSectionPatterns:[/居民|扰民|既有.*保护|不中断/u],chapterPatterns:[/居民|协调|保护|保障|专项/u],remedy:"改造项目应设置居民沟通协调与既有设施保护专项内容。",level:"recommended"}],decoration:[{id:"key-difficulty",title:"成品保护与交叉施工(装饰)",requiredSectionPatterns:[/成品保护/u,/交叉施工|工序穿插/u],chapterPatterns:[/成品保护|交叉|协调|保障|专项/u],remedy:"装饰项目应设置成品保护与交叉施工工序优化专项内容。",level:"recommended"}]};function Y(a){return(0,t.GQ)(a).replace(/\s+/gu,"").toLowerCase()}function Z(a){var b;let c=(b=a.chapters,[...W].map(a=>{let c=[],d=new Set;for(let e of b){let b=Y(`${e.title} ${(e.sections||[]).join(" ")}`);for(let f of a.requiredSectionPatterns)f.test(b)&&!d.has(f)&&(d.add(f),c.push(e.title))}let e=[...new Set(c)],f=a.requiredSectionPatterns.filter(a=>!d.has(a)).map(a=>a.source.replace(/[\\/^$.*+?()[\]{}|]/gu,"").replace(/u$/u,"")),g=d.size===a.requiredSectionPatterns.length?e.length>1?"fragmented":"satisfied":"missing";return{groupId:a.id,groupTitle:a.title,level:a.level,status:g,carrierChapters:e,missingSections:f,remedy:a.remedy}})),d=[],e=c.filter(a=>"required"===a.level&&"missing"===a.status);for(let a of e)d.push({level:"error",severity:"blocker",message:`评标结构缺失:${a.groupTitle}(缺少:${a.missingSections.join("、")})`,suggestion:a.remedy});for(let a of c.filter(a=>"fragmented"===a.status))d.push({level:"warning",severity:"warning",message:`${a.groupTitle} 小节散落在 ${a.carrierChapters.length} 个章节(${a.carrierChapters.join("、")}),结构可能失真`,suggestion:"建议将同类内容集中到一个承载章节,避免章节间职责重叠。"});for(let b of a.chapters){let a=(b.sections||[]).length;a>18&&d.push({level:"warning",severity:"warning",message:`${b.title} 规划小节 ${a} 个,超过 18 个上限,易产生内容膨胀与重复`,suggestion:"合并语义相近的小节,或将细分内容下移为三级小节而非二级小节。"})}let f=a.chapters.map(a=>({...a,sections:[...a.sections||[]]})),g=new Set;for(let a of e){let b=W.find(b=>b.id===a.groupId);if(!b)continue;let c=f.findIndex(a=>{let c=Y(a.title);return b.chapterPatterns.some(a=>a.test(c))&&!/雨季|冬季|高温|防汛|扬尘|噪声|工资|劳务|实名|应急|BIM|智慧|管线/u.test(c)}),d=f[c>=0?c:0];for(let b of a.missingSections.filter(a=>!g.has(a)))g.add(b),d.sections.some(a=>Y(a).includes(Y(b))||Y(b).includes(Y(a)))||d.sections.push(b)}for(let b of D(a))if("general"!==b)for(let a of X[b]){let b=Y(f.map(a=>`${a.title} ${(a.sections||[]).join(" ")}`).join(" "));if(a.requiredSectionPatterns.some(a=>a.test(b)))continue;let c=f.findIndex(b=>{let c=Y(b.title);return a.chapterPatterns.some(a=>a.test(c))});f[c>=0?c:0].sections.push(a.title)}return{diagnostics:c,issues:d,enrichedChapters:f}}let $=[{pattern:/概况|总体|理解|说明|编制/u,goal:"以项目资料已确认的事实卡片展开工程概况与总体理解,不得空泛概述",mustCover:["工程名称、建设地点、建设规模、计划工期、质量标准等资料已确认事实","现场条件与招标范围边界","编制依据与适用范围"]},{pattern:/主要施工内容/u,goal:"按工作包展开施工概况、施工流程、施工方法三段式卡片,落到工程量与工艺参数",mustCover:["资料识别的工作包(不少于5个)","每个工作包的施工概况/施工流程/施工方法","工程量、材料设备规格、检测验收与资料闭环"]},{pattern:/重点|难点/u,goal:"识别项目重点难点并给出针对性对策,每项落到责任岗位与验收节点",mustCover:["重点难点成因与影响范围","对应施工内容与专项措施","责任岗位、检查频次、整改闭环"]},{pattern:/部署|总体|流水|顺序/u,goal:"明确施工部署逻辑、流水段划分与资源调配机制",mustCover:["施工区段与流水划分","各阶段施工顺序与穿插关系","资源动态调配机制"]},{pattern:/进度|工期/u,goal:"围绕总工期与关键节点展开进度保障",mustCover:["总进度计划与关键节点","周/日计划分解","进度偏差识别与纠偏措施"]},{pattern:/质量/u,goal:"覆盖材料验收、过程控制、隐蔽验收、整改复验的质量闭环",mustCover:["质量目标与验收依据","三检制度与样板引路","隐蔽工程验收与材料复试","质量通病防治与闭环整改"]},{pattern:/安全|危大|风险/u,goal:"覆盖风险识别、危大工程专项方案、检查整改与应急响应",mustCover:["危险源辨识与风险分级","危大工程清单与专项方案","安全交底与隐患排查闭环"]},{pattern:/资源|材料|设备|劳动力|人材机/u,goal:"说明资源配置依据、进场验收与保管调配",mustCover:["机械设备投入计划","分阶段劳动力计划","材料进场计划与验收"]},{pattern:/文明|绿色|环保|扬尘|噪声/u,goal:"覆盖扬尘噪声管控、四节一环保与智慧监测",mustCover:["扬尘噪声分时段管控","四节一环保措施","监测预警与台账"]},{pattern:/应急|预案/u,goal:"覆盖应急组织、物资储备与专项预案",mustCover:["应急组织架构","应急物资储备","专项预案与演练计划"]},{pattern:/竣工|验收|移交|保修/u,goal:"覆盖竣工清理、验收移交与保修响应",mustCover:["竣工清理与垃圾外运","缺陷修补与复查销项","验收移交与保修响应"]},{pattern:/工资|劳务|实名/u,goal:"覆盖劳务实名制与农民工工资保障闭环",mustCover:["劳务实名制管理","工资专用账户与银行代发","考勤与工资支付台账"]}];function _(a,b,c,d,e=!0){return{name:a,sourceDomain:b,sourceHint:c,fallbackPolicy:d,required:e}}let aa=[{id:"project-overview",title:"工程概况一览表",moduleTitles:["编制说明与工程概况"],required:!0,triggerKeywords:["工程概况","概况","编制说明","建设规模","工期"],fields:[_("工程名称","project","从项目名称、招标范围提取","projectFactOnly"),_("建设地点","project","从建设地点资料提取","projectFactOnly"),_("建设规模","project","建筑面积、结构形式、层数等从资料提取","projectFactOnly"),_("计划工期","schedule","从工期节点或资料提取","projectFactOnly"),_("质量标准","standards","从招标要求或质量标准提取","standardAllowed"),_("招标范围","requirements","从招标范围与工作内容提取","deriveFromContext")]},{id:"project-difficulty",title:"项目重难点识别表",moduleTitles:["编制说明与工程概况"],required:!0,triggerKeywords:["重点","难点","重难点","风险"],fields:[_("重难点","risks","从图谱风险、现场条件、项目要求中提取","deriveFromContext"),_("形成原因","siteConditions","结合现场条件、工期、周边环境、施工范围说明","deriveFromContext"),_("影响范围","works","关联受影响的分部分项、区域、工序或周边对象","deriveFromContext"),_("专项措施","methods","结合工艺方法、风险 mitigation 和标准措施填写","standardAllowed"),_("责任岗位","standard","按项目经理、技术负责人、施工员、安全员、质量员等职责填写","standardAllowed")]},{id:"site-layout-zones",title:"现场总平面分区布置表",moduleTitles:["施工现场平面布置与临设管理"],required:!0,triggerKeywords:["总平面","平面布置","临设","材料堆场"],fields:[_("区域名称","siteConditions","从现场条件、临设、加工区、办公生活区等识别","deriveFromContext"),_("位置","siteConditions","从现场平面、道路、场地条件或资料描述提取","projectFactOnly",!1),_("功能","standard","按办公、生活、加工、堆放、通行等功能填写","standardAllowed"),_("面积","project","仅资料明确时填写,不得编造","projectFactOnly",!1),_("搭设标准","standards","按临设、安全文明、消防、环保标准填写","standardAllowed"),_("拆除时间","schedule","结合施工阶段或竣工清理阶段填写","deriveFromContext",!1)]},{id:"temporary-electric-load",title:"临时用电负荷统计表",moduleTitles:["施工现场平面布置与临设管理"],required:!0,triggerKeywords:["临时用电","临电","三级配电","设备功率"],fields:[_("设备名称","resources","从设备资源、机械投入计划中提取","deriveFromContext"),_("功率","resources","仅资料或设备参数明确时填写","projectFactOnly",!1),_("数量","resources","从设备数量或资源计划提取","projectFactOnly",!1),_("总功率","resources","仅功率和数量明确时计算,否则不编造","projectFactOnly",!1),_("负荷等级","standard","按临电管理和设备重要性判断","standardAllowed",!1),_("检查频次","standards","按临电巡查制度填写","standardAllowed")]},{id:"progress-milestones",title:"关键施工节点控制计划表",moduleTitles:["进度计划与工期保障"],required:!0,triggerKeywords:["进度","工期","节点","计划"],fields:[_("关键节点","schedule","从工期节点、里程碑、施工阶段提取","projectFactOnly"),_("计划完成时间","schedule","仅资料明确时填写日期或工期节点","projectFactOnly",!1),_("责任岗位","standard","按施工组织管理职责填写","standardAllowed"),_("投入资源","resources","关联劳动力、机械、材料资源","deriveFromContext"),_("检查频次","standard","按日计划、周计划、月计划检查机制填写","standardAllowed"),_("滞后纠偏措施","methods","结合资源调配、穿插施工和备用资源填写","standardAllowed")]},{id:"equipment-plan",title:"主要施工机械设备投入计划表",moduleTitles:["资源配置计划"],required:!0,triggerKeywords:["机械设备","设备投入","资源配置"],fields:[_("设备名称","resources","从 equipment 类型资源提取","deriveFromContext"),_("规格型号","resources","从资源规格型号提取","projectFactOnly",!1),_("数量","resources","从资源数量提取","projectFactOnly",!1),_("使用阶段","schedule","结合施工阶段和适用工程内容填写","deriveFromContext"),_("用途","works","关联适用分部分项或工序","deriveFromContext"),_("进退场时间","schedule","仅资料明确时填写,否则按施工阶段表达","deriveFromContext",!1)]},{id:"labor-plan",title:"分阶段劳动力动态投入计划表",moduleTitles:["资源配置计划"],required:!0,triggerKeywords:["劳动力","人员投入","班组"],fields:[_("施工阶段","schedule","从施工阶段和进度节点提取","deriveFromContext"),_("工种","resources","从 labor 类型资源、工序需求推导","deriveFromContext"),_("人数","resources","仅资料明确时填写","projectFactOnly",!1),_("主要工作内容","works","关联对应分部分项工程","deriveFromContext"),_("调配原则","standard","按工期节点、穿插施工和资源动态调配填写","standardAllowed")]},{id:"quality-hidden-acceptance",title:"隐蔽工程验收清单表",moduleTitles:["质量管理体系与质量保证措施"],required:!0,triggerKeywords:["隐蔽工程","隐蔽验收","质量验收"],fields:[_("隐蔽部位","works","从分部分项工程、图纸做法和工序识别","deriveFromContext"),_("验收内容","methods","结合工艺步骤和质量控制点填写","deriveFromContext"),_("验收时机","schedule","按工序完成、覆盖前、下道工序前填写","standardAllowed"),_("验收要点","standards","从验收规范、质量标准和材料要求提取","standardAllowed"),_("影像留存","standard","按隐蔽验收资料归档要求填写","standardAllowed")]},{id:"quality-common-defects",title:"质量通病防治清单表",moduleTitles:["质量管理体系与质量保证措施"],required:!0,triggerKeywords:["质量通病","防治","质量控制"],fields:[_("通病问题","risks","从质量风险、常见工序问题和项目类型推导","deriveFromContext"),_("产生原因","methods","结合施工工艺、材料、环境和操作因素填写","deriveFromContext"),_("预防措施","methods","按工艺控制、样板引路、材料复试等填写","standardAllowed"),_("整改标准","standards","从验收规范和质量标准提取","standardAllowed"),_("复查频次","standard","按质量检查制度填写","standardAllowed")]},{id:"risk-grade-control",title:"危险源辨识与风险分级管控清单",moduleTitles:["安全管理、风险分级与危大工程管控"],required:!0,triggerKeywords:["安全","风险","危险源","危大"],fields:[_("危险源","risks","从项目图谱 risks 和施工工序识别","deriveFromContext"),_("风险等级","risks","使用图谱风险等级或按影响程度判断","deriveFromContext"),_("存在部位","works","关联风险所在工程部位、区域或工序","deriveFromContext"),_("管控措施","risks","优先使用 mitigation,必要时按标准安全措施补充","standardAllowed"),_("监测频次","standards","按安全巡查和专项监测制度填写","standardAllowed"),_("闭环要求","standard","按隐患整改、复查、销项、归档填写","standardAllowed")]},{id:"dangerous-workflow",title:"危大工程全流程闭环管控表",moduleTitles:["安全管理、风险分级与危大工程管控"],required:!0,triggerKeywords:["危大工程","专项施工方案","专家论证"],fields:[_("危大项目","risks","从危大工程、深基坑、高支模、起重吊装等风险识别","deriveFromContext"),_("方案编制","standard","按专项方案编制要求填写","standardAllowed"),_("审批交底","standard","按审核审批、专家论证、技术交底流程填写","standardAllowed"),_("旁站监测","standard","按实施过程旁站、监测、验收要求填写","standardAllowed"),_("验收闭环","standard","按联合验收、挂牌使用、整改销项填写","standardAllowed")]},{id:"environment-control",title:"环境污染物管控指标一览表",moduleTitles:["文明施工、扬尘、噪声与绿色施工"],required:!0,triggerKeywords:["文明施工","扬尘","噪声","绿色施工","环保"],fields:[_("污染源","siteConditions","从扬尘、噪声、废水、垃圾等施工影响识别","deriveFromContext"),_("控制指标","requirements","从招标环保要求、地方监管或标准要求提取","standardAllowed"),_("监测方式","standard","按在线监测、巡查、台账记录填写","standardAllowed"),_("管控措施","methods","按湿法作业、覆盖、冲洗、封闭、沉淀处理填写","standardAllowed"),_("责任岗位","standard","按文明施工管理员、安全员、施工员等填写","standardAllowed")]},{id:"construction-waste",title:"建筑垃圾分类管理表",moduleTitles:["文明施工、扬尘、噪声与绿色施工"],required:!0,triggerKeywords:["建筑垃圾","垃圾分类","绿色施工"],fields:[_("垃圾类别","standard","按可回收材料、建筑垃圾、生活垃圾、危险废弃物分类","standardAllowed"),_("堆放区域","siteConditions","结合现场平面和堆放分区填写","deriveFromContext"),_("处理方式","standard","按回收利用、外运消纳、资质单位处置填写","standardAllowed"),_("清运频次","standard","按现场保洁和垃圾日产日清要求填写","standardAllowed"),_("责任人","standard","按材料员、施工员、安全员、保洁员等填写","standardAllowed")]},{id:"wage-control",title:"农民工工资管控台账表",moduleTitles:["农民工工资保障与劳务管理"],required:!0,triggerKeywords:["农民工工资","工资保障","劳务实名制"],fields:[_("管理环节","requirements","按实名登记、考勤、核算、公示、代发、归档填写","standardAllowed"),_("执行要求","requirements","从工资支付、实名制和专户要求提取","standardAllowed"),_("责任岗位","standard","按劳资员、项目经理、班组长等填写","standardAllowed"),_("形成资料","standard","按考勤表、工资表、银行流水、公示记录等填写","standardAllowed"),_("闭环要求","standard","按争议受理、核查、整改、销项归档填写","standardAllowed")]},{id:"pipeline-protection",title:"临近建筑地下管线保护清单表",moduleTitles:["周边环境、管线与既有建构筑物保护"],required:!1,triggerKeywords:["地下管线","管线保护","既有建筑","周边环境"],fields:[_("保护对象","siteConditions","从地下管线、临近建筑、道路、居民区等识别","deriveFromContext"),_("位置关系","siteConditions","从现场条件、图纸或踏勘资料提取","projectFactOnly",!1),_("风险影响","risks","结合开挖、振动、沉降、交通等影响填写","deriveFromContext"),_("保护措施","methods","按探测、标识、支护、监测、应急抢修填写","standardAllowed"),_("监测频次","standards","按风险等级和施工阶段填写","standardAllowed"),_("应急处置","risks","按停工警戒、抢修联络、复查恢复填写","standardAllowed")]},{id:"seasonal-resource",title:"季节性施工资源配置表",moduleTitles:["季节性施工保障"],required:!0,triggerKeywords:["季节性施工","雨季","冬季","高温","防汛"],fields:[_("季节/天气类型","siteConditions","结合施工季节、当地气候和工期节点填写","deriveFromContext"),_("影响工序","works","关联受雨季、高温、冬季影响的工序","deriveFromContext"),_("配置资源","resources","结合排水、防暑、防冻、防风等物资设备填写","standardAllowed"),_("检查频次","standard","按天气预警、班前检查、雨后复查填写","standardAllowed"),_("应急措施","risks","按防汛、排水、防雷、大风停工等填写","standardAllowed")]},{id:"emergency-materials",title:"应急物资储备清单表",moduleTitles:["应急管理体系"],required:!0,triggerKeywords:["应急","应急物资","应急救援"],fields:[_("物资名称","resources","从应急物资或按风险场景配置","standardAllowed"),_("规格型号","resources","资料明确时填写,否则按通用应急物资表达","standardAllowed",!1),_("数量","resources","仅资料明确时填写","projectFactOnly",!1),_("存放位置","siteConditions","结合现场平面和应急点位填写","deriveFromContext",!1),_("用途","risks","关联火灾、触电、坍塌、暴雨、高温等风险场景","deriveFromContext"),_("检查周期","standard","按应急物资定期检查制度填写","standardAllowed")]},{id:"bim-smart-site",title:"BIM智慧工地应用点表",moduleTitles:["BIM、智慧工地与创新加分模块"],required:!1,triggerKeywords:["BIM","智慧工地","在线监测","数字化"],fields:[_("应用点","requirements","从 BIM、智慧工地、监测要求或加分点识别","deriveFromContext"),_("应用内容","methods","按管线综合、4D模拟、视频监控、扬尘监测等填写","standardAllowed"),_("实施阶段","schedule","结合深化设计、施工准备、全过程管控等阶段填写","deriveFromContext"),_("输出成果","standard","按模型、图纸、台账、预警记录等填写","standardAllowed"),_("作用","standard","按减少返工、校核工期、联动喷淋、风险预警等填写","standardAllowed")]}];function ab(a){return a.replace(/\s+/gu,"").toLowerCase()}function ac(a){return[...new Set(a)]}function ad(a){return ab([a.title,a.purpose,...a.sections||[],...a.tableSections||[],...a.requiredFacts||[],...a.queries||[]].join(" "))}function ae(a,b,c){return c?!!a.triggerKeywords.some(a=>b.includes(ab(a)))||("equipment-plan"===a.id?c.resources.some(a=>"equipment"===a.type):"labor-plan"===a.id?c.resources.some(a=>"labor"===a.type):"progress-milestones"===a.id?c.schedule.length>0:"risk-grade-control"===a.id?c.risks.length>0:"pipeline-protection"===a.id?c.siteConditions.some(a=>/管线|道路|居民|学校|医院|商业|既有|周边/u.test(`${a.condition}${a.impact}`)):"bim-smart-site"===a.id?c.requirements.some(a=>/BIM|智慧|数字|监测|视频|实名制/u.test(`${a.category}${a.detail}`)):a.required):a.required}function af(a,b,c){return"factsModel"===a?!!(c&&Object.keys(c.byKey||{}).length>0):!!b&&("project"===a?Object.keys(c?.byKey||{}).length>0||b.requirements.length>0:"works"===a?b.works.length>0:"methods"===a?b.methods.length>0:"resources"===a?b.resources.length>0:"schedule"===a?b.schedule.length>0||!!c?.schedule.duration:"standards"===a?b.standards.length>0:"risks"===a?b.risks.length>0:"requirements"===a?b.requirements.length>0:"siteConditions"!==a||b.siteConditions.length>0)}function ag(a){var b;let c=(b=a.projectGraph)?ab([...b.works.flatMap(a=>[a.name,a.scope,...a.relatedItems]),...b.methods.flatMap(a=>[a.name,...a.steps,...a.applicableWorks]),...b.resources.flatMap(a=>[a.name,a.type,a.spec,a.quantity,a.unit]),...b.schedule.flatMap(a=>[a.milestone,a.duration,a.startDate,a.endDate]),...b.standards.flatMap(a=>[a.code,a.description]),...b.risks.flatMap(a=>[a.risk,a.level,a.mitigation]),...b.requirements.flatMap(a=>[a.category,a.detail]),...b.siteConditions.flatMap(a=>[a.condition,a.impact]),...b.addendumChanges.flatMap(a=>[a.originalPath,a.original,a.revised]),...b.gaps].join(" ")):"";return a.chapters.map(b=>{var d;let e=`${c} ${!(d=a.canonicalFacts)?"":ab(Object.values(d.byKey||{}).map(a=>`${a.label} ${a.value}`).join(" "))}`,f=aa.filter(c=>(function(a,b){let c=ad(b);return!!((b.tableSections||[]).some(b=>b===a.title||a.title.includes(b)||b.includes(a.title))||a.moduleTitles.some(a=>c.includes(ab(a)))||a.triggerKeywords.some(a=>c.includes(ab(a))))})(c,b)&&ae(c,e,a.projectGraph)).map(c=>{let d=ac(c.fields.map(a=>a.sourceDomain)),f=function(a,b,c,d){let e=ad(b);if(a.required||(b.tableSections||[]).some(b=>b===a.title||a.title.includes(b)))return"must";let f=ae(a,c,d);return/危大|安全|进度|工期|质量|资源|人材机|机械|劳动力|材料/u.test(e)&&f?"should":f?"conditional":"reference"}(c,b,e,a.projectGraph),g=function(a,b,c){let d=a.fields.filter(a=>a.required),e=a.fields.filter(a=>a.required&&"projectFactOnly"===a.fallbackPolicy&&!af(a.sourceDomain,b,c)).map(a=>a.name),f=a.fields.filter(a=>"projectFactOnly"!==a.fallbackPolicy||af(a.sourceDomain,b,c)).length,g="generate_with_confirmed_facts";return e.length>0&&f>0&&(g="generate_with_review_notes"),e.length===d.length&&d.length>0&&(g="convert_to_text"),0===f&&(g="skip_with_reason"),{requiredFieldCount:d.length,confirmedFieldCount:f,missingProjectFactFields:e,canGenerate:"skip_with_reason"!==g,fallbackPolicy:g}}(c,a.projectGraph,a.canonicalFacts),h="must"===f?{shouldOutput:!0,outputType:"convert_to_text"===g.fallbackPolicy?"checklist":"markdown_table",decisionReason:"章节必要管控表,按项目资料和图谱事实输出。"}:"should"===f?{shouldOutput:!0,outputType:"convert_to_text"===g.fallbackPolicy?"checklist":"markdown_table",decisionReason:"项目图谱和章节语义均触发,按资料内容输出。"}:"conditional"===f&&g.confirmedFieldCount>0?{shouldOutput:!0,outputType:"checklist",decisionReason:"资料已触发该结构,按已有事实表达。"}:{shouldOutput:!1,outputType:"skip",decisionReason:"非本章核心输出。"};return{id:c.id,title:c.title,chapterTitle:b.title,moduleTitle:c.moduleTitles[0]||b.title,required:h.shouldOutput&&("must"===f||c.required),reason:function(a,b){let c=[];return b?.schedule.length&&a.fields.some(a=>"schedule"===a.sourceDomain)&&c.push("项目图谱包含工期与关键节点"),b?.resources.length&&a.fields.some(a=>"resources"===a.sourceDomain)&&c.push("项目图谱包含资源投入信息"),b?.risks.length&&a.fields.some(a=>"risks"===a.sourceDomain)&&c.push("项目图谱包含风险与管控要求"),b?.requirements.length&&a.fields.some(a=>"requirements"===a.sourceDomain)&&c.push("项目图谱包含招标/管理要求"),b?.siteConditions.length&&a.fields.some(a=>"siteConditions"===a.sourceDomain)&&c.push("项目图谱包含现场条件约束"),c.length?c.join(";"):`章节包含“${a.moduleTitles.join("、")}”模块,按施工组织设计标准表格库生成。`}(c,a.projectGraph),fields:c.fields,sourceDomains:d,necessity:f,belongsToChapter:!0,scopeExplanation:`表格归属于“${b.title}”中“${c.moduleTitles.join("、")}”相关管理对象。`,triggerFacts:Object.values(a.canonicalFacts?.byKey||{}).filter(a=>c.triggerKeywords.some(b=>ab(`${a.label}${a.value}`).includes(ab(b)))).map(a=>`${a.label}=${a.value}`),triggerGraphNodes:c.triggerKeywords.filter(a=>e.includes(ab(a))),fillability:g,outputDecision:h,rowSeeds:function(a,b,c){let d=[],e=(b,c,e,f)=>{if(!ab(`${b}${e}`)||d.some(a=>ab(a.rowLabel)===ab(b)))return;let g=a.fields.filter(a=>ab(e).includes(ab(a.name))||"projectFactOnly"!==a.fallbackPolicy).map(a=>a.name),h=a.fields.filter(a=>a.required&&!g.includes(a.name)&&"projectFactOnly"===a.fallbackPolicy).map(a=>a.name);d.push({rowLabel:b,source:c,confirmedFields:g,missingFields:h,sourceRef:f})};for(let b of Object.values(c?.byKey||{}))a.triggerKeywords.some(a=>ab(`${b.label}${b.value}`).includes(ab(a)))&&e(b.label,"canonicalFact",b.value,b.sourceFile);for(let c of b?.resources||[])(a.fields.some(a=>"resources"===a.sourceDomain)||a.triggerKeywords.some(a=>ab(`${c.name}${c.type}`).includes(ab(a))))&&e(c.name,"equipment"===c.type||"material"===c.type||"labor"===c.type?"projectGraph":"standard",[c.spec,c.quantity,c.unit].filter(Boolean).join(" "),c.sourceFiles?.[0]);for(let c of b?.risks||[])(a.fields.some(a=>"risks"===a.sourceDomain)||a.triggerKeywords.some(a=>ab(c.risk).includes(ab(a))))&&e(c.risk,"projectGraph",[c.level,c.mitigation].filter(Boolean).join(" "),c.sourceFiles?.[0]);for(let c of b?.schedule||[])a.fields.some(a=>"schedule"===a.sourceDomain)&&e(c.milestone,"projectGraph",[c.duration,c.startDate,c.endDate].filter(Boolean).join(" "),c.sourceFiles?.[0]);return d.slice(0,24)}(c,a.projectGraph,a.canonicalFacts)}}),g=new Map((b.tablePlans||[]).map(a=>[a.id,a]));for(let a of f)g.set(a.id,a);let h=[...g.values()],i=ac([...b.tableSections||[],...h.map(a=>a.title)]),j=ac([...b.tableRequirements||[],...h.map(a=>`${a.title}:表头必须为“${a.fields.map(a=>a.name).join("、")}”;${a.fields.some(a=>"projectFactOnly"===a.fallbackPolicy)?"项目特有数字、日期、工程量、规格必须来自资料或项目图谱,不得编造。":"可按施工组织设计标准流程填写。"}`)]);return{...b,tableSections:i,tableRequirements:j,tablePlans:h}})}async function ah(a){(0,P.Te)(a.signal);let b=[];if(0===a.scopedFilePaths.length)return b;let c=/资源|人|材|机|材料|设备|清单|工程量|BOQ|报价/u.test(a.chapter.title),d=(c?1.6:1)*(/[、,,与和及]/.test(a.chapter.title)?1.4:1),e=Math.ceil((a.highRisk?18:10)*d),f=(function(a,b=[]){let c=a.sections||[],d=[...a.requiredFacts,...b],e=(0,Q.Cr)(c,a=>(0,Q.Ox)(a),{maxItems:16,maxChars:1200},"retrieval-sections").selected,f=(0,Q.Cr)(d,a=>(0,Q.Ox)(a),{maxItems:16,maxChars:1200},"retrieval-facts").selected,g=/[、,,与和及]/.test(a.title),h=/资源|人|材|机|材料|设备|清单|工程量|BOQ|报价/u.test(a.title),i=/进度|工期|节点/u.test(a.title)?["合同工期","计划工期","日历天","开工","竣工","关键线路","进度计划","施工进度"]:/质量|验收/u.test(a.title)?["质量标准","验收规范","检验批","复验","合格","质量保证","隐蔽验收"]:/安全|危大|风险/u.test(a.title)?["安全措施","风险源","危大工程","应急","检查整改","安全防护","应急预案"]:h?["工程量清单","项目特征","材料设备","规格型号","数量单位","劳动力","机械设备","进场计划","资源保障","主要材料","施工机具","材料供应","设备配置"]:/施工|方案|方法|技术|工艺/u.test(a.title)?["施工方法","工艺流程","技术标准","构造做法","控制要点","施工准备"]:["工程范围","施工方法","控制要点","验收要求"],j=g?[...i,...a.title.split(/[、,,与和及]+/u).map(a=>a.trim()).filter(a=>a.length>=4)]:i,k=[...new Set([a.title,...e,...f,...j].flatMap(a=>a.split(/[\s、,,。;;::()()《》【】\-/]+/u)).map(a=>a.trim()).filter(a=>a.length>=2))],l=(0,Q.Cr)(k,a=>(0,Q.Ox)(a),{maxItems:36,maxChars:1200},"retrieval-tokens").selected,m=g?a.title.split(/[、,,与和及]+/u).map(a=>a.trim()).filter(a=>a.length>=4).map(a=>`${a} ${e.slice(0,6).join(" ")} ${f.slice(0,4).join(" ")}`.trim()):[];return[...new Set([`${a.title} ${e.join(" ")}`.trim(),...f.map(b=>`${a.title} ${b}`.trim()),...e.map(b=>`${a.title} ${b} ${f.slice(0,6).join(" ")}`.trim()),`${a.title} ${j.join(" ")}`.trim(),...m,l.join(" ")].filter(Boolean))]})(a.chapter,a.requiredNeeds).slice(0,e),g=Math.ceil((a.highRisk?24:14)*(c?1.4:1)),h=Math.ceil((a.highRisk?72:42)*d),i=Math.ceil((a.highRisk?72e3:42e3)*d),j=await (0,P.l$)(f,async b=>{var c;(0,P.Te)(a.signal);let d=await a.manager.search(a.projectRoot,b,{scope:"project",filters:{filePaths:a.scopedFilePaths},limit:g,weights:{keyword:.62,vector:.32,rewrite:.9,hybridBonus:.28},generationMode:!1});return(c={chapter:a.chapter,results:d.results.filter(b=>a.scopedFilePaths.includes(b.filePath)),fileRoleByPath:a.fileRoleByPath,fileProcessingByPath:a.fileProcessingByPath,boost:2.4,source:"deep-retrieval"}).results.map(a=>{let b=c.fileProcessingByPath.get(a.filePath);return{chapterId:c.chapter.id,filePath:a.filePath,score:a.score+c.boost+("table"===b?3:"structured_data"===b?2.6:3.2*("bill_of_quantities"===b)),content:a.content,roleId:c.fileRoleByPath.get(a.filePath),processingType:b,sectionTitle:a.sectionTitle,source:c.source}})},{kind:"deepRetrieval",highRisk:a.highRisk});return b.push(...j.flat()),(0,s.QR)(b,{maxItems:h,maxChars:i,preservePinned:!0})}var ai=c(73024),aj=c(15751),ak=c(11248),al=c(95734);function am(a){let b=[],c=new Set;for(let d of a.filter(a=>"table"===a.processingType||"structured_data"===a.processingType||"bill_of_quantities"===a.processingType)){if(c.has(d.filePath))continue;c.add(d.filePath);let a=(0,g.aY)(),f=e.isAbsolute(d.filePath)?d.filePath:ai.existsSync(e.join(a,"knowledgeBase",d.filePath))?e.join(a,"knowledgeBase",d.filePath):e.join(a,d.filePath),h=e.extname(d.filePath).toLowerCase();if(ai.existsSync(f)&&[".xlsx",".xls",".csv"].includes(h))try{let a=aj.readFile(f,{cellDates:!0,sheetStubs:!1});for(let c of a.SheetNames){let e=a.Sheets[c],f=aj.utils.sheet_to_json(e,{header:1,raw:!1,defval:""}).map(a=>a.map(a=>String(a).trim())).filter(a=>a.some(Boolean));if(f.length<2)continue;let g=f.findIndex(a=>a.filter(Boolean).length>=2);if(g<0)continue;let h=f[g].filter(Boolean),i=f.slice(g+1).map(a=>a.slice(0,h.length)).filter(a=>a.some(Boolean));0!==i.length&&b.push({tableType:d.roleId||"table",sheet:c,headers:h,rows:i,sourceFile:d.filePath,sourceRange:e["!ref"]})}continue}catch{}let i=d.content.split("\n").map(a=>a.trim()).filter(Boolean).filter(a=>a.includes("|")||a.includes(" ")||a.includes(","));if(i.length<2)continue;let j=i[0].includes("|")?"|":i[0].includes(" ")?" ":",",k=i.map(a=>a.split(j).map(a=>a.trim()).filter(Boolean)).filter(a=>a.length>1);k.length<2||b.push({tableType:d.roleId||"table",headers:k[0],rows:k.slice(1),sourceFile:d.filePath,sourceRange:d.sectionTitle})}return b}function an(a,b,c){let d=(0,u.Uy)(b,c).map(a=>({field:a,pattern:function(a){let b=a.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&");return RegExp(`${b}[::\\s]+([^\\n,。;;]+)`,"u")}(a.name)})),e=[];for(let b of a)for(let{field:a,pattern:c}of d){if(!(0,u.I2)(b,a))continue;let d=b.content.match(c),f=d?.[1]?.trim();!f||!(f.length<=220)||o(l,f)||p(l,f)||e.some(b=>b.fieldId===a.id&&b.value===f)||e.push({key:a.name,fieldId:a.id,fieldName:a.name,value:f,sourceFile:b.filePath,roleId:b.roleId||"unknown",processingType:b.processingType,confidence:b.score,sourceRef:{filePath:b.filePath,roleId:b.roleId||"unknown",processingType:b.processingType,sectionTitle:b.sectionTitle}})}return e}async function ao(a,b,c,d,e,f){let g=[{type:"fact_extraction",roleId:"llm-json",status:"skipped",message:"LLM JSON 抽取未启用或无可用模型"}],h=Math.max(12e3,Math.floor(Number(process.env.DOCUMENT_FACT_EXTRACTION_MAX_CHARS??45e3))),i=Math.max(8,Math.floor(Number(process.env.DOCUMENT_FACT_EXTRACTION_MAX_ITEMS??48))),j=0,k=[];for(let b of[...a].sort((a,b)=>b.score-a.score).slice(0,i)){let a=(0,P.lG)(b.content).replace(/\s+/gu," ").slice(0,Math.max(800,Math.floor(h/i))),c=`文件:${b.filePath}
17
- 角色:${b.roleId||""}
18
- 处理:${b.processingType||""}
19
- 内容:${a}`;if(k.length>0&&j+c.length>h)break;j+=c.length,k.push(c)}let l=k.join("\n\n---\n\n");if(!l.trim())return{facts:[],stages:g};(0,P.Te)(e);let m=(0,u.Uy)(c,d),n=m.map(a=>`- id=${a.id} name=${a.name} type=auto required=${a.required} sourceRoleIds=${a.sourceRoleIds.join(",")||"不限"} hint=${a.extractionHint||"无"}`).join("\n"),o=await (0,al.bb)(b||"你是文档事实抽取器。",`请严格按下面的动态事实 schema 从资料中抽取事实。只抽取资料明确支持的内容;如果字段限定 sourceRoleIds,必须优先来自对应文件角色;事实取舍和冲突处理遵循规范包字段说明、文件角色和提示词角色配置。
20
- 返回 {"facts":[{"fieldId":"...","fieldName":"...","key":"...","value":"...","sourceFile":"...","roleId":"...","processingType":"reference","confidence":0.8}]}。
21
-
22
- 动态事实 schema:
23
- ${n}
24
-
25
- 资料:
26
- ${l}`,{signal:e,maxTokens:1800,temperature:.1,diagnostics:f});return((0,P.Te)(e),o?.facts?.length)?{facts:o.facts.filter(a=>a.key&&a.value).map(a=>{let b=m.find(b=>b.id===a.fieldId||b.name===a.fieldName||b.name===a.key);return{key:b?.name||a.key,fieldId:b?.id||a.fieldId,fieldName:b?.name||a.fieldName,value:(0,P.lG)(a.value),sourceFile:a.sourceFile||"",roleId:a.roleId||"llm",processingType:a.processingType,confidence:a.confidence??.8,sourceRef:{filePath:a.sourceFile||"",roleId:a.roleId||"llm",processingType:a.processingType}}}),stages:[{type:"fact_extraction",roleId:"llm-json",status:"success",message:`LLM 按动态 schema 抽取 ${o.facts.length} 条事实`}]}:{facts:[],stages:g}}let ap=/(?:\b[A-Z]{1,8}[\w./-]*\d[\w./-]*\b|\b\d+(?:\.\d+)?\s*(?:mm|cm|m|km|㎡|m²|m3|m³|kg|g|t|L|ml|MPa|kPa|℃|%|台|套|个|项|批|次|份|人|小时|分钟|日历天|天|周|月|年|万元|元)\b|\b\d+\s*[×xX]\s*\d+(?:\s*[×xX]\s*\d+)?\b|\b(?:GB|GB\/T|ISO|IEC|IEEE|RFC|API|DB\d*|T\/[A-Z]+)\s*[\w.-]+\b)/giu;function aq(a){return(0,P.lG)(a).replace(/[\u00A0\u2002-\u200B\u3000]/gu," ").replace(/([\p{Script=Han}])\s+([\p{Script=Han}])/gu,"$1$2").replace(/(\d)\s+(日历天|天|个月|月|年|万元|元|㎡|平方米|米|m|mm|MPa|kPa|%)/giu,"$1$2").replace(/(合同|投资|工程|项目)\s*估\s*算\s*(?:价格|价)/gu,"$1估算价").replace(/计划\s*工\s*期/gu,"计划工期").replace(/合同\s*工\s*期/gu,"合同工期").replace(/质量\s*标\s*准/gu,"质量标准").replace(/建设\s*地\s*点/gu,"建设地点").replace(/建设\s*规\s*模/gu,"建设规模").replace(/招标\s*范\s*围/gu,"招标范围").replace(/最高\s*投\s*标\s*限\s*价/gu,"最高投标限价").replace(/招标\s*控\s*制\s*价/gu,"招标控制价").replace(/[::]\s*/gu,":").replace(/\s+/gu," ").trim()}let ar=[{fieldId:"project_name",key:"项目名称",fieldName:"项目名称",pattern:/(?:项目名称|工程名称|招标项目名称)[::\s为是]+([^\n。;;]{2,120})/u},{fieldId:"project_code",key:"项目编号",fieldName:"项目编号",pattern:/(?:项目编号|招标项目编号|工程编号)[::\s为是]+([A-Za-z0-9\-_.()()]{4,80})/u},{fieldId:"owner",key:"招标人",fieldName:"招标人",pattern:/(?:招标人|建设单位|发包人)[::\s为是]+([^\n。;;]{2,120})/u},{fieldId:"project_location",key:"建设地点",fieldName:"建设地点",pattern:/建设地点[::\s为是]+([^\n。;;]{2,100})/u},{fieldId:"project_scale",key:"建设规模",fieldName:"建设规模",pattern:/建设规模[::\s为是]+([^\n。;;]{2,220})/u},{fieldId:"project_scope",key:"招标范围",fieldName:"招标范围",pattern:/招标范围[::\s为是]+([^\n。;;]{2,220})/u},{fieldId:"schedule_requirement",key:"计划工期",fieldName:"周期要求",pattern:/(?:(?:计划工期|合同工期|总工期)[::\s为是约]*|工期[::\s为是约]+)([^\n。;;]{0,40}?\d+(?:\.\d+)?\s*(?:日历天|天|个月|月|年)(?:[^\n。;;]{0,30})?)/u},{fieldId:"quality_standard",key:"质量标准",fieldName:"质量标准",pattern:/质量标准[::\s为是]+([^\n。;;]{1,60})/u},{fieldId:"project_investment_estimate",key:"合同估算价格",fieldName:"项目投资估算",pattern:/(?:合同估算价格|合同估算价|投资估算|估算价格|工程估算价|项目估算价|最高投标限价|招标控制价)[::\s为是约]+([^\n。;;]{0,80}?\d+(?:\.\d+)?\s*(?:万元|元))/u}];function as(a,b){let c=aq((0,P.lG)(b));return!(!a||!c||c.length>260||/###|第\s*\d+\s*页|共\s*\d+\s*页|律师代理费|投标文件的编制|备选投标方案|投标将被否决|投标人提供|投标有效期|电子交易系统|公共资源交易监督管理部门|中标候选|评标委员会|实质性内容作出响应/u.test(c)||/签章|盖章|联系人|联系电话|电话|邮箱|解密|开标|评标|保证金|交易系统|空白|填写|上传|下载|递交/u.test(c))&&("schedule_requirement"===a?c.length<=90&&/\d+(?:\.\d+)?\s*(?:日历天|天|个月|月|年)/u.test(c):"quality_standard"===a?c.length<=40&&/合格|优良|一次性验收|国家.*验收|达到/u.test(c)&&!/工期|投标|技术标准|\d[..、]/u.test(c):"owner"===a?c.length>=4&&c.length<=80&&/公司|局|委员会|中心|处|院|所|校|集团|有限|股份|责任|管理/u.test(c)&&!/将报|监督管理部门|投标人|中标|负责解释|见招标|详见|空白|填写/u.test(c):"project_location"===a?c.length<=120&&!/见招标公告|详见|投标/u.test(c):"project_scope"===a?c.length<=220&&!/^[((]\s*\d+[))]/u.test(c)&&!/具备.{0,24}(?:证书|考核合格|安全生产考核)/u.test(c)&&!/^见(?:招标|投标人|前附)/u.test(c):"project_code"===a?/^[A-Za-z0-9\-_.()()]+$/u.test(c):"project_investment_estimate"===a?c.length<=100&&/\d+(?:\.\d+)?\s*(?:万元|元)/u.test(c):c.length<=220)}function at(a){let b=[],c=new Set;for(let d of a)for(let a of aq(d.content).split(/\r?\n/u).flatMap(a=>{let b=a.replace(/\s+/gu," ").trim();return b.length>260?b.split(/(?=\d+(?:\.\d+)?\s*[^\s::]{2,12}[::])/u):[b]}).filter(Boolean))if(!/报价明细|综合单价|税率|增值税|利润|结算/u.test(a)||/合同估算价|合同估算价格|投资估算|最高投标限价|招标控制价/u.test(a))for(let e of ar){let f=e.pattern.exec(a),g=f?.[1]?.trim();if(!g||!as(e.fieldId,g))continue;let h=`${d.filePath}:${e.fieldId}:${g}`;c.has(h)||(c.add(h),b.push({key:e.key,fieldName:e.fieldName,fieldId:e.fieldId,value:g,sourceFile:d.filePath,roleId:d.roleId||"project_basic_fact",processingType:d.processingType||"reference",confidence:Math.max(.82,d.score||.82),sourceRef:{filePath:d.filePath,roleId:d.roleId||"project_basic_fact",processingType:d.processingType||"reference",sectionTitle:d.sectionTitle}}))}return b.slice(0,80)}function au(a,b=l){let c=[],d=new Set;for(let e of a){let a=`${e.roleId||""} ${e.processingType||""} ${e.filePath} ${e.sectionTitle||""}`;if(!/drawing|table|bill|boq|draw|data|sheet|spec|standard|record|report|表格|数据|规格|参数|标准|记录|报告|清单|图纸|说明/u.test(a)&&e.score<.75)continue;let f=(0,P.lG)(e.content).replace(/\s+/gu," ");for(let a of f.matchAll(ap)){let g=a[0].trim();if(!g||o(b,g))continue;let h=Math.max(0,(a.index||0)-40),i=Math.min(f.length,(a.index||0)+g.length+40),j=f.slice(h,i);if(p(b,j)||q(b,j))continue;let k=`${e.filePath}:${g}`;d.has(k)||(d.add(k),c.push({key:"精确参数",fieldName:"技术参数",fieldId:"technical_parameter",value:g,sourceFile:e.filePath,roleId:e.roleId||"precise_fact",processingType:e.processingType||"precise",confidence:Math.max(.7,e.score||.7),sourceRef:{filePath:e.filePath,roleId:e.roleId||"precise_fact",processingType:e.processingType||"precise",sectionTitle:e.sectionTitle}}))}}return c.slice(0,240)}function av(a){return`${a.key} ${a.fieldName||""} ${a.value} ${a.roleId} ${a.processingType||""} ${a.sourceFile}`}function aw(a){return/合同估算价|合同估算价格|投资估算|估算价格|工程估算价|项目估算价|最高投标限价|招标控制价/u.test(a)}function ax(a){let b=av(a);return!aw(b)&&/投标保证金|发票类型|开标时间|公共资源交易监督管理|不良行为记录|投诉举报|资质投诉|投标承诺|违约金|中标服务费|交易平台|保证金账户|投标有效期|报价明细|投标报价|单价|合价|税率|增值税|利润|结算/u.test(b)}function ay(a){return(0,P.lG)(a).replace(/\s+/gu," ").trim()}function az(a,b=[]){return[...new Set([a,...b,...a.split(/[\s、,。;;::/\\_-]+/u)].map(ay).filter(a=>a.length>=2))]}function aA(a,b,c){var d,e;let f=ay(c.label);if(!f||o(b,f)||p(b,f))return;let g=c.id||(d=c.source,e=c.fieldId,`${d}:${e||f}`.toLowerCase().replace(/[^\p{L}\p{N}]+/gu,"-").replace(/^-|-$/gu,"")||`${d}-${Math.random().toString(36).slice(2,8)}`),h=c.queries?.length?c.queries.map(ay).filter(Boolean):az(f),i=a.find(a=>a.id===g||a.label===f);if(i){i.required=i.required||c.required,i.queries=[...new Set([...i.queries,...h])];return}a.push({...c,id:g,label:f,queries:h})}function aB(a,b,c,d,e,f=[]){"do_not_use"!==c.usagePolicy&&"diagnostic_only"!==c.usagePolicy&&"forbidden"!==c.derivationPolicy&&aA(a,b,{label:c.name,category:c.category,required:e,source:d,fieldId:c.id,queries:az(c.name,[...c.aliases,...f])})}function aC(a){let b=new Set;return a.filter(a=>{let c=`${a.sourceFile}:${a.key}:${a.value}`;return!b.has(c)&&(b.add(c),!0)})}function aD(a){let b=a.profile||l,c=aC([...a.factsModel.factIndex.parameterFacts,...a.factsModel.factIndex.tableFacts,...a.factsModel.factIndex.drawingFacts,...a.factsModel.factIndex.billFacts,...a.factsModel.factIndex.reliableFacts]);return a.needs.map(d=>{let e=aC(c.filter(a=>(function(a,b,c){let d=av(a);if(ax(a)||o(c,d)||p(c,d))return!1;if(b.fieldId&&a.fieldId===b.fieldId||n(c,a.fieldName||a.key)?.id===b.fieldId||b.queries.filter(a=>a.length>=2).some(a=>d.includes(a)))return!0;let e=n(c,b.label);return!!(e&&[e.name,...e.aliases].some(a=>a.length>=2&&d.includes(a)))})(a,d,b))).sort((a,b)=>(b.confidence||0)-(a.confidence||0)),f=(a.evidence||[]).filter(a=>(function(a,b,c){let d=`${a.filePath} ${a.roleId||""} ${a.processingType||""} ${a.sectionTitle||""} ${a.content}`;return!(o(c,d)||p(c,d))&&b.queries.some(a=>a.length>=2&&d.includes(a))})(a,d,b)),g=Math.max(0,...e.map(a=>a.confidence||0)),h=0===e.length&&0===f.length?"missing":g>0&&g<.58?"low_confidence":"satisfied";return{need:d,facts:e,evidence:f,status:h}})}function aE(a){return(0,P.lG)(a).replace(/\s+/gu," ").trim().slice(0,220)}function aF(a,b=[],c=[],d,e=l){let f=b=>a.filter(a=>b.some(b=>`${a.key} ${a.fieldName||""}`.includes(b))),g=b=>a.filter(a=>a.processingType===b||a.roleId.includes(b)),h=a.filter(a=>{let b=`${a.key} ${a.fieldName||""} ${a.value}`;return/\d|DN|φ|Φ|mm|cm|m²|m3|m³|MPa|kPa|℃|%|GB|ISO|IEC|IEEE|RFC|API|台|套|个|项|批|次|份|人|㎡/iu.test(b)&&(!o(e,b)||aw(b))&&!p(e,b)}),i=a.filter(a=>"table"===a.processingType||"structured_data"===a.processingType||"bill_of_quantities"===a.processingType||/bill|boq|table|sheet|data|表格|列表|明细|数据/u.test(`${a.roleId} ${a.sourceFile}`)),j=a.filter(a=>/项目名称|工程名称|项目编号|招标项目编号|招标人|建设单位|发包人|建设地点|建设规模|招标范围|计划工期|合同工期|周期要求|质量标准|合同估算|投资估算|最高投标限价|招标控制价/u.test(`${a.key||""}${a.fieldName||""}${a.fieldId||""}`)).slice(0,80),k=function(a,b,c,d){let e=a.filter(a=>p(d,av(a))||q(d,av(a))),f=a.filter(a=>{let b=av(a);return a.confidence>=.58&&!ax(a)&&!o(d,b)&&!p(d,b)&&!q(d,b)}),g=[...b.filter(a=>!ax(a)),...f.filter(a=>/\d|DN|φ|Φ|mm|cm|m²|m3|m³|MPa|kPa|℃|%|GB|JGJ|ISO|IEC|台|套|个|项|批|次|份|人|㎡|型号|规格|数量|单位/iu.test(av(a)))].filter((a,b,c)=>c.findIndex(b=>b.sourceFile===a.sourceFile&&b.value===a.value&&b.key===a.key)===b).slice(0,360),h=f.filter(a=>"table"===a.processingType||/table|sheet|表格|清单|明细|数据|参数行摘要/u.test(av(a))),i=f.filter(a=>"drawing"===a.processingType||/drawing|draw|dwg|图纸|设计|尺寸|标高|管径|做法/u.test(av(a)));return{reliableFacts:f.slice(0,500),parameterFacts:g,tableFacts:h.slice(0,240),drawingFacts:i.slice(0,240),billFacts:c.slice(0,240),diagnostics:e.slice(0,120)}}(a,h,i,e);return{project:j,schedule:f(["工期","开工","竣工","节点","周期"]),quality:f(["质量","验收"]),safety:f(["安全","风险"]),resources:f(["劳动力","材料","机械","设备","资源"]),tables:b,drawings:g("drawing"),bills:i,preciseFacts:h,rules:g("rule"),specifications:g("specification"),schemaFacts:function(a,b){let c={};for(let d of b?.factFields||[])c[d.id]=a.filter(a=>a.fieldId===d.id||a.key===d.name||a.fieldName===d.name);return c}(a,d),factIndex:k,missing:[...new Set(c)],conflicts:function(a,b,c=l){let d=(b?.factFields.map(a=>a.name)||[...new Set(a.map(a=>a.fieldName||a.key))]).filter(a=>(function(a,b){let c=n(b,a);return c?"single"===c.cardinality&&"ignore"!==c.conflictPolicy&&"allow_multiple"!==c.conflictPolicy:/项目名称|工程名称|招标人|建设地点|建筑面积|结构形式|层数|工期|质量标准|合同价格形式|绿色建筑等级|投标有效期|质保期/u.test(a)})(a,c)),e=[];for(let b of d){let d=a.filter(a=>a.key===b||a.fieldName===b||n(c,a.fieldName||a.key)?.name===b),f=new Map;for(let a of d){let b=function(a,b){let c=(0,P.lG)(a).trim();if(p(b,c)||o(b,c)||(c.match(/�|￿/gu)?.length||0)>=2||Array.from(c).some(a=>{let b=a.charCodeAt(0);return 65533===b||b<32&&9!==b&&10!==b&&13!==b})||/签章|盖章|联系人|联系电话|电话|邮箱|解密|开标|评标|保证金|交易系统|空白|填写|上传|下载|递交/u.test(c)||/\|/u.test(c)||/^#+\s*/u.test(c)||/见(?:招标公告|投标人须知|前附表|本项目|补疑)|资料参数行摘要|公共资源交易监督管理|开评标程序|监管部门/u.test(c)||/是否|符合|采购范围|规定的投标截止时间|电子交易系统/u.test(c)&&/\d{3,}/u.test(c))return"";let d=c.match(/\d+\s*日历天/u)?.[0]?.replace(/\s+/gu,"");if(d&&/工期|日历天|开工日期|竣工/u.test(c))return d;let e=(0,ak.K3)((0,P.lG)(c));return e&&!(e.length>80)&&/[\d年月日%]|合格|一星|二星|三星|总价合同|单价合同|承台|框架|装配式/u.test(c)?e:""}(a.value,c);b&&f.set(b,[...f.get(b)||[],a])}if(f.size>1){let a=[...f.values()].slice(0,4).map(a=>`${(0,P.lG)(a[0].value).slice(0,120)}(${[...new Set(a.map(a=>a.sourceFile))].slice(0,3).join("、")})`).join(" vs ");e.push(`事实冲突:${b} 存在多个来源值:${a}`)}}return e.slice(0,8)}(a,d,e)}}var aG=c(80439),aH=c(74329);async function aI(a,b,c,d){let e=Date.now();try{return await c()}finally{let c=Date.now();a.metrics.push({name:b,startedAt:e,endedAt:c,durationMs:c-e,meta:d})}}async function aJ(a){(0,P.Te)(a.signal);let b=a.repairType||function(a){let b=a.join("\n");for(let a of aH.NP)if(a.pattern.lastIndex=0,a.pattern.test(b))return a.type;return"generic"}(a.issues),c=a.contextChapters?.length?`
27
-
28
- 周边章节上下文(仅用于衔接,禁止改动其中内容):
29
- ${a.contextChapters.map(a=>`【${a.title}】
30
- ${a.content.slice(0,2500)}`).join("\n\n")}`:"",d=await (0,al.bb)(["你是章节局部修复专家。只返回 JSON patch,不返回完整章节,不重写无问题内容。",aH._$[b]||aH._$.generic,v.rd,a.forbidDrawingImages?"图片类资料只作为文本事实来源,禁止插入图片或 Markdown 图片语法。":"","每个 patch 必须能通过 originalText 或 targetStart/targetEnd 在原章节中唯一定位;replacement 只替换该局部片段。","只修复列出的问题,不得整章重写,不得删除无问题小节,不得改变一级/二级章节结构。","如问题涉及缺少正式表格,replacement 必须包含 Markdown 表名、表头、分隔线和至少一行数据;不得只写“见下表”或空表。","如问题涉及提示词要求的关键词或禁用内容,只在相关段落自然补齐或替换,不得堆砌关键词。","禁止新增证据摘要中没有的信息;无法安全定位的问题不要生成 patch。",'返回 JSON:{"patches":[{"originalText":"原局部文本","targetStart":"定位起始文本","targetEnd":"定位结束文本","replacement":"替换后的局部文本","reason":"修复原因"}]}',a.promptTexts].filter(Boolean).join("\n\n"),[`模板:${a.template.name}`,`章节:${a.chapter.title}`,a.requirement?`用户要求:${a.requirement}`:"",`需要局部修复的问题:
31
- ${a.issues.map(a=>`- ${a}`).join("\n")}`,a.chapter.evidence.length?`本章证据摘要:
32
- ${(0,s.ks)((0,s.QO)({id:a.chapter.id,title:a.chapter.title,purpose:a.chapter.title,queries:[],requiredFacts:[]},a.chapter.evidence),{maxChars:(0,s.Pc)((0,w.V7)(a.chapter.content),5e3,14e3)})}`:"","当前章节 Markdown:",a.chapter.content,c].filter(Boolean).join("\n\n"),{maxTokens:2200,temperature:0,signal:a.signal,diagnostics:a.diagnostics});(0,P.Te)(a.signal);let e=a.chapter.content,f=0;for(let b of Array.isArray(d?.patches)?d.patches:[]){let c=function(a){var b;let c=a.patch.replacement?.trim(),d=(b=a.content,Math.max(2600,Math.min(16e3,Math.ceil(.45*(0,w.V7)(b)))));if(!c||c.length>d||a.forbidDrawingImages&&/!\[[^\]]*\]\([^)]*\)/iu.test(c))return{content:a.content,applied:!1};let e=function(a,b){let c=b.originalText?.trim();if(c&&a.indexOf(c)===a.lastIndexOf(c))return c;let d=b.targetStart?.trim(),e=b.targetEnd?.trim();if(!d||!e)return;let f=a.indexOf(d),g=a.indexOf(e,f+d.length);if(f<0||g<0)return;let h=g+e.length,i=a.slice(f,h);return a.indexOf(i)===a.lastIndexOf(i)?i:void 0}(a.content,a.patch);if(!e||e.length>d)return{content:a.content,applied:!1};let f=(0,v.kT)((0,v.FD)(a.content.replace(e,c),a.forbidDrawingImages));return!function(a,b){let c=(a.match(/```/gu)||[]).length,d=b.replace(/^第[一二三四五六七八九十百千万]+章\s*/u,"").trim();return c%2==0&&(!d||a.includes(d))&&!/^\s*$/u.test(a)}(f,a.title)||(0,w.V7)(f)<Math.floor(.65*(0,w.V7)(a.content))?{content:a.content,applied:!1}:{content:f,applied:f!==a.content}}({content:e,patch:b,title:a.chapter.title,forbidDrawingImages:a.forbidDrawingImages});e=c.content,c.applied&&(f+=1)}return{content:e,appliedCount:f,repairType:b}}function aK(a,b,c){return function(a,b){let c=e.resolve(a),d=function(a,b){let c=e.resolve(a);if(e.isAbsolute(b))return e.resolve(b);let d=e.resolve(c,"knowledgeBase",b);return ai.existsSync(d)?d:e.resolve(c,b)}(c,b);return d===c||d.startsWith(`${c}${e.sep}`)}(a,b)&&c.size>0&&(function(a,b){let c=e.isAbsolute(b)?b:e.join(a,b),d=e.isAbsolute(b)?e.relative(a,b):b;return[b,c,d,e.join(a,d)]})(a,b).some(a=>c.has(a))}function aL(a){return a.map(a=>`## [${a.roleId}/${a.category}] ${a.name}
33
- ${function(a){let b=a.replace(/```([\s\S]*?)```/gu,(a,b)=>/<OUTLINE>|\|\s*[^\n]+\s*\||#{1,6}\s+|必须|禁止|不得|应当|要求|规则|格式|输出|表格|章节|小节|正文/u.test(b)?`
34
- ${b.trim()}
35
- `:"\n【示例代码块已省略:仅作为格式参考,不作为当前文档事实】\n").split(/\r?\n/u),c=[],d=!1,e=!1;for(let a of b){let b=a.trim();if((0,t.bl)(b)&&(e=!0),e){c.push(a),(0,t.Ui)(b)&&(e=!1);continue}let f=/^(?:#+\s*)?(?:示例|样例|范例|例如|参考示例|示例数据|示例正文|示例目录|example|sample)\s*[::]?/iu.test(b),g=/(?:不得|禁止|必须|应当|要求|规则|格式|输出|保留|只返回|不要|表格|章节|小节|正文|目录|封面)/u.test(b);if(f&&!g){c.at(-1)?.includes("示例内容已省略")||c.push("【示例内容已省略:仅作为格式参考,不作为当前文档事实】"),d=!0;continue}if(d){if(!b){d=!1;continue}if(!(/^(?:#+\s*)?(?:规则|要求|输出|格式|禁止|注意|正文|章节|小节|表格|风格|校验)/u.test(b)||/\|\s*[^\n]+\s*\|/u.test(b)))continue;d=!1}c.push(a)}return c.join("\n").replace(/\n{3,}/gu,"\n\n").trim()}(a.content)}`).join("\n\n")}var aM=c(2773),aN=c(95393);function aO(a,b){let c=`${a} ${b}`,d=[/概况|工程|项目/u.test(c)?"必须落入项目名称、范围、地点、规模、工期、质量目标等资料事实;说明编制边界。":"",/部署|总体|组织/u.test(c)?"必须说明施工组织逻辑、施工段/专业接口、资源进场和管理闭环。":"",/进度|工期/u.test(c)?"必须围绕总工期、关键线路、资源保障、穿插施工和纠偏机制展开。":"",/质量/u.test(c)?"必须覆盖材料验收复验、过程检查、隐蔽验收、整改复验和质量资料归档。":"",/安全|文明|风险|危大/u.test(c)?"必须覆盖风险识别、人员设备、临电消防、现场文明、检查整改和应急响应。":"",/资源|材料|设备|劳动力/u.test(c)?"必须说明资源配置依据、进场验收、保管调配,并与工期和质量目标一致。":"",/施工|工艺|技术|方案/u.test(c)?"必须写清施工准备、工艺流程、关键控制点、验收要求和资料依据;每个分项工程方案必须落位至少 4 个工艺参数(mm、MPa、间距、偏差、坡度、养护天数、试验压力、搭接长度等),参数来自绑定资料或行业通用规范值,不得编造;纯设备配置型内容必须写型号、规格、容量、数量参数。":""].filter(Boolean);return["【小节专业任务卡】",`任务对象:${b}`,...d.length?d:["必须结合本项目资料明确事实说明对象范围、实施方法、控制要点、验收要求和资料闭环,避免泛化套话。"],"禁止套话:不得使用“本小节围绕……展开”“结合绑定项目资料、施工组织安排和现场实施条件”“交底覆盖率按100%控制”等模板化开篇;不得只写“加强管理、严格把控、确保质量”式口号;每个三级小节必须写与本节标题对应的专属内容,不得与其他小节内容相同或近似。"].join("\n")}function aP(a){return(0,t.GQ)(a.replace(/\*+/gu,"")).replace(/^第[一二三四五六七八九十百千万\d]+[章节篇部分、..\s-]*/u,"").replace(/^\d+(?:\.\d+)*(?:[..、]|\s)+/u,"").replace(/^[-—–]\s*/u,"").replace(/[<>]/gu,"").replace(/[::。;;,.,]+$/gu,"").replace(/\s*[((][^()()]{0,40}[a-zA-Z]{3,}[^()()]{0,40}[))]\s*$/u,"").trim()}function aQ(a){let b=aP(a).replace(/\s+/gu,"");return!!(!b||/^(?:目录|章节|大纲|要求|说明|注意|输出|格式|示例|例如|写法|占位|提示)$/u.test(b))||/^(?:判断|判定|识别|确认)?是否(?:涉及|涉|需要|适用)|^(?:如|若|如果)(?:涉及|不涉及|适用|不适用)|(?:根据|结合).{0,12}(?:实际情况|项目情况|资料情况).{0,8}(?:判断|确定|编写|生成)|按需(?:生成|编写)|视情况|判断后|生成要求|编写要求|说明要求|注意事项/u.test(b)}function aR(a,b){let c=aP(a),d=aP(b);if(c.length<4||c.length>60||c===d||aQ(c)||/^(?:目标与范围|资料依据|实施内容|质量控制|概述|总体要求)$/u.test(c)||/^(?:雨季|冬季|高温|台风|大风等特殊气候|雨季、冬季、高温、台风、大风等特殊气候)$/u.test(c)||/如需|应由|大模型|提示词|上下文|动态规划|OUTLINE|章节生成|按照.*明确指定|需求和资料|JSON|小节标题/u.test(c)||/(.)\1/u.test(c))return!0;let e=d.match(/[\p{L}\p{N}]{2,6}$/u)?.[0]||"";return!(!(e.length>=2&&/^.{2,8}\p{L}$/u.test(c)&&c.endsWith(e.slice(-1)))||c.includes(e))}function aS(a,b){let c=aP(a).replace(/[\s()()::.。;;,,、-]/gu,""),d=aP(b).replace(/[\s()()::.。;;,,、-]/gu,"");return!!c&&!!d&&(c===d||c.includes(d)||d.includes(c))}function aT(a){return/判断是否涉及|若涉及|若不涉及|如果涉及|如果不涉及|不涉及.*如实说明|根据项目所在地气候特征|根据计划施工周期|根据.*施工周期|按需|视情况|可设置|专项小节/u.test(a)}function aU(a,b=""){let c=aT(b);return Array.from(new Set(a.map(aP).filter(a=>!(a.length<2||a.length>30||aQ(a)||/必须|强制|排序|设置|输出|独立|之后|之前|小节|其他必要/u.test(a)||c&&/^(?:雨季|冬季|高温|台风|大风等特殊气候|雨季、冬季、高温、台风、大风等特殊气候)$/u.test(a)))))}function aV(a){return a.split(/[、,,//]/u).map(a=>a.trim().replace(/["“”'‘’《》<>]/gu,"")).filter(a=>a.length>=2&&a.length<=24&&!/[。;;::]/u.test(a))}function aW(a){let b=new Set;for(let c of[/(?:关键词|核心要点|必含关键词|必须包含的关键词)[::]\s*([^。;;\n]+)/gu,/(?:必须|应当|需要|全文必须)包含(?:以下|如下)?(?:关键词|核心词|术语)[::]\s*([^。;;\n]+)/gu])for(let d of a.matchAll(c))for(let a of aV(d[1]||""))/表格|章节|小节|正文|目录|封面/u.test(a)||b.add(a);return[...b].slice(0,24)}function aX(a){let b=new Set;for(let c of[/(?:禁用词|禁止词|不得使用词|禁用表达|禁止表达)[::]\s*([^。;;\n]+)/gu,/(?:禁止|不得|严禁|杜绝)出现(?:以下|如下)?(?:词语|用词|表达|话术)[::]\s*([^。;;\n]+)/gu])for(let d of a.matchAll(c))for(let a of aV(d[1]||""))b.add(a);return[...b].slice(0,40)}function aY(a,b){return a.split(/[。;;\n]/u).map(a=>a.trim()).filter(a=>a.length>=4&&b.test(a)).slice(0,24)}function aZ(a,b){let c=RegExp(`(?:生成|包含|输出|需要|保留|设置|编制|制作)[^。;;\\n]{0,12}${b}|${b}[^。;;\\n]{0,12}(?:必须|应当|需要|保留|生成|输出|包含)`,"u").test(a);return RegExp(`(?:不要|不需要|不允许|不得|禁止|严禁|不输出|不生成|无需)[^。;;\\n]{0,12}${b}|${b}[^。;;\\n]{0,12}(?:不要|不需要|不允许|不得|禁止|严禁|不输出|不生成|无需)`,"u").test(a)?"forbidden":c?"required":"unspecified"}function a$(a=[],b){let c=[];for(let d of a){let a=aP(d);!(!a||aR(a,b))&&(c.some(b=>aS(b,a))||c.push(a))}return c}async function a_(a){var b,c,d,e;let f=(0,s.ks)((0,s.QO)(a.chapter,a.evidence),{maxChars:(0,s.Pc)(a.targetWords,5e3,12e3)}),g=(b=a.structuralRules,c=a.chapter,d=a.chapterIndex,(b||[]).filter(a=>!!(void 0!==a.chapterIndex&&void 0!==d&&a.chapterIndex===d||a.chapterTitle&&aS(a.chapterTitle,c.title)))),h=g.flatMap(a=>a.requiredSections).sort((a,b)=>(a.order||0)-(b.order||0)).map(a=>a.title),i=function(a,b,c,d){let e=a.title,f=/质量|安全|工期|进度|物资|材料|机械|设备|劳动力|危大|专项|文明|总平面|施工方法|施工方案/u.test(e),g=b>=14e3?6:b>=8e3?5:b>=5e3||b>=3e3?4:3;f&&(g=Math.max(g,4));let h=new Set((c.map(a=>`${a.sectionTitle||""}
36
- ${a.content}`).join("\n").slice(0,3e4).match(/\d+(?:\.\d+)?\s*(?:mm|cm|m|km|㎡|m²|m3|m³|kg|g|t|L|ml|MPa|kPa|℃|%|台|套|个|项|批|次|份|人|小时|分钟|日历天|天|周|月|年|万元|元)|DN\s*\d+|Φ\s*\d+|φ\s*\d+|C\d{2,}|HRB\d+|GB\/?T?\s*[\w.-]+|JGJ\s*[\w.-]+/giu)||[]).map(a=>a.replace(/\s+/gu,""))).size;return h>=20?g=Math.max(g,5):h>=10&&(g=Math.max(g,4)),Math.max(g,d)}(a.chapter,a.targetWords,a.evidence,h.length),j=Math.max(i,Math.min(7,a.targetWords>=8e3?7:6)),k=await (0,al.bb)('你是专业文档结构规划专家。\n只根据用户提示词、章节标题和真实绑定资料规划本章二级小节;不得使用"目标与范围、资料依据、实施内容、质量控制"等通用占位小节凑数。\n施工组织、技术措施、资源配置、质量、安全、工期、材料、设备、劳动力、危大工程等核心章节必须拆成足够的专业工作面,不得只输出两个泛化小节。\n不得把提示词条件句或短语碎片作为小节标题,例如"判断是否涉、是否涉及、如涉及、雨季、冬季、高温、台风、大风等特殊气候"。\n只返回 JSON。',[`文档模板:${a.template.name}`,`章节标题:${a.chapter.title}`,a.chapter.purpose&&!aR(a.chapter.purpose,a.chapter.title)?`章节目的:${a.chapter.purpose}`:"",a.requirement?`用户要求:${a.requirement}`:"",a.projectContext?`上下文:
37
- ${a.projectContext}`:"",a.roleContext,a.promptTexts?`配置写作主控提示词:
38
- ${a.promptTexts}`:"",h.length?`系统已从提示词解析出本章强制二级小节,必须按此顺序置于本章小节最前,不得删除、改名或重排:${h.join("、")}`:"",f?`真实绑定资料:
39
- ${f}`:"",`请输出 ${i}-${j} 个适合直接成稿的二级小节标题。标题必须具体、业务相关、能承载真实资料;每个标题控制在 16 个汉字以内,避免多个小节表达同一内容。核心章节不得只输出"总体部署与责任分工、实施流程与关键控制"两个泛化小节。`,'JSON 格式:{"sections":["小节标题1","小节标题2"]}'].filter(Boolean).join("\n\n"),{maxTokens:1600,temperature:.1,signal:a.signal,diagnostics:a.diagnostics}),l=Array.from(new Set(function(a){let b=aP(a),c=[],d=/体系|措施|管理|保障|方案|要求|计划|控制|配置/u,e=a=>{let b=/^(.*?)([^与和及、,,;;]+(?:[与和及][^与和及、,,;;]+)+)(的.+)$/u.exec(a);if(!b)return!1;let d=b[1]||"",e=b[3]||"";for(let a of b[2].split(/[与和及]/u))c.push(aP(`${d}${a}${e}`));return!0},f=a=>{let b=a.split(/[、,,]/u).map(aP).filter(Boolean);if(b.length>1&&b.every(a=>a.length>=4&&d.test(a))){for(let a of b)e(a)||c.push(a);return!0}let f=/^(.*?)([^、,,;;]+(?:[、,,][^、,,;;]+)+)(的.+)$/u.exec(a);if(!f)return!1;let g=f[1]||"",h=f[3]||"";for(let a of f[2].split(/[、,,]/u))c.push(aP(`${g}${a}${h}`));return!0};for(let a of b.split(/[;;]/u)){if(f(a)||e(a))continue;let d=aP(a);d&&d!==b&&c.push(d)}return Array.from(new Set(c)).filter(c=>c.length>=4&&c.length<=60&&c!==b&&!aR(c,a))}(a.chapter.title)));for(let b of(k?.sections||[]).map(aP).filter(b=>!aR(b,a.chapter.title)))l.some(a=>a.includes(b)||b.includes(a))||l.push(b);for(let b of[...[a.chapter.title,...a.chapter.requiredFacts||[],...a.chapter.queries||[]].flatMap(a=>String(a||"").split(/[;;。\n]/u)).map(aP).filter(b=>!aR(b,a.chapter.title)),...(e=a.chapter.title,/质量/u.test(e)?["质量目标与质量管理体系","关键工序质量控制措施","材料设备进场验收与检验","质量检查试验与验收程序","质量通病防治与整改闭环","成品保护与资料管理"]:/安全/u.test(e)?["安全生产管理体系","危险源辨识与分级管控","现场安全防护措施","临时用电与机械设备安全管理","应急处置与安全检查整改","安全教育培训与交底"]:/工期|进度/u.test(e)?["总工期目标与节点安排","施工进度计划编制原则","关键线路与工序穿插安排","资源投入与工期保障措施","进度偏差纠偏与动态调整","工期风险识别与应对措施"]:/物资|材料/u.test(e)?["主要材料设备需求分析","材料采购与进场计划","材料验收复试与保管","周转材料配置与使用管理","材料供应风险与保障措施"]:/机械|设备/u.test(e)?["主要机械设备配置原则","机械设备进退场计划","机械设备调度与运行管理","机械设备维护保养与安全检查","关键设备保障措施"]:/劳动力/u.test(e)?["劳动力配置原则","各阶段劳动力投入计划","专业工种与特种作业人员配置","劳动力动态调配措施","劳务管理与教育交底"]:/文明|环保/u.test(e)?["现场封闭与场容场貌管理","环境保护与污染防治措施","材料设备定置化管理","职业健康与消防文明管理","文明施工检查与整改"]:/总平面|平面布置/u.test(e)?["施工总平面布置原则","临时道路与材料堆场布置","临时用水用电及排水布置","办公生活与加工区域布置","总平面动态调整与管理"]:/危大|专项/u.test(e)?["危大工程识别与清单管理","专项施工方案编制与审批","专家论证与技术交底","现场实施监测与旁站管理","应急处置与验收销项"]:/施工方法|施工方案|主要/u.test(e)?["总体施工部署与流程安排","主要分部分项施工方法","关键工序技术控制要点","资源配置与穿插组织","质量安全与成品保护措施"]:["总体部署与责任分工","实施流程与关键控制","资源配置与资料依据","质量安全与风险控制","检查验收与闭环管理","资料记录与成果移交"]).filter(b=>!aR(b,a.chapter.title))]){if(l.length>=i)break;l.some(a=>a.includes(b)||b.includes(a))||l.push(b)}return(function(a,b,c){let d=a$(c.flatMap(a=>a.requiredSections).sort((a,b)=>(a.order||0)-(b.order||0)).map(a=>a.title),b);for(let c of a$(a,b))d.some(a=>aS(a,c))||d.push(c);return d})(l,a.chapter.title,g).slice(0,Math.max(j,h.length))}let a0=[{id:"earthwork-excavation",name:"土方开挖",aliases:["土方","基坑开挖","土方开挖","挖土"],process:["测量放线","标高复核","分层开挖","边坡修整","基底验槽"],params:["分层开挖厚度≤2m","基底标高偏差0~-50mm","边坡坡度按土质取1:0.5~1:1","预留200~300mm人工清底"],acceptance:["基底验槽","钎探记录","标高与轴线复核","隐蔽验收记录"],standards:["GB 50202-2018 建筑地基基础工程施工质量验收标准"]},{id:"foundation-pit-support",name:"基坑支护",aliases:["基坑支护","钢板桩","土钉墙","支护桩","冠梁"],process:["测量定位","支护桩成孔","钢筋笼制安","混凝土浇筑","冠梁施工","分层开挖","位移监测"],params:["桩位偏差≤50mm","垂直度≤1%","冠梁顶标高偏差\xb110mm","监测频率:开挖期每天1次","报警值按设计位移速率3mm/d"],acceptance:["桩身完整性检测","锚杆拉拔试验","基坑监测日报","专项方案审批记录"],standards:["JGJ 120-2012 建筑基坑支护技术规程","GB 50497-2019 建筑基坑工程监测技术标准"]},{id:"pile-foundation",name:"桩基工程",aliases:["桩基","钻孔灌注桩","预制桩","静压桩","PHC管桩"],process:["测量定位","成孔(压桩)","清孔验收","钢筋笼制安","混凝土灌注","桩身检测"],params:["桩径偏差\xb15mm","沉渣厚度≤50mm(端承桩)","充盈系数≥1.0","桩顶标高偏差\xb110mm","静载试验不少于总桩数1%且≥3根"],acceptance:["桩基静载试验","低应变/声波透射检测","成孔记录","钢筋隐蔽验收"],standards:["JGJ 94-2008 建筑桩基技术规范","GB 50202-2018"]},{id:"rebar-works",name:"钢筋工程",aliases:["钢筋","钢筋绑扎","钢筋加工","钢筋连接"],process:["翻样下料","加工成型","运输堆放","绑扎安装","隐蔽验收"],params:["直螺纹接头拧紧力矩值按规格控制","接头错开≥35d且≥500mm","保护层垫块间距≤1m","绑扎搭接长度按图集16G101"],acceptance:["钢筋原材复试","接头工艺检验","隐蔽工程验收记录","保护层实测"],standards:["GB 50204-2015 混凝土结构工程施工质量验收规范","JGJ 18-2012 钢筋焊接及验收规程"]},{id:"formwork-works",name:"模板工程",aliases:["模板","模板支撑","高支模","脚手架模板"],process:["方案编制","立杆搭设","主次龙骨铺设","面板安装","验收挂牌","拆模申请"],params:["立杆间距≤900\xd7900mm(危大)","扫地杆距地≤200mm","水平杆步距≤1500mm","剪刀撑连续设置","拆模强度:板≥75%设计强度"],acceptance:["高支模专项方案论证","架体验收挂牌","沉降变形监测","拆模令"],standards:["JGJ 162-2008 建筑施工模板安全技术规范","JGJ 130-2011 建筑施工扣件式钢管脚手架安全技术规范"]},{id:"concrete-works",name:"混凝土工程",aliases:["混凝土","砼浇筑","混凝土浇筑","振捣"],process:["浇筑申请","坍落度检测","分层浇筑","振捣密实","收面养护","试块留置"],params:["坍落度按配比\xb130mm","分层浇筑厚度≤500mm","振动棒快插慢拔","养护≥7d(掺外加剂≥14d)","标养试块每100m\xb3≥1组"],acceptance:["坍落度检测记录","试块标养与同条件报告","混凝土外观检查","强度评定"],standards:["GB 50204-2015","GB/T 50107-2010 混凝土强度检验评定标准"]},{id:"steel-structure",name:"钢结构工程",aliases:["钢结构","钢构件","焊接","高强螺栓"],process:["深化设计","构件加工","进场验收","吊装就位","校正固定","焊接/螺栓连接","涂装"],params:["高强螺栓初拧终拧扭矩比1.1","焊缝等级按设计一级/二级","挠度允许值L/400","防火涂料厚度按耐火极限"],acceptance:["焊缝探伤检测","高强螺栓扭矩检查","构件尺寸偏差实测","防火涂料厚度检测"],standards:["GB 50205-2020 钢结构工程施工质量验收标准","JGJ 82-2011 钢结构高强度螺栓连接技术规程"]},{id:"masonry-works",name:"砌体工程",aliases:["砌体","砌筑","加气块","二次结构"],process:["弹线定位","排砖撂底","砌筑","构造柱植筋","圈梁浇筑","顶砖处理"],params:["灰缝厚度8~12mm","垂直度偏差≤5mm(每层)","拉结筋间距≤500mm","顶砖间隔7d斜砌"],acceptance:["砌筑砂浆试块","构造柱钢筋隐蔽验收","垂直度平整度实测","拉结筋检测"],standards:["GB 50203-2011 砌体结构工程施工质量验收规范"]},{id:"waterproofing",name:"防水工程",aliases:["防水","屋面防水","卫生间防水","地下防水","卷材"],process:["基层处理","阴阳角附加层","防水层铺贴","搭接密封","闭水/淋水试验","保护层"],params:["卷材搭接宽度≥100mm","附加层宽度≥500mm","卫生间闭水试验48h","屋面蓄水试验24h","涂膜厚度按设计≥1.5mm"],acceptance:["闭水/蓄水试验记录","隐蔽验收记录","防水材料复试","淋水试验"],standards:["GB 50207-2012 屋面工程质量验收规范","GB 50208-2011 地下防水工程质量验收规范"]},{id:"plastering",name:"抹灰工程",aliases:["抹灰","粉刷","墙面抹灰","挂网"],process:["基层处理","浇水湿润","打点冲筋","分层抹灰","压光","养护"],params:["不同基体交接处挂网宽≥200mm","每遍抹灰厚度≤7mm","平整度偏差≤4mm","空鼓面积≤400cm\xb2且不连续"],acceptance:["空鼓敲击检查","平整度垂直度实测","养护记录"],standards:["GB 50210-2018 建筑装饰装修工程质量验收标准"]},{id:"tile-paving",name:"墙地砖铺贴",aliases:["墙地砖","瓷砖","铺贴","石材"],process:["基层检查","排砖放线","选砖泡水","铺贴","勾缝","成品保护"],params:["粘结层厚度≤10mm","接缝宽度按设计要求","空鼓率单块≤15%且整面≤5%","平整度偏差≤2mm"],acceptance:["空鼓锤击检查","平整度实测","坡度泼水检查","成品保护验收"],standards:["GB 50210-2018"]},{id:"ceil-partition",name:"吊顶与轻质隔墙",aliases:["吊顶","轻钢龙骨","隔墙","石膏板"],process:["弹线定位","龙骨安装","面板安装","接缝处理","面层施工"],params:["主龙骨间距≤1200mm","吊杆间距≤1000mm","罩面板接缝错开","石膏板接缝处粘贴网格布"],acceptance:["龙骨隐蔽验收","面板平整度实测","吊顶起拱检查"],standards:["GB 50210-2018"]},{id:"painting",name:"涂饰工程",aliases:["涂料","油漆","乳胶漆","腻子"],process:["基层清理","刮腻子","打磨","底漆","面漆","修整"],params:["腻子每遍厚度≤2mm","底漆1遍面漆2遍","施工温度5~35℃","平整度偏差≤2mm"],acceptance:["涂层色泽均匀检查","无流坠起皮检查","平整度实测"],standards:["GB 50210-2018"]},{id:"door-window",name:"门窗工程",aliases:["门窗","铝合金窗","幕墙","玻璃"],process:["洞口复核","安装固定","缝隙填塞","打胶密封","开启调试","淋水试验"],params:["框与墙间隙≤5mm","密封胶连续饱满","窗扇开关力≤50N","气密水密性能按设计等级"],acceptance:["淋水试验","开启灵活检查","垂直度偏差实测","性能检测报告"],standards:["GB 50210-2018","GB/T 7106-2019 建筑外门窗气密水密抗风压性能检测方法"]},{id:"plumbing",name:"给排水工程",aliases:["给排水","给水管道","排水管道","管道安装"],process:["预留预埋","支架安装","管道安装","压力试验","冲洗消毒","通水试验"],params:["给水管试验压力为工作压力1.5倍且≥0.6MPa","排水管坡度按管径DN50~DN200取2.5%~0.8%","支架间距按管径设置","PPR热熔温度260℃"],acceptance:["管道水压试验","通球试验","灌水试验","冲洗消毒记录"],standards:["GB 50242-2002 建筑给水排水及采暖工程施工质量验收规范"]},{id:"electrical",name:"电气工程",aliases:["电气","配管","穿线","桥架","配电箱","防雷接地"],process:["预留预埋","配管桥架","穿线放缆","设备安装","绝缘测试","通电调试"],params:["管路弯曲半径≥6D(埋地≥10D)","导线绝缘电阻≥0.5MΩ","桥架支架间距≤1.5m","防雷接地电阻≤1Ω"],acceptance:["绝缘电阻测试","接地电阻测试","通电试运行","隐蔽验收记录"],standards:["GB 50303-2015 建筑电气工程施工质量验收规范"]},{id:"hvac",name:"通风空调工程",aliases:["通风空调","风管","空调","新风","保温"],process:["风管制作","吊架安装","风管安装","设备安装","严密性试验","系统调试"],params:["风管支吊架间距≤3m","中压风管漏光法检测","保温层厚度按设计","风口风速按设计值\xb110%"],acceptance:["风管严密性试验","风量平衡调试","设备单机试运行","系统联动调试"],standards:["GB 50243-2016 通风与空调工程施工质量验收规范"]},{id:"fire-protection",name:"消防工程",aliases:["消防","消火栓","喷淋","火灾报警","防排烟"],process:["预留预埋","管道安装","喷头/探测器安装","系统试压","联动调试","检测验收"],params:["喷淋试验压力≥1.4MPa","消火栓充实水柱≥10m","探测器保护半径按类别","防排烟风管严密性"],acceptance:["消防水压试验","联动调试记录","消防检测报告","竣工验收备案"],standards:["GB 50261-2017 自动喷水灭火系统施工及验收规范","GB 50166-2019 火灾自动报警系统施工及验收标准"]},{id:"weak-current",name:"弱电智能化工程",aliases:["弱电","智能化","综合布线","监控","门禁"],process:["管线预埋","桥架敷设","线缆敷设","设备安装","单机调试","系统联调"],params:["双绞线弯曲半径≥4D","光缆弯曲半径≥15D","面板安装高度距地300mm","链路测试按TIA-568"],acceptance:["链路测试报告","单机调试记录","系统联调记录","隐蔽验收"],standards:["GB 50311-2016 综合布线系统工程设计规范","GB 50339-2013 智能建筑工程质量验收规范"]},{id:"municipal-road",name:"道路工程",aliases:["道路","路基","路面","水稳","沥青"],process:["测量放线","路基处理","分层碾压","水稳摊铺","沥青摊铺","标线设施"],params:["路基压实度≥93%(路床)","水稳层7d无侧限抗压强度按设计","沥青压实度≥96%","面层平整度≤5mm(3m直尺)"],acceptance:["压实度检测","弯沉检测","取芯厚度检测","平整度实测"],standards:["CJJ 1-2008 城镇道路工程施工与质量验收规范"]},{id:"municipal-pipe",name:"市政管道工程",aliases:["管道","雨污水","沟槽","检查井","承插管"],process:["测量放线","沟槽开挖支护","基础垫层","管道安装","接口处理","闭水试验","回填"],params:["沟槽开挖放坡按土质1:0.33~1:0.5","垫层厚度按设计≥100mm","管道安装轴线偏差≤15mm","闭水试验渗水量按GB 50268","回填分层厚度≤250mm"],acceptance:["闭水试验记录","管内底高程检测","管道CCTV检测","回填压实度检测"],standards:["GB 50268-2008 给水排水管道工程施工及验收规范"]},{id:"demolition",name:"拆除工程",aliases:["拆除","墙体拆除","结构拆除","垃圾外运"],process:["方案编制","围挡隔离","管线切断","分层拆除","垃圾清运","验收交接"],params:["拆除顺序自上而下","垃圾清运日产日清","湿法作业降尘","既有保留部位防护到位"],acceptance:["拆除专项方案","既有设施保护检查","垃圾清运记录"],standards:["JGJ 147-2016 建筑拆除工程安全技术规范"]},{id:"structural-strengthen",name:"结构加固",aliases:["结构加固","粘钢","碳纤维","植筋","加大截面"],process:["设计交底","基层处理","植筋","粘贴加固","养护","检测验收"],params:["植筋锚固深度按设计≥15d","碳纤维布粘结强度≥2.5MPa","胶粘剂固化时间按产品说明","加大截面混凝土强度等级≥C25"],acceptance:["拉拔试验","粘结密实度检测","隐蔽验收记录"],standards:["GB 50367-2013 混凝土结构加固设计规范","GB 50550-2010 建筑结构加固工程施工质量验收规范"]},{id:"facade-renovation",name:"外立面整治",aliases:["外立面","立面修补","真石漆","外保温"],process:["脚手架搭设","空鼓铲除","界面处理","保温层施工","面层施工","验收落架"],params:["保温板粘贴面积≥40%","锚栓数量每平米≥6个","抗裂砂浆厚度3~5mm","面层垂直度偏差≤4mm"],acceptance:["粘结强度现场拉拔","锚栓拉拔试验","平整度实测"],standards:["GB 50411-2019 建筑节能工程施工质量验收标准","JGJ 144-2019 外墙外保温工程技术标准"]},{id:"scaffold",name:"脚手架工程",aliases:["脚手架","外架","落地架","悬挑架"],process:["方案编制","基础处理","立杆搭设","连墙件设置","安全网封闭","验收挂牌","拆除"],params:["立杆纵距≤1.5m","连墙件两步三跨","剪刀撑与地面夹角45\xb0~60\xb0","悬挑架工字钢锚固长度≥1.25倍悬挑长度","架体高于作业层1.5m"],acceptance:["架体分段验收","连墙件检查","安全网封闭检查"],standards:["JGJ 130-2011 建筑施工扣件式钢管脚手架安全技术规范"]},{id:"tower-crane",name:"起重吊装",aliases:["起重吊装","塔吊","吊装","汽车吊"],process:["方案编制","设备报验","基础验收","安装调试","检测备案","日常检查","拆除"],params:["吊装作业半径内警戒","吊索具安全系数≥6","塔吊垂直度≤4‰","风速≥6级停止吊装"],acceptance:["特种设备检测","安装验收记录","司机指挥持证检查"],standards:["JGJ 196-2010 建筑施工塔式起重机安装使用拆卸安全技术规程"]},{id:"electrical-hookup",name:"临时用电",aliases:["临电","临时用电","三级配电"],process:["方案编制","线路敷设","配电箱设置","接地保护","验收送电","日常巡检"],params:["三级配电两级漏保","漏电动作电流≤30mA/0.1s","PE线截面按相线1/2","电缆埋深≥0.7m","配电箱距地1.4~1.6m"],acceptance:["绝缘电阻测试","接地电阻测试","验收送电记录"],standards:["JGJ 46-2005 施工现场临时用电安全技术规范"]}],a1=new Map,a2=new Map;for(let a of a0)for(let b of(a2.set(a.id,a),a1.set(a.name,a),a.aliases))a1.set(b,a);let a3=[{pattern:/安装工程|机电安装/u,cardIds:["electrical","plumbing","hvac","fire-protection","weak-current"]},{pattern:/结构加固|加固改造/u,cardIds:["structural-strengthen","concrete-works","rebar-works","formwork-works"]},{pattern:/装饰工程|装饰装修/u,cardIds:["plastering","tile-paving","ceil-partition","painting","door-window"]},{pattern:/外墙|屋面|立面/u,cardIds:["facade-renovation","waterproofing","scaffold"]},{pattern:/室外道排|道排|室外管网|雨污水/u,cardIds:["municipal-pipe","municipal-road","earthwork-excavation"]},{pattern:/智能化/u,cardIds:["weak-current"]},{pattern:/消防/u,cardIds:["fire-protection"]},{pattern:/拆除/u,cardIds:["demolition"]},{pattern:/水电改造/u,cardIds:["plumbing","electrical"]}];function a4(a,b=[]){let c=new Set;for(let b of a){let a=a1.get(b);for(let[d,e]of(a&&c.add(a),a1))d.length>=3&&b.includes(d)&&c.add(e);for(let a of a3)if(a.pattern.test(b))for(let b of a.cardIds){let a=a2.get(b);a&&c.add(a)}}for(let a of a0){if(c.size>=16)break;(!a.projectTypes||a.projectTypes.some(a=>b.includes(a)))&&c.add(a)}return[...c].slice(0,16)}async function a5(a,b,c,d,e,f,g,h="",i={}){let j=(0,s.QO)(b,c),k=(0,s.ks)(j,{maxChars:(0,s.Pc)(i.targetWords||i.minWords)}),l=b.sections?.length?`本章小节由生成前规划得到,请完整包含并展开以下小节:
40
- ${b.sections.map(a=>`- ${a}`).join("\n")}`:"本章没有预设小节;请按用户提示词、模板章节、角色要求和绑定材料自然组织正文。",m=function(a,b){let c=a6(a,b);return 0===c.length?"":["本章小节篇幅计划(首轮生成应尽量一次达成,避免后续补写):",...c.map(a=>`- ${a.title}:约 ${a.targetWords} 字,至少达到 ${Math.floor(.8*a.targetWords)} 字,并写入与该小节相关的材料事实、适用边界和必要说明。`)].join("\n")}(b,i.targetWords||i.minWords||0),n=function(a){let b=a.tablePlans||[];return 0===b.length?"":["【本章表格/清单结构化生成要求】","以下表格来自项目图谱、事实主权模型与施工组织设计标准表格库的治理决策;不得按数量机械增减,必须按必要性、章节归属、证据可填性和输出形态执行。","只输出表格/清单本体和用户提示词明确要求的文字;不得输出系统来源说明、后台溯源列、固定表前后说明或占位话术。",...b.map((b,c)=>[`${c+1}. ${b.required?"必写":b.outputDecision?.shouldOutput?"应写":"参考"}:${b.title}`,` - 必要性:${b.necessity||(b.required?"must":"conditional")};输出形态:${b.outputDecision?.outputType||"markdown_table"};决策:${b.outputDecision?.decisionReason||"按章节内容需要输出。"}`,` - 适用模块:${b.moduleTitle}`,` - 章节归属:${b.scopeExplanation||`归属于${a.title}`}`,` - 生成原因:${b.reason}`,` - 表头字段:${b.fields.map(a=>a.name).join(" | ")}`,` - 字段来源:${b.fields.map(a=>`${a.name}←${a.sourceDomain}(${a.sourceHint})`).join(";")}`,b.fillability?.missingProjectFactFields.length?` - 字段约束:${b.fillability.missingProjectFactFields.join("、")} 必须继续从项目图谱、可信事实和绑定资料中取值;不得写固定占位话术。`:` - 可填性:已确认字段 ${b.fillability?.confirmedFieldCount??b.fields.length}/${b.fields.length}。`,b.rowSeeds?.length?` - 行级填充计划:${b.rowSeeds.slice(0,8).map(a=>`${a.rowLabel}(${a.source}${a.missingFields.length?`,字段待从资料补齐:${a.missingFields.join("/")}`:""})`).join(";")}`:"",` - 约束:${b.fields.some(a=>"projectFactOnly"===a.fallbackPolicy)?"projectFactOnly 字段必须来自项目资料、项目图谱或可信事实;不得编造,不得写占位话术。":"可按标准施工组织流程填写,但必须贴合本章和项目场景。"}`].filter(Boolean).join("\n"))].join("\n")}(b),o=N(b),p=function(a){let b=`${a.title} ${(a.sections||[]).join(" ")} ${(a.queries||[]).join(" ")}`,c=L.filter(a=>a.pattern.test(b));return 0===c.length?"":["【隐藏高分模块触发】",...c.map(a=>`- ${a.title}:${a.prompt}`)].join("\n")}(b),q=[v.rd,i.forbidDrawingImages?"图片类材料只作为文本事实依据;禁止插入图片或 Markdown 图片语法。":"",e].filter(Boolean).join("\n\n"),r=[`文档模板:${a.name}`,`章节标题:${b.title}`,`章节目的:${b.purpose}`,l,m,n,o,p,g?`用户要求:${g}`:"",f?`上下文/历史记忆(仅作偏好、历史纠偏和连续性参考;如与知识库证据冲突,以知识库证据为准):
41
- ${f}`:"",h||"",i.factCoverageContext||"",d.length?`需要特别补足的信息:${d.join("、")}`:"","请生成可直接导出的 Markdown 章节,要求:",`- 保留章节标题;内容不少于 ${i.minWords||1e3} 字${i.targetWords?`,目标约 ${i.targetWords} 字`:""}${i.maxWords?`,最多不超过 ${i.maxWords} 字`:""}。`,b.sections?.length?"- 必须完整包含已规划小节;不要新增未规划的二级小节。":"- 未预设小节时,不要为了凑结构强行新增小节。",b.tablePlans?.length?"- 本章存在结构化表格规划时,必须输出正式 Markdown 表格;表头必须严格使用规划字段,不得擅自改字段、删字段或增加后台溯源列。":b.tableSections?.length?`- 以下小节可使用表格辅助表达:${b.tableSections.join("、")}。`:"",b.tablePlans?.length?"- 表格字段值必须优先来自项目图谱、可信事实和绑定材料;projectFactOnly 字段不得编造,也不得写任何固定占位话术。":"","- 内容必须遵循用户提示词、模板章节、提示词角色、项目资料包和自动识别的资料类型;不得编造材料未提供的事实。","- 将材料要点自然融入正文;不要输出系统证据清单、中间分析过程或后台流程话术。",v.KX,"",k?"绑定材料:":"",k,i.userWriterRules?`
42
- 【用户写作指令——必须严格遵守】
43
- ${i.userWriterRules}`:""].filter(Boolean).join("\n"),t=await (0,al.rI)(q,r,!1,{maxTokens:i.maxTokens,signal:i.signal,diagnostics:i.diagnostics});if(t&&!(t.length<120))return(0,v.kT)((0,v.FD)(t.startsWith("## ")?t:`## ${b.title}
44
-
45
- ${t}`,!!i.forbidDrawingImages))}function a6(a,b){let c=a$(a.sections?.filter(Boolean)||[],a.title);if(0===c.length)return[];let d=Math.floor(b/c.length),e=Math.max(b>=900*c.length?900:Math.max(520,Math.floor(.9*d)),d);return c.map(a=>({title:a,targetWords:e}))}function a7(a){return[...new Set((a.match(/[\p{Script=Han}]{2,}|[A-Za-z0-9_-]{3,}/gu)||[]).map(a=>a.toLowerCase()))]}function a8(a,b,c){let d=a7([a,b.title,...b.requiredFacts||[]].join(" ")),e=/项目概况|工程概况|总体|部署|施工方案|工期|进度|质量|安全|资源|材料|设备/u.test(a),f=c.map((b,c)=>{let f=`${b.filePath}
46
- ${b.sectionTitle||""}
47
- ${b.content}`.toLowerCase(),g=`${b.filePath}
48
- ${b.sectionTitle||""}
49
- ${b.content}`,h=d.reduce((a,b)=>a+ +!!f.includes(b),0),i=b.sectionTitle&&(a.includes(b.sectionTitle)||b.sectionTitle.includes(a))?4:0,j=1.5*!!/\d|DN|φ|Φ|mm|cm|m²|m3|m³|MPa|kPa|℃|%|GB|JGJ|ISO|台|套|个|项|批|次|份|人|㎡|日历天|万元|元|规格|型号|数量|合同估算价|合同估算价格|计划工期/iu.test(g),k=e&&/计划工期|合同工期|合同估算价|合同估算价格|投资估算|建设地点|建设规模|质量标准|招标范围/u.test(g)?5:0,l=.8*!!/table|sheet|bill|data|drawing|图纸|表格|清单|参数|数据|说明/u.test(`${b.roleId||""} ${b.processingType||""} ${b.filePath}`);return{item:b,score:h+i+j+k+l+.1*b.score-.001*c}}).sort((a,b)=>b.score-a.score),g=f.filter(a=>a.score>0).map(a=>a.item);if(0===g.length)return c;let h=new Set(g);return[...g,...f.filter(({item:a})=>!h.has(a)).filter(({item:a})=>/招标范围|建设规模|建设地点|计划工期|质量标准|施工内容|管理机构|岗位职责|施工部署|现场交通|人车分流/u.test(`${a.sectionTitle||""}
50
- ${a.content}`)).slice(0,12).map(a=>a.item)]}let a9=/\d+(?:\.\d+)?\s*(?:mm|cm|m|km|㎡|m²|m3|m³|kg|g|t|L|ml|MPa|kPa|℃|%|台|套|个|项|批|次|份|人|小时|分钟|日历天|天|周|月|年)|DN\s*\d+|φ\s*\d+|Φ\s*\d+|GB\s*\d+|JGJ\s*\d+/iu,ba=/计划工期|合同工期|建设地点|建设规模|质量标准|招标范围|施工范围|工作内容|项目特征|材料|设备|规格|型号|数量|单位|做法|节点|系统|管径|标高|尺寸|厚度|强度|等级|验收|检测|试验|安全|文明|扬尘|环保|消防|临时用电|临水|排水|交叉施工|地下管线|有限空间|危大|专项方案|专家论证|进度节点|保修|移交/iu,bb=/报价明细|综合单价|税率|增值税|利润|结算|预留金|暂列金额|暂估价/u,bc=/合同估算价|合同估算价格|投资估算|估算价格|工程估算价|最高投标限价|招标控制价/u;function bd(a){return(0,P.lG)(a).replace(/\s+/gu,"").replace(/[,。,.;;::、()()【】[\]《》“”"'`]/gu,"")}function be(a){return(0,P.lG)(a).replace(/^\s*#{1,6}\s*/u,"").replace(/^\s*\d+(?:\.\d+)*\s*/u,"").replace(/\s+/gu," ").trim()}function bf(a,b){let c=bd(b),d=function(a){let b=be(a),c=bd(b),d=new Set,e=a=>{let b=bd(a);b.length<2||/^(本项目|施工|工程|资料|要求|进行|应当|按照|落实|管理|检查|验收)$/u.test(b)||d.add(b)};for(let a of b.split(/[,。,.;;::、()()【】[\]\s]+/u))e(a);let f=b.match(/^\s*([^::]{2,12})[::]\s*(.+)$/u);for(let a of(f&&(e(f[1]||""),e(f[2]||"")),c.matchAll(/\d+(?:\.\d+)?(?:mm|cm|m|km|㎡|m²|m3|m³|kg|g|t|L|ml|MPa|kPa|℃|%|台|套|个|项|批|次|份|人|小时|分钟|日历天|天|周|月|年)?|DN\d+|φ\d+|Φ\d+|GB\d+|JGJ\d+/giu)))e(a[0]);return[...d].slice(0,18)}(a);if(0===d.length)return 0;let e=d.filter(a=>/\d/u.test(a));return e.length>0?e.filter(a=>c.includes(a)).length:d.filter(a=>c.includes(a)).length}function bg(a,b){let c=[],d=new Set,f=a7(a).filter(a=>a.length>=2);for(let a of b){for(let b of(0,P.lG)(a.content).split(/\r?\n/u)){let e=be(b);if(e.length<4||e.length>280||/^(?:工作表|序号|COL\d+|资料类型|PDF\s*第|第\d+页)/iu.test(e)||/\|.*\|/u.test(e)&&!/(工程名称|建设地点|建设规模|计划工期|招标范围|合同估算|暂列金额|建筑面积)/u.test(e)||/^(?:[.。;;、\s]+)?(?:工程重点难点|确保安全文明生产|项目概况与招标范围)$/u.test(e)||/^[.。;;、\s]*[^::]{2,40}(?:是否|符合|在采购范围内).{0,30}\d{3,}$/u.test(e)||/^[.。;;、\s]*(?:系统|综合布线系统|智能化设备).{0,40}\d{3,}$/u.test(e)||/^[.。;;、\s]*(?:工程重点难点及危大工程的保障体系与措施|确保安全文明生产的管理体系与措施)$/u.test(e)||/投标人|第二章投标人须知|不得存在|报价|中标后不予调整|清单不再单独列项|自行踏勘|罚款|违约金额|元\/条|注册建造师|安全生产考核合格证书|安全生产许可证|营业执照|联合体投标|项目经理要求|投标人资格|投标人资质|资质要求|资格审查|资格后审|业绩要求|信誉要求|财务要求|中标通知书|签订合同|评标办法|电子交易系统|踏勘现场|投标预备会/u.test(e)||bb.test(e)&&!bc.test(e))continue;let g=a9.test(e),h=ba.test(e),i=f.some(a=>e.includes(a));if(!g&&!h&&!i)continue;let j=bd(e).slice(0,160);if(!d.has(j)&&(d.add(j),c.push({text:e,sourceFile:a.filePath,roleId:a.roleId,quantified:g}),c.length>=16))break}if(c.length>=16)break}let g=c.map(a=>`- ${a.text}(来源:${e.basename(a.sourceFile)}${a.roleId?`,角色:${a.roleId}`:""})`);return{items:c,quantifiedCount:c.filter(a=>a.quantified).length,prompt:g.length?`【当前小节写作任务卡】
51
- 小节:${a}
52
- 必须优先落位的资料事实:
53
- ${g.join("\n")}
54
- 成稿要求:1)至少自然写入其中 2 条资料事实;2)如存在数字、规格、标准编号、数量、工期,必须至少原样写入 1 条;3)围绕“资料依据—对象范围—实施做法—检查验收/闭环”展开,不得写成“结合实际、按规范执行”的泛化空话;4)不得改写、换算或编造资料未提供的参数。`:""}}async function bh(a){var b;let c=a8(a.sectionTitle,a.chapter,a.evidence),d=bg(a.sectionTitle,c),e=(0,s.ks)((0,s.QO)(a.chapter,c),{maxChars:(0,s.Pc)(a.targetWords,3500,9e3)}),f=/项目主要施工内容/u.test(a.sectionTitle)?bt(a.projectContext,c):[],g=f.length>0?a4(f.map(a=>a.name)):[],h=g.length>0?(b=f.map(a=>a.name),0===g.length?"":["【施工工艺知识卡】",'以下为本领域常见工作包的工艺参考。写作"施工概况/施工流程/施工方法"时:',"1) 工序链必须与本项目资料确认的对象匹配,可裁剪但不得照搬无关工序;",'2) 工艺参数仅作为专业表达参考,只有在绑定资料明确时才写入具体数值,否则写控制方向(如"按规范控制桩位偏差")而非编造数字;','3) 检测验收必须落到记录名称(如"闭水试验记录、隐蔽验收记录、静载试验报告")。',...g.map(a=>{let c=b.some(b=>a.aliases.includes(b)||b===a.name);return`${c?"【直接匹配】":"【项目类型通用】"}${a.name}:
55
- - 工序链:${a.process.join("→")}
56
- - 工艺参数(参考):${a.params.join(";")}
57
- - 检测验收:${a.acceptance.join(";")}
58
- - 规范依据:${a.standards.join(";")}`})].join("\n")):"",i=[`文档模板:${a.template.name}`,`章节标题:${a.chapter.title}`,`当前二级小节:${a.sectionTitle}`,a.requirement?`用户要求:${a.requirement}`:"",a.projectContext?`上下文:
59
- ${a.compactProjectContext?function(a,b=2e3){let c=a.split(/\r?\n/u).map(a=>a.trim()).filter(Boolean),d=c.filter(a=>/【.+】/u.test(a)||/=/u.test(a)||/^\d+\.\s+/u.test(a)||/:\S{1,40}$/u.test(a)),e=(d.length>=8?d:c).join("\n").trim();return e.length<=b?e:`${e.slice(0,b)}
60
- (上下文已截断,完整信息见绑定材料与证据)`}(a.projectContext):a.projectContext}`:"",a.factCoverageContext||"",aO(a.chapter.title,a.sectionTitle),d.prompt,a.roleContext,a.missingFacts.length?`需要特别补足的信息:${a.missingFacts.join("、")}`:"",a.qualityFeedback?`上轮小节未通过质量检查,必须修正:${a.qualityFeedback}`:"",/项目主要施工内容/u.test(a.sectionTitle)?"【项目主要施工内容专项结构】只能根据绑定材料中的当前项目事实识别施工对象和工作包;不得套用固定行业模板,不得复述完整工程概况,不得写“以图纸清单为准”式空话;不得使用 Markdown 表格。必须按专业工程/分部分项工程逐项展开,每项使用“#### 工作包名称”作为三级小节标题,并固定包含“施工概况:”“施工流程:”“施工方法:”三段。施工概况必须写该工作包对应的本项目作业对象、部位、规模/工程量、材料设备或系统边界,写成连贯叙述段落,不得出现“1.xxx 2.xxx”编号清单或“xxx|工程量”式清单原文罗列;施工流程必须使用“→”串联关键工序;施工方法必须写成连贯叙述,落到具体工具机具、测量/检测方法、工艺参数、材料规格、穿插关系、质量验收、复试检测和资料闭环,禁止“按规范施工”“结合实际执行”式空话,严禁把工程量清单条目原样罗列成“xxx:2台;xxx:1台;”式参数堆砌。施工方法写法样例(句式参照,内容按本项目事实替换):“配电箱采用挂墙方式安装,箱体中心距地1.5m,盘面垂直度偏差不超过1.5/1000;柜内元器件按系统图接线,导线分色标识,接线紧固力矩按规格控制;安装完成后进行绝缘电阻测试并形成通电试运行记录。”至少形成 5 个施工工作包,工作包必须来自绑定材料证据。":"",/主要分部分项工程施工方案/u.test(a.sectionTitle)?"【主要分部分项工程施工方案专项要求】每个“#### 分项工程方案”三级小节必须包含施工概况(本项目作业对象、部位、工程量)、工艺流程(用“→”串联关键工序)和施工方法(工具机具、材料规格、验收标准)。每个分项方案正文必须落位至少 4 个工艺参数(mm、MPa、间距、偏差、坡度、养护天数、试验压力、搭接长度等),参数来自绑定材料或行业通用规范值,不得编造;纯设备配置型小节必须写型号、规格、容量、数量参数;不得写“按规范施工”“结合实际执行”式空话。":"",h,`请只生成当前节内容,使用“### ${a.sectionTitle}”作为节标题;正文必须下沉到若干“#### 三级小节标题”下面,不得在 ### 标题后直接写大段正文。目标约 ${a.targetWords} 字${a.maxWords?`,最多不超过 ${a.maxWords} 字`:""}。`,"本章节结构已由系统按模板和提示词锁定;不得删除、重命名、合并或重排当前节标题;每个节下必须自然展开三级小节,三级小节承载正文。",v.KX,e?`绑定材料:
61
- ${e}`:""].filter(Boolean).join("\n\n"),j=()=>(0,al.rI)(["你是专业文档的小节生成专家。",v.rd,a.promptTexts].filter(Boolean).join("\n\n"),i,!1,{maxTokens:Math.min(bI(a.targetWords),Math.max(1800,Math.ceil(1.8*a.targetWords))),temperature:.25,signal:a.signal,diagnostics:a.diagnostics}),k=a.diagnostics?await aI(a.diagnostics,`section-draft:${a.chapter.id}:${a.sectionTitle}`,j):await j();if(!k||k.length<80)return;let l=(0,v.kT)((0,v.FD)(k.startsWith("### ")?k:`### ${a.sectionTitle}
62
-
63
- ${k}`,a.forbidDrawingImages)).replace(/^##\s+.*\n+/u,"").trim(),m=bx(a.sectionTitle,l);if(m){if(a.diagnostics&&(a.diagnostics.llm.lastError=`${m}:${a.chapter.title} / ${a.sectionTitle}`),/项目主要施工内容/u.test(a.sectionTitle)){let b=bv(a.sectionTitle,a.projectContext,a.evidence);if(b)return b}return}let n=bC(a.sectionTitle),o=Math.min(Math.max(Math.floor(.7*a.targetWords),n),Math.max(500,a.targetWords));if(bz(a.sectionTitle)&&(0,w.V7)(l)<o){if(a.diagnostics&&(a.diagnostics.llm.lastError=`section writer 正文不足:${a.chapter.title} / ${a.sectionTitle} / ${(0,w.V7)(l)}/${o}字`),/项目主要施工内容/u.test(a.sectionTitle)){let b=bv(a.sectionTitle,a.projectContext,a.evidence);if(b)return b}return}return by(a.sectionTitle,l)}function bi(a,b,c){if(/项目特点.*重点.*难点|重点.*难点.*分析/u.test(a))return["项目特点与基础事实","施工重点识别","施工难点成因与影响","应对措施与责任闭环","重点难点与施工内容对应关系"][b%5];if(/项目主要施工内容/u.test(a))return["专业工程工作包识别与施工概况","专业工程施工流程","专业工程施工方法","工程量参数与资源穿插","验收检测与资料闭环"][b%5];if(/主要分部分项工程施工方案|主要施工方法/u.test(a))return["当前项目分部分项对象","主要工艺流程与施工顺序","材料设备与参数控制","质量安全控制点","验收移交与资料闭环"][b%5];let d=a.toLowerCase(),e=/资源|材料|设备|人材机/u.test(a)?["资源配置依据","材料设备规格与数量","进场组织与保管要求","使用调配与过程核验","验收记录与动态调整"]:/施工|工艺|技术|安装|土建|结构|给排水|电气/u.test(a)||/method|technical/u.test(d)?["施工准备与技术依据","主要工艺流程","材料设备与参数控制","质量验收要点","成品保护与问题处置"]:/安全|文明|危大|风险/u.test(a)?["风险识别与控制边界","防护设施与作业条件","人员设备安全管理","检查频次与整改闭环","应急响应与资料留存"]:/质量|验收|标准/u.test(a)?["质量目标与验收依据","过程控制点","材料设备复核","检验批与验收资料","问题整改与成品保护"]:["资料依据与适用范围","对象范围与关键参数","实施方法与组织安排","质量安全控制要求","检查验收与闭环管理"];return c<=1?a:`${a}:${e[b%e.length]}`}function bj(a){return a.replace(/^#{3,4}\s+.*\n+/u,"").trim()}function bk(a,b){let c=a.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&"),d=b.match(RegExp(`^###\\s+(?:\\d+(?:\\.\\d+)*\\s+)?${c}\\s*\\n([\\s\\S]*?)(?=^###\\s+|^##\\s+|(?![\\s\\S]))`,"mu"));return d?d[0]:b}function bl(a,b){let c=b?bk(b,a):a;return/^####\s+\S+/mu.test(c)}function bm(a){return(0,s.eE)(a).replace(/#{2,6}\s*[^;;。\n]+/gu,"").replace(/资料内容事实[;;::]?/gu,"").replace(/\s+/gu," ").trim()}function bn(a,b=6){return[...new Set(a)].map(a=>bm(a).replace(/^[①-⑳㈠-㈩⑴-⒇]\s*/u,"").replace(/^\d+\s*[..、::))]\s*/u,"").replace(/^[一二三四五六七八九十]+\s*[、..]\s*/u,"").replace(/|\s*([^;;、,,\n]+)/gu,"($1)")).filter(a=>a&&a.length>=4).slice(0,b)}function bo(a){let b=bm(a);return!(!b||b.length<4||b.length>120||/资料内容事实|#{2,6}|未尽事宜|项目编号\s*[::]?\s*[一二三四五六七八九十]?$/u.test(b)||/本项目为|总建筑面积|保留现状|专业施工内容统筹|招标文件列明|招标范围还包含|具备有效的.*资质/u.test(b))&&(!((b.match(/工程|维修|改造|安装|设备/gu)||[]).length>=4)||!!/\d|㎡|m2|m²|mm|厚|验收|检测|调试|试验|复试/u.test(b))&&/\d|㎡|m2|m²|mm|厚|工程|材料|设备|系统|范围|改造|维修|加固|消防|水电|智能化|管网|屋面|门窗|验收|检测|调试/u.test(b)}function bp(a){return a.split(/→|;|;|、|,|,/u).map(a=>bm(a)).filter(a=>a&&a.length>=2&&a.length<=40).filter(a=>!/^按?施工准备$|^实施$|^检查$|^验收组织?$|^按规范和资料闭环$/u.test(a)).filter(a=>!/本项目为|总建筑面积|保留现状|专业施工内容统筹|招标文件列明|招标范围|未尽事宜|具备有效/u.test(a))}function bq(a){let b=[];for(let c of a){let a=c.replace(/[::]/gu," ").replace(/\s+/gu," ").trim(),d=b.findIndex(b=>b.norm.includes(a)||a.includes(b.norm));d>=0?c.length>b[d].text.length&&(b[d]={text:c,norm:a}):b.push({text:c,norm:a})}return b.map(a=>a.text)}function br(a,b){let c=b.map(a=>a.replace(/[::]/gu," ").replace(/\s+/gu," ").trim());return a.filter(a=>{if(/\d+(?:\.\d+)?\s*(?:台|套|个|座|㎡|m2|m²|m³|m3|kg|t|根|扇|樘|块|件|组)\b/u.test(a))return!1;let b=a.replace(/[::]/gu," ").replace(/\s+/gu," ").trim();return b.length<4||!c.some(a=>a.includes(b))})}function bs(a){let b=bm(a);return!b||(b.match(/工程|维修|改造|安装|设备|系统|管网|屋面|门窗|消防|智能化/gu)||[]).length>=5&&!/\d|㎡|m2|m²|mm|厚|验收|检测|调试|试验|复试|记录|报告|材料|设备|规格|标准|检验批/u.test(b)}function bt(a,b){let c=[],d=a.match(/施工工作包结构化数据:\s*(\[[^\n]*\])/u);if(d)try{for(let a of JSON.parse(d[1])){let b=bm(a.name||""),d=bm(a.scope||""),e=bq([...a.quantities||[],...a.materials||[],...a.methods||[]].map(bm).filter(bo).filter(a=>!bs(a))),f=br((a.process||[]).flatMap(bp),e),g=(a.acceptance||[]).map(bm).filter(a=>a&&!bs(a));!(!b||/^\d*徽光阁项目施工$/u.test(b))&&"徽光阁项目施工"!==b&&(!d||/资料内容事实|#{2,6}/u.test(d)||c.push({name:b,scope:d,quantities:e,process:f,acceptance:g}))}if(c.length>0)return c.slice(0,16)}catch{c.length=0}for(let b of a.split(/\r?\n/u).filter(a=>/^\d+\.\s+.+?|范围:/u.test(a))){let a=b.match(/^\d+\.\s+(.+?)|范围:(.+?)|工程量\/材料:(.+?)|流程:(.+?)|验收:(.+)$/u);if(!a)continue;let d=bm(a[1]),e=bm(a[2]),f=bq(a[3].split(/[;;、,,]/u).map(a=>bm(a)).filter(bo).filter(a=>"按证据展开"!==a)),g=br(bp(a[4]),f),h=a[5].split(/[;;、,,]/u).map(a=>bm(a)).filter(a=>a&&"按规范和资料闭环"!==a).filter(a=>!bs(a));!(!d||/^\d*徽光阁项目施工$/u.test(d))&&"徽光阁项目施工"!==d&&(!e||/资料内容事实|#{2,6}/u.test(e)||c.push({name:d,scope:e,quantities:f,process:g,acceptance:h}))}return c.slice(0,8)}function bu(a,b){let c=a4([a]),d=c.find(b=>b.aliases.includes(a)||b.name===a)??c.find(a=>/加固|混凝土|钢筋|砌体|抹灰|墙地砖|吊顶|涂饰|门窗|给排水|电气|通风|消防|弱电|智能化|道路|市政|拆除|立面|脚手架/u.test(a.name))??c[0],e=[];return d?(e.push(`${a}按${d.process.slice(0,8).join("→")}的工序组织施工`),d.params.length&&e.push(`关键工艺参数按${d.params.slice(0,5).join(",")}控制`),d.acceptance.length&&e.push(`质量验收执行${d.acceptance.slice(0,4).join("、")}并形成检测记录闭环`)):e.push(`${a}按施工准备→过程实施→检查验收→问题整改→资料归档组织,重点控制工具机具、工艺参数、材料规格与验收检测`),b.length&&e.push(`本工作包对应工程量与材料设备包括${b.slice(0,6).join(";")}`),e.join(";")+"。"}function bv(a,b="",c=[]){let d=bt(b,c).filter(a=>a.scope&&(a.quantities.length>0||a.process.length>0||a.acceptance.length>0));if(d.length<5)return;let e=function(a,b){let c=`${a}
64
- ${b.map(a=>(0,s.eE)((0,P.lG)(a.content))).join("\n")}`;return[...new Set([c.match(/建筑面积(?:约)?\s*[\d.]+\s*(?:㎡|m²)/u)?.[0],c.match(/地上\s*[一二三四五六七八九十\d]+\s*层/u)?.[0],c.match(/[一二三四五六七八九十\d]+\s*层框架结构/u)?.[0],c.match(/保留在营业商铺\s*[\d.]+\s*㎡/u)?.[0],c.match(/闲置空间(?:约)?\s*[\d.]+\s*㎡/u)?.[0],c.match(/计划工期\s*[\d.]+\s*日历天/u)?.[0],c.match(/质量标准[::]?\s*合格/u)?.[0]].filter(Boolean))].slice(0,6).join(",")}(b,c),f=d.map(a=>{let b=a.process.length>=3?a.process:[...new Set([...a.process,...a4([a.name])[0]?.process||[]])].filter(Boolean).slice(0,10),c=[...a.quantities,...a.acceptance].filter(a=>!/本项目为|总建筑面积|保留现状|专业施工内容统筹|招标文件列明|招标范围还包含|具备有效/u.test(a)).filter(a=>!((a.match(/工程|维修|改造|安装|设备/gu)||[]).length>=4&&!/\d|㎡|m2|m²|mm|厚|验收|检测|调试|试验|复试/u.test(a))).slice(0,8);return{pkg:a,process:b,methodFacts:c}}).filter(a=>a.methodFacts.length>=2&&a.process.length>=2);if(!(f.length<5))return[`### ${a}`,"",...f.flatMap(({pkg:a,process:b,methodFacts:c})=>{let d=bn(a.quantities,6),f=bn(a.acceptance,4),g=d.length?`该工作包涉及的工程量、材料与设备包括${d.join(";")}。`:f.length?`该工作包涉及的验收与检测要求包括${f.join(";")}。`:"",h=a.scope.replace(/[。;;,,、\s]+$/u,""),i=bu(a.name,[]);return[`#### ${a.name}`,"",`施工概况:${a.name}属于本项目主要施工内容,实施范围为${h}。${e?`本项目已确认的基础条件包括${e}。`:""}${g}`,"",`施工流程:${b.join("→")}。`,"",`施工方法:${i}`,""]})].join("\n")}function bw(a,b="",c=[]){let d=bt(b,c).filter(a=>a.scope&&(a.quantities.length>0||a.process.length>0||a.acceptance.length>0));if(!(d.length<2))return[`### ${a}`,"",...d.slice(0,8).map(a=>{let b=bn(a.quantities,6),c=bn(a.acceptance,4),d=[...new Set(a.process)].slice(0,8),e=a.scope.replace(/[。;;,,、\s]+$/u,""),f=[`本分部分项工程实施范围为${e}。`,b.length?`涉及主要工程量与材料设备:${b.join(";")}。`:"",d.length?`施工流程按${d.join("→")}组织。`:"",`施工方法:${bu(a.name,bn(a.quantities,4))}`,c.length?`验收要点:${c.join(";")}。`:"","过程控制执行样板引路、工序交接检、隐蔽验收和问题整改闭环,关键参数由责任岗位复核后签字确认。"].filter(Boolean);return`#### ${a.name}
65
-
66
- ${f.join("")}`})].join("\n\n")}function bx(a,b){if(/项目主要施工内容/u.test(a)){let c=bk(a,b);if(!bl(b,a))return`${a} 缺少施工工作包三级小节`;if(!function(a){let b=bj(a),c=(b.match(/^####\s+(?:\d+\.\d+\.\d+\s+)?[一二三四五六七八九十\d]*[、..]?\s*\S+/gmu)||[]).length||(b.match(/^[一二三四五六七八九十]+、\S+/gmu)||[]).length,d=["施工概况","施工流程","施工方法"].filter(a=>b.includes(a)).length;return c>=3&&3===d&&/→|->|测量|放线|验收|复试|检测|闭环/u.test(b)}(c))return`${a} 未按施工工作包展开`;let d=c.split(/^####\s+/gmu).slice(1).map(a=>a.trim()).filter(Boolean);if(d.some(a=>!a.includes("施工概况")||!a.includes("施工流程")||!a.includes("施工方法")))return`${a} 存在工作包结构不完整`;let e=bj(c);if(/资料内容事实|(?:^#{2,3}|^#{5,6})\s+|\*\*[^*]+\*\*|未尽事宜|专业施工内容统筹|招标范围还包含|具备有效的.*资质|安全生产考核合格证书|注册建造师|联合体投标|项目经理要求|投标人资格|投标人资质|营业执照|安全生产许可证|资格审查|资格后审|中标通知书|签订合同|电子交易系统|投标保证金|评标办法|踏勘现场|投标预备会/mu.test(e))return`${a} 存在脏事实或标题污染`;if(d.some(a=>/施工流程[::][\s\S]*?(未尽事宜|本项目为|总建筑面积|保留现状|专业施工内容统筹|招标文件列明|招标范围|安全生产考核合格证书|联合体投标|注册建造师)/u.test(a)))return`${a} 存在工作包流程污染`;if(d.some(a=>{let b=a.match(/施工方法[::]([\s\S]*?)(?=\n施工|$)/u)?.[1]||"";if(/安全生产考核合格证书|联合体投标|注册建造师|投标人资格|资质要求|营业执照|安全生产许可证/u.test(b)||b.length<30)return!0;let c=(b.match(/[::]\s*\d/gu)||[]).length;return/\d/u.test(b)&&!/→|采用|组织|浇筑|铺设|焊接|绑扎|砌筑|抹灰|涂刷|敷设|压实|养护|试验|调试|测量|放线|验收|检测|复试|记录|报告|吊装|灌注|埋设|嵌缝/u.test(b)&&(c>=2||!/安装|固定|挂墙|机具/u.test(b))||(b.match(/工程|维修|改造|安装|设备/gu)||[]).length>=4&&!/\d|㎡|m2|m²|mm|厚|验收|检测|调试|试验|复试|记录|报告/u.test(b)}))return`${a} 存在工作包施工方法过弱`;let f=bj(c);if(/^\s*\|.+\|\s*$/mu.test(f))return`${a} 不应使用 Markdown 表格替代工作包正文`}return""}function by(a,b){if(bl(b))return b;let c=bj(b);return c?`### ${a}
67
-
68
- #### ${a}
69
-
70
- ${c}`:b}function bz(a){return/项目特点.*重点.*难点|重点.*难点.*分析|项目主要施工内容|主要分部分项工程施工方案|主要施工方法|危大工程专项施工方案审批流程|原材料进场复试|见证取样/u.test(a)}function bA(a){return/项目管理组织|组织架构|岗位职责|施工部署|施工流水|交通组织|人车分流/u.test(a)}async function bB(a){var b;let c=(bA(a.sectionTitle)?[...a8(a.sectionTitle,a.chapter,a.evidence),...a.evidence]:a8(a.sectionTitle,a.chapter,a.evidence)).filter((a,b,c)=>c.findIndex(b=>b.filePath===a.filePath&&b.content===a.content)===b).slice(0,24),d=bg(a.sectionTitle,c),e=c.map((a,b)=>`${b+1}. ${(0,s.eE)(a.content).slice(0,520)}`).filter(Boolean).join("\n"),f=a.diagnostics?.llm.lastError,g=await (0,al.rI)(["你是专业文档节内小节 Writer。只生成一个指定节,不生成整章。",v.rd,v.KX,"必须直接输出 Markdown:先输出指定 ### 节标题,再在其下生成若干 #### 三级小节承载正文;不得在 ### 后直接写大段正文;不得解释过程,不得输出资料不足、待确认、兜底等话术。"].join("\n\n"),[`章节标题:${a.chapter.title}`,`指定节标题:### ${a.sectionTitle}`,a.requirement?`用户要求:${a.requirement}`:"",aO(a.chapter.title,a.sectionTitle),(b=a.sectionTitle,/项目特点.*重点.*难点|重点.*难点.*分析/u.test(b)?"关键小节结构要求:必须分为“项目特点分析、施工重点识别、施工难点及应对措施、重点难点与施工内容对应关系”。\n必须落位项目具体数据:项目名称、建设地点、建筑面积、层数、结构形式、装配式范围、计划工期、质量标准、施工专业范围、现场场地约束、既有管网接驳等已确认事实。\n必须用正式表格或分项清单表达:重点/难点、形成原因、影响范围、对应施工内容、控制措施、责任岗位、验收节点。":/项目主要施工内容/u.test(b)?"关键小节结构要求:必须参照优秀施工组织设计的“主要施工内容”写法,按当前项目资料识别专业工程/分部分项工作包,不得只写综合概述。\n每个工作包固定采用段落式三段:施工概况、施工流程、施工方法;不得使用 Markdown 表格,避免导出时产生表格分隔线残留。\n施工概况必须写清对象范围、工程量或规模、材料设备规格、施工部位;施工流程必须用箭头串联工序;施工方法必须写工艺做法、穿插组织、质量验收、检测复试、资料闭环。\n工作包类别必须从资料事实中识别,可覆盖但不限于结构加固、消防、装饰、水电、通风空调、弱电智能化、室外道排、屋面、立面、附属工程。":/主要分部分项工程施工方案|主要施工方法/u.test(b)?"关键小节结构要求:必须按专业工程和关键工序展开,不得只写概述流程。\n必须覆盖资料明确的专业工程范围。\n必须逐项响应“项目特点、重点、难点分析”中的控制对象,写明施工范围、施工方法、工艺流程、关键控制点、检查验收和资料闭环。":""),d.prompt,`目标正文约 ${a.targetWords} 字,最多 ${a.maxWords||Math.ceil(1.18*a.targetWords)} 字。正文必须分布在 #### 三级小节下,包含对象范围、执行措施、检查验收和资料闭环;没有精确数值时写正式过程控制,不编造数值。`,"禁止写“根据/依据招标文件、补疑澄清文件、工程量清单及设计图纸”等资料来源罗列话术;直接写项目事实、施工内容、控制措施和验收要求。",bA(a.sectionTitle)?"该小节属于施工组织设计通用管理小节:允许基于项目基础事实、招标范围、工期质量目标、现场组织要求和施工总承包管理逻辑形成正式措施,但不得编造具体姓名、品牌、型号、金额或不存在的日期。":"",a.qualityFeedback||"",e?`压缩证据:
71
- ${e}`:""].filter(Boolean).join("\n\n"),!1,{maxTokens:Math.min(4800,Math.max(2200,Math.ceil(1.65*a.targetWords))),temperature:.2,signal:a.signal,diagnostics:a.diagnostics});if(!g||g.length<40){let b=a.diagnostics?.llm.lastError;a.diagnostics&&(a.diagnostics.llm.lastError=`focused writer 无正文:${a.chapter.title} / ${a.sectionTitle} / ${b&&b!==f?b:"空响应"}`);return}let h=(0,v.kT)((0,v.FD)(g.startsWith("### ")?g:`### ${a.sectionTitle}
72
-
73
- ${g}`,a.forbidDrawingImages)),i=bj(h);if(i.length<40){a.diagnostics&&(a.diagnostics.llm.lastError=`focused writer 正文过短:${a.chapter.title} / ${a.sectionTitle} / ${i.length}字`);return}let j=bx(a.sectionTitle,h);if(j){a.diagnostics&&(a.diagnostics.llm.lastError=`focused writer ${j}:${a.chapter.title} / ${a.sectionTitle}`);return}return by(a.sectionTitle,h.replace(/^##\s+.*\n+/u,"").trim())}function bC(a){return/危大工程专项施工方案审批流程|原材料进场复试|见证取样/u.test(a)?650:/项目主要施工内容/u.test(a)?1800:/主要分部分项工程施工方案|主要施工方法/u.test(a)?1200:1500*!!/项目特点.*重点.*难点|重点.*难点.*分析/u.test(a)}async function bD(a){let b=(0,w.V7)(a.currentContent),c=bC(a.sectionTitle),d=Math.max(a.targetWords,c)-b,e=a8(a.sectionTitle,a.chapter,a.evidence),f=bg(a.sectionTitle,e);if(d<=Math.max(260,Math.floor(.12*a.targetWords)))return a.currentContent;let g=(0,s.ks)((0,s.QO)(a.chapter,e),{maxChars:(0,s.Pc)(Math.min(a.targetWords,2600),3500,9e3)}),h=Math.max(500,d),i=await (0,al.rI)(["你是专业文档小节补写专家。只做补写,不重写全文。",v.rd,"必须保留已有正文中的事实、参数、编号和结构;只补充缺口段落,不删除、不压缩已有内容。",v.KX,a.promptTexts].filter(Boolean).join("\n\n"),[`章节标题:${a.chapter.title}`,`当前小节:${a.sectionTitle}`,a.requirement?`用户要求:${a.requirement}`:"",a.factCoverageContext||"",aO(a.chapter.title,a.sectionTitle),f.prompt,`当前小节约 ${b} 字,目标约 ${a.targetWords} 字,本轮补充约 ${h} 字。`,"请输出可直接追加或插入到本小节的补充段落;不要重复小节标题,不要解释生成过程;优先使用绑定资料中的事实和量化参数,不得输出“该小节围绕”等模板化占位句。",g?`绑定材料:
74
- ${g}`:"",`已有小节正文:
75
- ${bj(a.currentContent).slice(0,12e3)}`].filter(Boolean).join("\n\n"),!1,{maxTokens:bI(h),temperature:.25,signal:a.signal,diagnostics:a.diagnostics}),j=(0,v.kT)((0,v.FD)(i||"",a.forbidDrawingImages)).replace(/^#{3,4}\s+.*\n+/u,"").trim();return j?`${a.currentContent.trim()}
76
-
77
- ${j}`:a.currentContent}function bE(a){return a6(a.chapter,Math.max(1e3,(0,w.V7)(a.content))).flatMap(b=>{let c=b.title.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&"),d=a.content.match(RegExp(`^#{2,4}\\s+(?:\\d+(?:\\.\\d+)*\\s+)?${c}\\s*\\n([\\s\\S]*?)(?=^#{2,4}\\s+|$)`,"mu")),e=d?.[1]||"",f=bg(b.title,a8(b.title,a.chapter,a.evidence)),g=function(a,b,c){if(0===c.items.length)return;let d=(0,w.V7)(b);if(d<180)return`小节正文过短,需补写专业做法和证据依据`;let e=/概况|范围|清单|图纸|设计|材料|设备|工期|质量|安全|危大|资源|验收/u.test(a),f=c.items.filter(a=>bf(a.text,b)>=(a.quantified?1:2)),g=c.items.filter(a=>a.quantified&&bf(a.text,b)>=1),h=e?Math.min(c.items.length,2):Math.min(c.items.length,1),i=e&&c.quantifiedCount>0?1:0;if(f.length>=h&&g.length>=i||!e&&d>=650&&/复核|检查|验收|交底|台账|整改|闭环|进场|协调|保护/u.test(b))return;let j=c.items.filter(a=>!f.includes(a)).slice(0,e?4:2).map(a=>a.text);return`知识库事实落位不足:当前小节已落位 ${f.length}/${c.items.length} 条知识库事实、${g.length}/${c.quantifiedCount} 条量化事实;建议补入:${j.join(";")}`}(b.title,e,f);return g?[`${b.title}:${g}`]:[]})}async function bF(a){if(bA(a.sectionTitle)){let b=await bB({...a,targetWords:Math.max(620,Math.floor(.75*a.targetWords)),maxWords:Math.ceil(1.22*Math.max(620,Math.floor(.75*a.targetWords))),qualityFeedback:`本小节使用 focused writer 优先成稿。必须直接输出“### ${a.sectionTitle}”及正式正文。`}).catch(b=>{a.diagnostics&&(a.diagnostics.llm.lastError=`focused writer 异常:${a.chapter.title} / ${a.sectionTitle} / ${b instanceof Error?b.message:String(b)}`)});if(b)return(0,v.kT)((0,v.FD)(b,a.forbidDrawingImages))}let b=function(a,b){if(/项目主要施工内容/u.test(a))return[{sectionTitle:a,taskTitle:a,targetWords:Math.max(b,2200),index:1,total:1}];let c=bz(a)?760:Math.max(1400,Math.floor(Number(process.env.DOCUMENT_WRITING_TASK_MAX_WORDS??2800))),d=bz(a)?Math.max(3,Math.ceil(b/c)):b>1.5*c?Math.ceil(b/c):1,e=Math.max(800,Math.ceil(b/d));return d<=1?[{sectionTitle:a,taskTitle:a,targetWords:b,index:1,total:1}]:Array.from({length:d},(b,c)=>({sectionTitle:a,taskTitle:bi(a,c,d),targetWords:e,index:c+1,total:d}))}(a.sectionTitle,a.targetWords),c=[];for(let d of b){let b;(0,P.Te)(a.signal);let e=d.total>1?2:3;for(let c=0;c<e&&!b;c+=1){let f=0===c?d.targetWords:Math.max(560,Math.floor(d.targetWords*(1===c?.85:.7)));try{b=await bh({...a,sectionTitle:d.sectionTitle,targetWords:f,maxWords:Math.ceil(1.18*f),qualityFeedback:[d.total>1?`这是首轮生成的主题任务 ${d.index}/${d.total},只聚焦“${d.taskTitle}”。不得重复同小节其他主题的通用表述;优先写入与本主题相关的资料事实、规格、数量、标准、检查要求和执行动作。`:a.qualityFeedback,c>0?`上一轮未生成有效正文。本轮必须直接输出“### ${a.sectionTitle}”及正式正文,优先完成可审查、可落位事实的核心内容。`:""].filter(Boolean).join("\n")})}catch{b=void 0}if(!b&&c===e-1)try{b=await bB({...a,sectionTitle:d.sectionTitle,targetWords:Math.max(520,Math.floor(.85*f)),maxWords:Math.ceil(1.18*Math.max(520,Math.floor(.85*f))),qualityFeedback:`前序 Writer 未完成。本轮使用轻量定向 Writer,只完成“${a.sectionTitle}”正式正文。`})}catch(c){a.diagnostics&&(a.diagnostics.llm.lastError=`focused writer 后置异常:${a.chapter.title} / ${d.sectionTitle} / ${c instanceof Error?c.message:String(c)}`),b=void 0}}b&&c.push(bj(b))}if(0===c.length){if(/项目主要施工内容/u.test(a.sectionTitle)){let b=bv(a.sectionTitle,a.projectContext,a.evidence);if(b)return(0,v.kT)((0,v.FD)(b,a.forbidDrawingImages))}if(/主要分部分项工程施工方案|主要施工方法/u.test(a.sectionTitle)){let b=bw(a.sectionTitle,a.projectContext,a.evidence);if(b)return(0,v.kT)((0,v.FD)(b,a.forbidDrawingImages))}return}let d=`### ${a.sectionTitle}
78
-
79
- ${c.join("\n\n")}`;if(200>(0,w.V7)(bj(d))){if(a.diagnostics&&(a.diagnostics.llm.lastError=`task writer 正文空壳:${a.chapter.title} / ${a.sectionTitle} / ${(0,w.V7)(bj(d))}字`),/主要分部分项工程施工方案|主要施工方法/u.test(a.sectionTitle)){let b=bw(a.sectionTitle,a.projectContext,a.evidence);if(b)return(0,v.kT)((0,v.FD)(b,a.forbidDrawingImages))}return}let e=bx(a.sectionTitle,d);if(e){if(a.diagnostics&&(a.diagnostics.llm.lastError=`task writer ${e}:${a.chapter.title} / ${a.sectionTitle}`),/项目主要施工内容/u.test(a.sectionTitle)){let b=bv(a.sectionTitle,a.projectContext,a.evidence);if(b)return(0,v.kT)((0,v.FD)(b,a.forbidDrawingImages))}return}return d=await bD({...a,currentContent:d,targetWords:a.targetWords}),(0,v.kT)((0,v.FD)(d,a.forbidDrawingImages))}async function bG(a){let b=a6(a.chapter,a.targetWords);if((a.chapter.sections||[]).filter(Boolean).length>0)return bH(a);if(b.length<2)return;let c=b.length>=30?4:5,d=Number(process.env.DOCUMENT_SECTION_GROUP_SIZE||c),e=Math.max(2,Math.min(b.length>=30?5:6,Number.isFinite(d)?Math.floor(d):c)),f=b.some(a=>/项目主要施工内容/u.test(a.title)),g=function(a,b){let c=[],d=new Map;for(let b of a){var e;let a=(e=b.title,/工期|进度|节点|计划|纠偏|预警/u.test(e)?"工期进度":/质量|验收|三检|样板|隐蔽|复试|实测|通病/u.test(e)?"质量验收":/安全|危大|风险|隐患|应急|临边|洞口|消防|临电/u.test(e)?"安全风险":/文明|扬尘|噪声|绿色|废水|垃圾|环保|智慧/u.test(e)?"文明绿色":/劳务|工资|实名|银行|考勤|人员|岗位|组织|职责/u.test(e)?"组织劳务":/资源|材料|设备|机械|人材机|调配/u.test(e)?"资源保障":/施工|工艺|流程|顺序|穿插|部署|区段|流水/u.test(e)?"施工组织":"综合管理"),c=d.get(a)||[];c.push(b),d.set(a,c)}for(let a of d.values())for(let d=0;d<a.length;d+=b)c.push(a.slice(d,d+b));return c}(b,e),h=Number(process.env.DOCUMENT_SECTION_GROUP_CONCURRENCY||3),i=Math.max(1,Math.min(g.length,Number.isFinite(h)?Math.floor(h):3)),j=Array(g.length).fill(""),k=0,l=async c=>{let d=c.map(a=>a.title);d.join("、");let e=Math.min(c.reduce((a,b)=>a+b.targetWords,0),b.length>=30?2400:2800),g=await Promise.all(d.map(b=>a.sectionEvidenceProvider?a.sectionEvidenceProvider(b).catch(()=>[]):Promise.resolve([]))),h=[...a.evidence,...g.flat().filter(a=>!!a)].filter(a=>!/违约金额|元\/条|罚款|处罚|检查项目检查内容|清单不再单独列项/u.test(a.content.slice(0,500))).sort((a,b)=>b.score-a.score).slice(0,10).map(a=>({...a,content:a.content.slice(0,1400)})),i={...a.chapter,sections:b.length>=30?d.slice(0,12):d};if(k>=(b.length>=30?1:2))throw Error(`小节组 ${d.join("、")} 连续空响应,已阻断以避免标题占位正文`);let j=async()=>{let b=Array(c.length),e=[],f=Math.max(1,Math.min(c.length,Number(process.env.DOCUMENT_SECTION_GROUP_TASK_CONCURRENCY||2))),g=async(b,c=a.signal)=>{let d=c||a.signal,f=a.sectionEvidenceProvider?await a.sectionEvidenceProvider(b.title).catch(()=>[]):[],g=a.diagnostics?.llm.lastError;try{let c=await bF({template:a.template,chapter:a.chapter,sectionTitle:b.title,evidence:f.length?[...h,...f]:h,missingFacts:a.missingFacts,promptTexts:a.promptTexts,projectContext:a.projectContext,requirement:a.requirement,roleContext:a.roleContext||"",targetWords:Math.max(b.targetWords,900),maxWords:Math.ceil(1.16*Math.max(b.targetWords,900)),forbidDrawingImages:a.forbidDrawingImages,factCoverageContext:a.factCoverageContext,signal:d,diagnostics:a.diagnostics});if(!c){let c=a.diagnostics?.llm.lastError;e.push(`${b.title}:${c&&c!==g?c:"Writer 返回空正文"}`)}return c}catch(a){e.push(`${b.title}:${a instanceof Error?a.message:String(a)}`);return}};for(let d=0;d<c.length;d+=f){(0,P.Te)(a.signal);let e=c.slice(d,d+f);(await Promise.all(e.map(b=>g(b,a.signal)))).forEach((a,c)=>{b[d+c]=a})}let i=d.filter((a,c)=>!b[c]);if(i.length>0)throw Error(`${a.chapter.title} 小节组生成未完成:${i.map(a=>`${a}(${e.filter(b=>b.startsWith(`${a}:`)).join(";")||"未记录到具体异常"})`).join("、")}`);let j=b.filter(Boolean).join("\n\n");return{content:j,llmChars:(0,w.V7)(j)}};if(!f&&!d.some(a=>/项目主要施工内容/u.test(a)))try{let b=await a5(a.template,i,h,a.missingFacts,a.promptTexts,a.projectContext,a.requirement,a.roleContext||"",{forbidDrawingImages:a.forbidDrawingImages,minWords:Math.floor(.45*e),targetWords:e,maxWords:Math.ceil(1.08*e),maxTokens:bI(Math.floor(.45*e),e),factCoverageContext:`${a.factCoverageContext||""}
80
- 本轮输出多个节时,每个 ### 节下必须至少有一个 #### 三级小节承载正文。`,signal:a.signal,diagnostics:a.diagnostics}),c=function(a,b){let c=b;for(let b of a){if(/项目主要施工内容/u.test(b))continue;let a=b.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&");c=c.replace(RegExp(`(^###\\s+(?:\\d+\\.\\d+\\s+)?${a}\\s*\\n)([\\s\\S]*?)(?=^###\\s+|^##\\s+|$)`,"gmu"),(a,c,d)=>/^####\\s+\\S+/mu.test(d)?`${c}${d}`:`${c}
81
- #### ${b}
82
-
83
- ${d.trim()}
84
- `)}return c}(d,b?.replace(RegExp(`^##\\s+${a.chapter.title.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&")}\\s*`,"mu"),"").trim()||""),f=(0,w.V7)(c);if(f>=Math.max(500,Math.floor(.25*e)))return{content:c,llmChars:f}}catch{}return j()};for(let b=0;b<g.length;b+=i){(0,P.Te)(a.signal);let c=g.slice(b,b+i);(await Promise.all(c.map(a=>l(a)))).forEach((a,c)=>{j[b+c]=a.content,a.llmChars<120&&(k+=1)})}let m=g.filter((a,b)=>!j[b]);if(m.length>0)throw Error(`${a.chapter.title} 小节组生成未完成:${m.flatMap(a=>a.map(a=>a.title)).join("、")}`);let n=j.filter(Boolean).join("\n\n");if(n.trim())return(0,v.kT)((0,v.FD)(`## ${a.chapter.title}
85
-
86
- ${n}`,a.forbidDrawingImages))}async function bH(a){let b=a6(a.chapter,a.targetWords);if(b.length<2)return;let c=Number(process.env.DOCUMENT_SECTION_CONCURRENCY||b.length||1),d=Math.max(1,Math.min(b.length,Number.isFinite(c)?Math.floor(c):b.length||1)),e=Array(b.length),f=Array(b.length),g=0,h=async(c,d=!1)=>{a.onSectionProgress?.({completed:g,total:b.length,sectionTitle:c.title,phase:d?"retry":"start",partialSections:[...f]});try{let d=a.sectionEvidenceProvider?await a.sectionEvidenceProvider(c.title).catch(()=>[]):[],e={...a,evidence:d.length?[...a.evidence,...d]:a.evidence,projectContext:a.projectContext,roleContext:a.roleContext||"",factCoverageContext:a.factCoverageContext,compactProjectContext:a.compactProjectContext,sectionTitle:c.title,targetWords:c.targetWords,maxWords:a.maxWords?Math.max(c.targetWords,Math.ceil(a.maxWords/b.length)):Math.ceil(1.12*c.targetWords)},h=c.targetWords>=1400?await bF({...e,signal:a.signal}):await bJ({...e,signal:a.signal},function(a){let b=Number(process.env.DOCUMENT_SECTION_SUPPLEMENT_ATTEMPTS??2);return Math.max(1,Math.min(3,Number.isFinite(b)?Math.floor(b):2,a))}(b.length));return h&&(g+=1,f[c.index]=h,a.onSectionProgress?.({completed:g,total:b.length,sectionTitle:c.title,phase:"complete",partialSections:[...f]})),h}catch(b){console.warn(`[document-workflow] 小节生成失败:${a.chapter.title} / ${c.title}`,b);return}},i=b.length;for(let c=0;c<i;){(0,P.Te)(a.signal);let f=(0,al.bU)()>=2?1:d,g=b.slice(c,Math.min(i,c+f));(await Promise.all(g.map((a,b)=>h({...a,index:c+b})))).forEach((a,b)=>{e[c+b]=a}),c+=f}let j=e.map((a,b)=>a?-1:b).filter(a=>a>=0),k=j;if(k.length>0){for(let c=0;c<k.length;){(0,P.Te)(a.signal);let f=(0,al.bU)()>=2?1:d,g=k.slice(c,c+f);(await Promise.all(g.map(a=>h({...b[a],index:a},!0)))).forEach((a,b)=>{a&&(e[g[b]]=a)}),c+=f}j=e.map((a,b)=>a?-1:b).filter(a=>a>=0);for(let c=0;c<j.length;){(0,P.Te)(a.signal);let f=(0,al.bU)()>=2?1:d,g=j.slice(c,c+f);(await Promise.all(g.map(a=>h({...b[a],targetWords:Math.max(b[a].targetWords,900),index:a},!0)))).forEach((a,b)=>{a&&(e[g[b]]=a)}),c+=f}}for(let c of j=e.map((a,b)=>a?-1:b).filter(a=>a>=0)){let d=b[c].title;e[c]=/项目主要施工内容/u.test(d)?bv(d,a.projectContext,a.evidence)||void 0:/主要分部分项工程施工方案|主要施工方法/u.test(d)&&bw(d,a.projectContext,a.evidence)||function(a){let b=/项目特点.*重点.*难点|重点.*难点.*分析/u.test(a)?5:3,c=Array.from({length:b},(c,d)=>bi(a,d,b)),d={0:"依据本项目已确认资料中的项目边界、工程量与设计做法,逐项明确作业对象、部位范围与过程控制目标,作为作业条件确认、技术交底和过程实施的输入。",1:"按“作业条件确认→技术交底→过程实施→自检互检→整改复查→资料归档”组织,交底覆盖到直接作业人员,实施过程留存检查记录与影像,问题整改定人、定时限、定复查。",2:"过程控制重点落到材料规格与验收、工序交接、测量复核和成品保护;关键节点由责任岗位复核后签字确认,发现偏差当日反馈、限期整改并销项。",3:"按项目质量与安全目标分解到责任岗位,执行日巡查、周复核、节点验收三级检查,形成台账与闭环记录。",4:"收尾阶段完成缺陷自查、整改销项、验收资料整理与移交,确保与总体进度计划和质量验收要求衔接。"};return[`### ${a}`,"",...c.flatMap((a,b)=>[`#### ${a}`,"",d[b%5]||d[0],""])].join("\n")}(d)}let l=e.map(a=>a||"");return(0,v.kT)((0,v.FD)(`## ${a.chapter.title}
87
-
88
- ${l.join("\n\n")}`,a.forbidDrawingImages))}function bI(a,b){return Math.min(24e3,Math.max(5e3,Math.ceil(1.45*(b||a))))}async function bJ(a,b){let c;for(let d=0;d<b;d+=1){let b=await bh({...a,qualityFeedback:c});if(!b){c="上一轮未生成有效正文,请重新生成完整小节正文。";continue}let d=function(a,b){let c=b.replace(/^#{3,4}\s+.*\n+/u,"").split(/\r?\n/u).filter(a=>!/^\s*\|/u.test(a)).filter(a=>!/^\s*\|?\s*:?-{3,}:?/u.test(a)).join("\n"),d=(0,w.V7)(c);return d<360?`正文有效内容不足:${a} 当前约 ${d} 字`:/资料未提供|信息有限|无法确定|待补充|建议扩大本地知识库检索|以下是|本文档|本小节围绕/u.test(c)?`存在空泛或说明性话术:${a}`:void 0}(a.sectionTitle,b);if(!d)return b;c=d}}function bK(a,b){let c=a.trim();if(!c)return[];let d=Math.max(1e3,Math.ceil(b)),e=[],f=0;for(;f<c.length;){let a=Math.min(f+d,c.length),b=c.lastIndexOf("\n\n",a);(b<=f||a-b>.25*d)&&(b=c.lastIndexOf("\n",a)),(b<=f||a-b>.2*d)&&(b=a),e.push(c.slice(f,b).trim()),f=b}return e.filter(Boolean)}function bL(a){return"string"==typeof a?a:a&&"object"==typeof a&&"message"in a?String(a.message):JSON.stringify(a)}function bM(a){let b=Number(process.env[a]);return Number.isFinite(b)&&b>0?Math.ceil(b):0}async function bN(a,b,c){let d,f=(0,al.$y)();if(!f)return{notes:[],stage:(0,aG.X5)({type:"file_understanding",roleId:"multimodal-files",status:"skipped",message:"当前模型不可用"},{subtitle:"多模态参考文件"})};try{d=(0,aN.createProvider)(f.model.provider,{apiKey:f.provider.apiKey,baseUrl:f.provider.baseUrl,modelName:f.model.name,directEndpoint:f.provider.directEndpoint})}catch{return{notes:[],stage:(0,aG.X5)({type:"file_understanding",roleId:"multimodal-files",status:"skipped",message:`当前模型服务 ${f.model.provider} 不支持多模态文件理解,已跳过`},{subtitle:"多模态参考文件"})}}let g=[...new Set(b.map(a=>a.filePath).filter(a=>/\.(png|jpe?g|webp|pdf|docx|xlsx)$/iu.test(a)))].slice(0,4);if(0===g.length)return{notes:[],stage:(0,aG.X5)({type:"file_understanding",roleId:"multimodal-files",status:"skipped",message:"未找到多模态参考文件"},{subtitle:"多模态参考文件"})};let h=[];for(let b of g){let c=e.isAbsolute(b)?b:e.join(a,b);if(ai.existsSync(c)&&!(ai.statSync(c).size>8388608)&&(h.push({name:e.basename(b),buffer:ai.readFileSync(c),mimeType:/\.png$/iu.test(b)?"image/png":/\.jpe?g$/iu.test(b)?"image/jpeg":/\.webp$/iu.test(b)?"image/webp":"application/pdf"}),h.length>=4))break}if(0===h.length)return{notes:[],stage:(0,aG.X5)({type:"file_understanding",roleId:"multimodal-files",status:"skipped",message:"未找到可读取的多模态文件"},{subtitle:"多模态参考文件"})};try{if(c?.aborted)throw Error("aborted");let a=await d.understandFiles?.({files:h});if(!a?.length)return{notes:[],stage:(0,aG.X5)({type:"file_understanding",roleId:"multimodal-files",status:"failed",message:"多模态模型未返回文件理解结果"},{subtitle:"多模态参考文件"})};return{notes:a,stage:(0,aG.X5)({type:"file_understanding",roleId:"multimodal-files",status:"success",message:`已完成 ${a.length} 个多模态文件理解`},{subtitle:"多模态参考文件"})}}catch(a){return console.error("[multimodal] failed:",a),{notes:[],stage:(0,aG.X5)({type:"file_understanding",roleId:"multimodal-files",status:"failed",message:"多模态文件理解失败"},{subtitle:"多模态参考文件"})}}}async function bO(a){(0,P.Te)(a.signal);let b=a.chapters.map(a=>{let b=a.content.replace(/#{1,6}\s+/gu,"").replace(/\*\*/gu,"").replace(/\|/gu," ").replace(/[\n\r]+/gu," ").trim();return`章节:${a.title}
89
- ${b.slice(0,1600)}`}).join("\n\n---\n\n"),c=function(a){let b=Math.ceil(a.totalChars/Math.max(1e3,a.chunkChars)),c="chapter"===a.phase?bM("DOCUMENT_CHAPTER_REVIEW_MAX_CHUNKS")||Math.min(Math.max(2,Math.floor(a.totalChars/a.chapterCount/4e3)),b):"global"===a.phase?bM("DOCUMENT_GLOBAL_REVIEW_MAX_CHUNKS")||Math.min(4,b):bM("DOCUMENT_FINAL_REVIEW_MAX_CHUNKS")||Math.min(6,b);return{chunks:c,budgetPerChunk:Math.ceil(a.totalChars/Math.max(1,c)),maxIssues:Math.max(4,Math.min(28,Math.ceil(2.5*c)))}}({totalChars:b.length,chapterCount:a.chapters.length,chunkChars:16e3,phase:"global"}),d=bK(b,16e3).map((a,c)=>`**第 ${c+1}/${bK(b,16e3).length} 部分**
90
-
91
- ${a}`).slice(0,c.chunks),e=[...new Set((await Promise.all(d.map(b=>(0,al.bb)("你是专业文档审查专家。检查跨章节一致性。只返回 JSON。",`${a.promptTexts}
92
-
93
- ${a.projectContext||""}
94
-
95
- ${b}
96
-
97
- 返回 JSON:{"issues":[]}`,{maxTokens:1e3,temperature:.1,signal:a.signal,diagnostics:a.diagnostics})))).flatMap(a=>Array.isArray(a?.issues)?a.issues:[]).map(bL).filter(Boolean))];return{issues:e,stage:(0,aG.X5)({type:"llm_review",roleId:"global-consistency-review",status:e.length>0?"failed":"success",message:e.length>0?`全局一致性审查完成:发现 ${e.length} 个跨章问题`:"全局一致性审查通过"},{subtitle:"全局一致性审查"})}}let bP=/安全|文明|质量|绿色施工|环保|扬尘|消防|应急|危大|风险|规范|标准|管理要求|施工工艺|技术措施|验收/u,bQ=/项目名称|工程名称|建设地点|建设单位|招标人|发包人|建设规模|招标范围|合同工期|计划工期|质量标准|危大工程清单|工程量|材料规格|设备型号|图纸参数|报价|单价|利润|税率|合同金额|联系方式|品牌/u,bR=/报价|单价|合价|金额|利润|税率|增值税|招标控制价|最高投标限价|中标价|合同价|暂列金额/u,bS=/联网增强|联网检索|网页资料|搜索结果|根据网页|互联网资料|在线资料|浏览器|搜索引擎/u,bT=["项目名称","工程名称","建设地点","建设单位","招标人","发包人","建设规模","招标范围","合同工期","计划工期","工程量","报价","单价"];function bU(a){return a.replace(/&amp;/gu,"&").replace(/&lt;/gu,"<").replace(/&gt;/gu,">").replace(/&quot;/gu,'"').replace(/&#39;/gu,"'").replace(/<[^>]+>/gu,"").replace(/\s+/gu," ").trim()}async function bV(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=bU(a[1]||""),c=bU(a[2]||""),d=bU(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||bQ.test(b)||bR.test(b)||bS.test(b)||d.some(a=>a&&b.includes(a)))&&(0===c.length||c.some(b=>a.url.includes(b)))}).slice(0,b):[]}async function bW(a){if(!a.config.enabled||!function(a,b){let c=`${a} ${b.join(" ")}`;return!(!bP.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(bQ,"")} 公开规范 通用要求`.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 bV(e,a.config.maxResultsPerQuery,a.config.trustedDomains,a.runtimeRules.forbiddenTerms||[],a.signal))){let e=function(a,b){let c=a;for(let a of bT)c=c.replace(RegExp(`${a}[^。;;
98
- ]{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(bR,"").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}
99
- ${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 bX(a){return e.resolve(a).replace(/\\/gu,"/").toLowerCase()}function bY(a,b=[]){return{projectId:a,allowedFilePaths:[...new Set(b.filter(Boolean).map(bX))]}}function bZ(a){return!!a?.allowedFilePaths.length}function b$(a,b){if(!bZ(b))return!0;if(!a)return!1;let c=bX(a);return b.allowedFilePaths.includes(c)}function b_(a,b){return a.filter(a=>b$(a.filePath,b))}function b0(a,b){return a.filter(a=>b$(a.sourceFile,b))}function b1(a,b,c){if(!bZ(b))return;let d=a.filter(a=>!b$(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 b2(a){return/--|延期到|资料|附件|扫描|目录|汇总|打包|备份|\d{1,2}\.\d{1,2}/u.test(a)}function b3(a){return a.replace(/[((]\d+[))]/gu,"").replace(/副本|最终版|扫描件|定稿/gu,"").replace(/[\s,。,.;;::《》“”‘’()()_-]+/gu,"").toLowerCase()}function b4(a,b){let c=b3(b);if(!c||c.length<4)return!0;let d=b3(a);return!!d.includes(c)||c.length>=12&&d.includes(c.slice(0,Math.max(8,Math.floor(.72*c.length))))}function b5(a){return a.replace(/[((]\d+[))]/gu,"").replace(/副本|最终版|扫描件|定稿/gu,"").replace(/\s+/gu,"").replace(/[,。,.;;::《》“”‘’()()_-]/gu,"").toLowerCase()}function b6(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=b5(d&&/工期|总工期|合同工期|计划工期|施工周期/u.test(c)?d:c);return!e||e.length>80?"":e}function b7(a){return a.replace(/[\s,,.。::;;||()()《》<>【】"“”'‘’]/gu,"").toLowerCase()}function b8(a){let b=String(a.value||"").trim(),c=`${a.label}${b}`;return!(!/项目|工程|编号|地点|规模|范围|工期|质量|安全|资源|材料|设备|验收|\d/u.test(c)||/^(?:见|详见|按|执行|参见|依据).{0,16}(?:前附表|招标公告|招标文件|合同|协议书|通用条款|专用条款|图纸|清单|附件|资料)$/u.test(b)||/^(?:合同协议书|通用条款|专用条款|招标文件|招标公告|投标人须知前附表|附件|资料)$/u.test(b.replace(/[()()\d一二三四五六七八九十、..\s]/gu,""))||/^#+\s*/u.test(b)||/^(?:技术参数|精确参数)$/u.test(a.label)||/^[((]\s*\d+[))]/u.test(b)&&/具备|证书|考核|资格|人员/u.test(b))&&(!(b.length<4)||!!/\d/u.test(b))}function b9(a){return(0,ak.K3)(`${a.fieldName||a.key} ${(0,P.lG)(a.value)}`)}function ca(a){return[...a.project,...a.schedule,...a.quality,...a.safety,...a.resources,...a.preciseFacts,...a.bills,...a.drawings,...a.rules,...a.specifications].map(b9).join("\n")}function cb(a,b){let c=[{label:"工期",corpus:ca({...b,project:[],quality:[],safety:[],resources:[],preciseFacts:[],bills:[],drawings:[],rules:[],specifications:[]}),required:/工期|日历天|合同工期|计划工期/u},{label:"质量",corpus:ca({...b,project:[],schedule:[],safety:[],resources:[],preciseFacts:[],bills:[],drawings:[],rules:[],specifications:[]}),required:/质量目标|质量标准|验收|复验/u},{label:"安全",corpus:ca({...b,project:[],schedule:[],quality:[],resources:[],preciseFacts:[],bills:[],drawings:[],rules:[],specifications:[]}),required:/安全|文明|风险|应急/u},{label:"资源",corpus:ca({...b,project:[],schedule:[],quality:[],safety:[],preciseFacts:[],bills:[],drawings:[],rules:[],specifications:[]}),required:/资源|材料|设备|劳动力/u},{label:"工程量",corpus:ca({...b,project:[],schedule:[],quality:[],safety:[],resources:[],preciseFacts:[],drawings:[],rules:[],specifications:[]}),required:/工程量|清单|建筑面积|长度|吨|台|套|项/u}],d=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 cc(a){let b=[],c=new Map(a.map(a=>[a.title,a.content])),d=a.map(a=>`${a.title}
100
- ${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 cd=[{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 ce(a){return a.replace(/[\s,。;;::|]/gu,"").trim()}function cf(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(ce).filter(Boolean)}let cg={project:"项目基础事实",schedule:"工期与节点",quality:"质量目标与验收",safety:"安全文明要求",resources:"资源投入依据",quantities:"清单/图纸/工程量事实",rules:"规范规则与验收要求"};function ch(a){return 0===a.length?100:Math.round(a.reduce((a,b)=>a+b,0)/a.length)}function ci(...a){return a.flat()}var cj=c(87942);let ck=[{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 cl(a){return/^(见|详见|参见|按|以).{0,30}(招标公告|招标文件|投标人须知|前附表|合同|附件|图纸|清单|约定|规定|执行)/u.test(a)||/见招标公告|见投标人须知前附表|详见|按.*执行/u.test(a)}function cm(a,b){let c=aq(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 噪声")),ck.some(a=>a.key!==b.key&&a.aliases.some(a=>c.includes(a)))&&(e-=45,d.push("包含其他字段名,疑似字段串位")),cl(c)&&(e-=35,d.push("引用型弱值"));let g=function(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(cl(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:"编号格式不合法"};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:"文本字段"}}}(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+=15,d.push("来源文件可信")),"generated_markdown"===a.sourceType&&(e-=10),{...a,value:c,confidence:e,rejected:f,reasons:d}}function cn(a){return function(a,b=ck){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 ck.find(c=>c.key===a.fieldId||c.aliases.some(a=>b.includes(a)))}(c);if(!a)continue;let d=(0,P.lG)(c.value);b.push(cm({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=ck.find(a=>a.aliases.some(a=>e.includes(a))||a.label===e);!h||!f||/内容|参数|资料未明确|系统暂未确认|暂未从知识库确认/u.test(f)||c.push(cm({fieldKey:h.key,label:h.label,value:f,sourceType:"generated_markdown",sourceName:g||b},h))}return c}(a.markdown||"")])}function co(a){return({user:100,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 cp(a){let b=e.join(process.env.HOME||process.cwd(),".customize-agent","cache","document-workflow",(0,P.c6)(a||"default"));return ai.mkdirSync(b,{recursive:!0}),b}var cq=c(32434);function cr(a,b){return 0>=(0,w.V7)(a.content)?"failed":"completed"}let cs=["项目名称 项目编号 招标人 项目概况与招标范围 建设地点 建设规模 计划工期 质量标准 合同估算价","计划工期 合同工期 总工期 日历天","合同估算价 合同估算价格 投资估算 最高投标限价 招标控制价","质量标准 质量目标 合格","建设地点 建设规模 招标范围"];function ct(a){let b=aq(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 cu(a){let b=[],c=new Set(a.scopedFilePaths),d=await Promise.all(cs.map(async b=>((0,P.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)&&ct(`${a.sectionTitle||""}
101
- ${a.content}`)>0).map(b=>({chapterId:"project-basic",filePath:b.filePath,score:Math.max(b.score,1)+ct(`${b.sectionTitle||""}
102
- ${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,P.Te)(a.signal);let d=a.project.getFileDetail?.(c,{maxChunkContentChars:12e3});if(d?.chunks?.length)for(let e of d.chunks){let f=ct(`${e.sectionTitle||""}
103
- ${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||""}|${aq(a.content).slice(0,180)}`;return!e.has(b)&&(e.add(b),!0)}).slice(0,24)}function cv(a){return a.filter(a=>/项目名称|工程名称|项目编号|招标项目编号|招标人|建设单位|发包人|建设地点|建设规模|招标范围|计划工期|合同工期|周期要求|质量标准|合同估算|投资估算|最高投标限价|招标控制价/u.test(`${a.key||""}${a.fieldName||""}${a.fieldId||""}`))}function cw(a){return aq(a).replace(/[。;;]$/u,"").trim()}function cx(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))&&as(h||"project_name",e)&&b.set(g,[cw(e),cw(f||"项目资料")||"项目资料"])}return b}(b),e=cn({facts:a,markdown:c}),f=a=>cw((0,P.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&&as(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&&as("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 cy(a,b="",c=b){return["**项目基本信息表**","","| 信息项 | 内容 |","|---|---|",...cx(a,b,c).map(a=>`| ${a[0]} | ${a[1]} |`)].join("\n")}function cz(a){return/^\s*\|?\s*:?-{3,}:?\s*(?:\|\s*:?-{3,}:?\s*)+\|?\s*$/u.test(a.trim())}function cA(a){let b=a.trim();if(!b||/^#{1,6}\s+/u.test(b)||cz(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 cB(a){return a.trim().replace(/^\|/u,"").replace(/\|$/u,"").trim().split("|").map(a=>a.trim())}function cC(a,b){let c=a.slice(0,b);for(;c.length<b;)c.push("");return`| ${c.join(" | ")} |`}function cD(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(cA(d)&&cz(f)){for(c.push(d),e!==a+1&&c.push(b[a+1]||""),c.push(f),a=e+1;a<b.length&&cA(b[a]||"");)c.push(b[a]||""),a+=1;continue}if(!cA(d)){c.push(d),a+=1;continue}let g=[],h=a;for(;h<b.length&&cA(b[h]||"");)g.push(b[h]||""),h+=1;let i=g.map(a=>cB(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(cC(function(a){if(2===a)return["信息项","内容"];let b=["控制项目","执行要求","责任岗位","检查标准","形成资料","闭环要求","备注"];return Array.from({length:a},(a,c)=>b[c]||`补充说明${c+1}`)}(k),k)),c.push(cC(Array.from({length:k},()=>"---"),k)),g))c.push(cC(cB(a),k));(a=h)<b.length&&b[a]?.trim()&&c.push("")}return c.join("\n").replace(/\n{3,}/gu,"\n\n")}function cE(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 cF(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=>cB(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&&!(cA(c[a]||"")&&cz(c[a+1]||""))&&""===(c[a]||"").trim();)f.push(c[a]||""),a+=1;if(a<c.length&&cA(c[a]||"")&&cz(c[a+1]||""))for(f.push(c[a]||"",c[a+1]||""),a+=2;a<c.length&&cA(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&&!(cA(c[a]||"")&&cz(c[a+1]||""))&&!/^###\s+/u.test(c[a]||"");)f.push(c[a]||""),a+=1;if(a<c.length&&cA(c[a]||"")&&cz(c[a+1]||"")){let g=[c[a]||"",c[a+1]||""];for(a+=2;a<c.length&&cA(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(cA(b)&&cz(f)){let g=[b,f];for(a+=2;a<c.length&&cA(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 cG(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 cF(cD(cE(a)));if(!/\|\s*信息项\s*\|\s*内容\s*\|/u.test(a)&&cv(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=`${cy(b,"",a)}
104
-
105
- `;a=`${a.slice(0,d)}
106
- ${e}${a.slice(d).trimStart()}`}}let c=/^(###\s+(?:\d+\.\d+\s+)?[^\n]*(?:项目概况|工程概况|项目基本信息|招标范围)[^\n]*\n)/mu.exec(a);if(!c?.index&&c?.index!==0)return a;let d=c.index,e=d+c[0].length,f=/^###\s+/gmu;f.lastIndex=e;let g=f.exec(a),h=g?.index??a.length,i=a.slice(e,h),j=cy(b,i,a);if(!cx(b,i,a).some(a=>!/资料未明确|系统暂未从知识库确认|项目资料暂未明确/u.test(a[1])))return a;let k=i.replace(/\*\*项目基本信息表\*\*[\s\S]*?(?=\n\n(?:[^|\n]|$)|$)/u,"").replace(/\|\s*(?:序号\s*\|\s*项目名称\s*\|\s*内容参数|信息项\s*\|\s*内容\s*(?:\|\s*资料来源\/(?:说明|证明))?)\s*\|[\s\S]*?(?=\n\n(?:[^|\n]|$)|$)/u,"").replace(/^\|\s*:?-{3,}:?\s*(?:\|\s*:?-{3,}:?\s*)+\|\s*\n(?:^\|.*\|\s*\n?)*/gmu,"").replace(/该小节围绕“[^”]+”进行补充说明[^\n]*(?:\n\n该小节围绕“[^”]+”进行补充说明[^\n]*)*/gu,"").replace(/\n{3,}/gu,"\n\n").trim(),l=`${c[0].trimEnd()}
107
-
108
- ${j}${k?`
109
-
110
- ${k}`:""}
111
-
112
- `;return cF(cD(cE(`${a.slice(0,d)}${l}${a.slice(h).trimStart()}`)))}let cH=["资料未明确","系统暂未","项目资料暂未","暂未明确","待确认","待资料复核","待系统","未检索到","资料不足","无法确认","建议补充","可核验信息","知识库","COL"];function cI(a,b){var c;return(function(a){let b=a.split(/\r?\n/u),c=[],d=/^(施工概况|施工流程|施工方法)[::]/u,e=!1,f=!1;for(let a=0;a<b.length;a+=1){let g=b[a],h=g.trim();if(/^###\s+/u.test(h)){e=/项目主要施工内容/u.test(h),f=!1,c.push(g);continue}if(/^##\s+/u.test(h)){e=!1,f=!1,c.push(g);continue}if(!e){c.push(g);continue}if(/^####\s+/u.test(h)){f=!0,c.push(g);continue}if(/^#{1,6}\s+/u.test(h)){f=!1,c.push(g);continue}if(f&&h){c.push(d.test(h)?g:`施工概况:${h}`),f=!1;continue}c.push(g)}return c.join("\n")})(function(a){let b=a.split(/\r?\n/u),c=[];for(let a=0;a<b.length;a+=1){let d=b[a],e=d.trim();if(!/^(#{4,5})\s+/u.test(e)){c.push(d);continue}let f=a+1,g=!1;for(;f<b.length;){let a=b[f].trim();if(/^#{1,6}\s+/u.test(a))break;if(a){g=!0;break}f+=1}g&&c.push(d)}return c.join("\n")}(function(a){let b=a;for(let[a,c]of[[/加强管理/gu,"明确责任岗位、执行动作、检查频次和整改闭环"],[/严格控制/gu,"按标准限值、检查频次和复查销项要求控制"],[/确保质量/gu,"通过样板引路、三检制度、隐蔽验收和质量问题闭环整改保证质量"],[/及时处理/gu,"发现问题后明确责任人、整改时限、复查人员和销项记录"],[/强化监督/gu,"由责任岗位按日巡查、周复核和问题台账闭环监督"]])b=b.replace(a,c);return b}((0,v.Bl)((0,v.z1)((0,v.Re)((0,v.wi)((c=a.replace(/^\s*本表依据项目图谱[^\n。]*[。.]\s*$/gmu,"").replace(/^\s*本表依据(?:招标文件|工程量清单|施工区段|质量目标|计划工期|项目图谱|危险源辨识|材料设备清单|现场条件|图纸资料|图纸设计说明)[^\n。]*[。.]\s*$/gmu,"").replace(/^\s*表中事项应纳入[^\n。]*[。.]\s*$/gmu,"").replace(/^\s*正式输出的表格\/清单必须形成[^\n。]*[。.]\s*$/gmu,"").replace(/\n{3,}/gu,"\n\n").trim().replace(/【修复任务包】[\s\S]*?(?=\n#{1,3}\s|\n\*\*|\n\|\s|$)/gu,"").replace(/^修复类型:.*$/gmu,"").replace(/^修复对象:.*$/gmu,"").replace(/^问题:【修复任务包】[\s\S]*?(?=\n#{1,3}\s|\n\*\*|\n\|\s|$)/gu,"").replace(/^输出要求:.*$/gmu,"").replace(/重新生成/gu,"补充完善").replace(/见招标公告|见投标人须知前附表/gu,"按已确认的招标边界和施工条件执行").replace(/见招标文件/gu,"按本项目招标文件已明确的相应条款执行").replace(/招标范围:/gu,"施工范围:").replace(/主要承包人案|承包人案/gu,a=>a.replace(/承包人案/gu,"施工方案")).replace(/施工方(?!案|法|式|针|向|面)/gu,"承包人").replace(/按图纸/gu,"依据经确认的设计文件和图纸内容组织实施").replace(/按设计要求/gu,"依据设计文件明确的构造、材料、尺寸和验收要求执行").replace(/按(?:资料|文件|说明|方案|规范|标准|要求)/gu,"依据本项目已确认资料、技术文件和验收标准").replace(/满足(?:相关|有关)?要求/gu,"满足本项目已明确的质量、安全、技术和验收控制要求").replace(/本节(?:将|主要|重点)?/gu,"").replace(/本章将/gu,"").replace(/根据需要|视情况|结合实际情况/gu,"结合已确认资料、现场条件和审批后的施工组织安排").replace(/相关要求/gu,"本项目已明确的质量、安全、技术和验收要求"),!cH.some(a=>c.includes(a))?c:c.split("\n").map(a=>/^\s*#{1,6}\s/u.test(a)||/^\s*\|/u.test(a)||!cH.some(b=>a.includes(b))?a:a.split(/(?<=[。;;])/u).filter(a=>!cH.some(b=>a.includes(b))).join("")).join("\n")).split(/\n{2,}/u).map(a=>{if(/^\s*(#{1,6}\s+|[-*+]\s+|\|)/u.test(a)||a.length<520)return a;let b=a.split(/(?<=[。;])/u).map(a=>a.trim()).filter(Boolean);if(b.length<4)return a;let c=[],d="";for(let a of b)d.length>260&&d.length+a.length>420?(c.push(d),d=a):d+=a;return d&&c.push(d),c.join("\n\n")}).join("\n\n")))))))).replace(/\n{3,}/gu,"\n\n").trim()}function cJ(a,b){let c=a.chapterPrompts.filter(a=>"writer"===a.category||"chapter"===a.category||"formatting"===a.category),d=[...a.writerPrompts,...c,...a.formattingPrompts],e=a.writerPrompts[0],f=d.map(a=>`${"writer"===a.category?"写作控制提示词":a.category}|${a.roleId}|${a.name}|${a.content.length} 字符`),g=aL(a.writerPrompts),h=aL([...c,...a.formattingPrompts]);return{primaryPromptId:e?.id,primaryWriter:e,prompts:d,promptTexts:[g?`【最高优先级:配置写作主控提示词】
113
- ${g}`:"",h?`【章节/格式提示词】
114
- ${h}`:""].filter(Boolean).join("\n\n"),promptDetails:f}}function cK(a){return aq(a).replace(/[\s,,.。::;;||()()《》<>【】"“”'‘’]/gu,"").split("[").join("").split("]").join("").toLowerCase()}function cL(a){return/工程造价|造价|报价|投标报价|报价明细|综合单价|单价|合价|金额|税率|增值税|利润|预留金|暂列金额|最高投标限价|招标控制价|合同估算价|合同估算价格|投资估算|估算价/u.test(a)}function cM(a){let b=cw((0,P.lG)(a));return!b||/资料未明确|系统暂未从知识库确认|未确认|待确认|无|暂无/u.test(b)||/###|第\s*\d+\s*页|共\s*\d+\s*页|新版交易系统|操作帮助|登录页面|见招标公告|未尽事宜|详见图纸|招标文件补疑|政府相关文件|规范等其它资料/u.test(b)||/^\d+(?:\.\d+)?\s*(?:mm|cm|m|㎡|m²|m3|m³|%|元|万元)?$/iu.test(b)||cL(b)||b.length>160?"":b}function cN(a,b,c={}){return(function(a,b,c={}){let d=b.filter(a=>{let b=`${a.key||""}${a.fieldName||""}${a.fieldId||""}`,c=(0,P.lG)(a.value);return!(cL(`${b}${c}`)||!cM(c)||/第\s*\d+\s*页|新版交易系统|操作帮助|见招标公告|未尽事宜|详见图纸|招标文件补疑|政府相关文件|规范等其它资料/u.test(`${b}${c}${a.sourceFile||""}`))&&(/项目名称|工程名称|项目编号|招标项目编号|招标人|建设单位|发包人|建设地点|建设规模|招标范围|计划工期|合同工期|质量标准|质量目标/u.test(b)||/危大|安全|资源|材料|机械|设备/u.test(b)&&!/^\d+(?:\.\d+)?\s*(?:mm|cm|m|㎡|m²|m3|m³|%|元|万元)?$/iu.test(c))}),e=new Set,f=[];for(let b of d){let d=cM(b.value);if(!d)continue;let g=b.fieldName||b.key||b.fieldId||"资料事实",h=`${g}:${d}`;if(!e.has(h)&&(e.add(h),!function(a,b){let c=cK(a),d=cK(b);if(!d||d.length<2||c.includes(d))return!0;let e=b.match(/\d+(?:\.\d+)?\s*(?:日历天|天|个月|月|年|万元|元|平方米|㎡|m²|立方米|m³|米|m|mm|cm|台|套|人|项|%|MPa|kPa)?/giu)||[];return e.length>0&&e.some(a=>cK(a).length>=2&&c.includes(cK(a)))}(a,d)&&(f.push({fact:b,label:g,value:d}),c.maxItems&&f.length>=c.maxItems)))break}return f})(a,b,{maxItems:c.maxIssues}).map(a=>({level:"warning",message:`已确认事实未在正文中落位:${a.label}=${a.value}`,suggestion:"请将该事实自然写入对应章节或小节,不得改变原始数值和单位。"}))}function cO(a){return/概况|项目|工程|地点|规模|工期|质量|估算/u.test(a)?{keyword:.65,vector:.25,rewrite:.8,hybridBonus:.2}:/人|材|机|资源|材料|设备|机械|劳动力/u.test(a)?{keyword:.55,vector:.35,rewrite:.75,hybridBonus:.18}:/危大|安全|文明|风险/u.test(a)?{keyword:.5,vector:.4,rewrite:.8,hybridBonus:.2}:{keyword:.4,vector:.45,rewrite:.75,hybridBonus:.15}}function cP(a,b,c,d){let e=b.map(b=>({...b,score:b.score*function(a,b){let c=`${a.title} ${(a.sections||[]).join(" ")} ${a.requiredFacts.join(" ")}`;return"reference"===b?.55:"table"===b?/清单|工程量|数量|材料|设备|资源|费用|造价|范围|统计|表/u.test(c)?1.45:.95:"rule"===b?/要求|规则|招标|评审|响应|质量|安全|验收|标准|工期|进度|风险|约束/u.test(c)?1.35:.95:"drawing"===b?/图纸|设计|布置|位置|平面|剖面|立面|空间|施工方法|做法/u.test(c)?1.35:.85:"specification"===b&&/技术|规范|标准|参数|做法|质量|验收|施工方法/u.test(c)?1.3:1}(a,b.processingType)+function(a,b){let c=`${b.sectionTitle||""}
115
- ${b.filePath}
116
- ${b.content}`;return Math.min(1.8,.16*[...new Set([a.title,...a.sections||[],...a.requiredFacts].flatMap(a=>a.split(/[\s、,,。;;::()()《》【】\-/]+/u)).map(a=>a.trim()).filter(a=>a.length>=2).slice(0,36))].filter(a=>c.includes(a)).length)}(a,b)}));return(0,s.QR)(e,c,d)}function cQ(a,b,c){let d=(a.sections||[]).slice(0,10).join(" "),e=a.requiredFacts.slice(0,10).join(" "),f=a.title.split(/[、,,与和及]+/u).map(a=>a.trim()).filter(a=>a.length>=4);return[...new Set([...f.length>=2?[`${a.title} ${d} ${e}`.trim(),...f.map(b=>`${b} ${(a.sections||[]).slice(0,6).join(" ")}`.trim()),`${f.slice(0,3).join(" ")} ${e}`.trim()]:[`${a.title} ${d} ${e}`.trim()],...b,...c].filter(Boolean))]}function cR(a,b){let c=Number(process.env.DOCUMENT_MAX_QUERIES_PER_CHAPTER);return Math.max(2,Math.min(9,Math.floor(Number.isFinite(c)&&c>0?c:4)+ +((a.sections||[]).length>=6||a.requiredFacts.length>=8)+Math.min(2,b.length)))}function cS(a,b,c=!1){return Math.max(12,Math.min(c?58:26,a+10+4*((b.sections||[]).length>=6||b.requiredFacts.length>=8)+18*!!c))}async function cT(a){if((0,P.Te)(a.signal),0===a.scopedFilePaths.length)return[];let b=`${a.chapter.title} ${a.sectionTitle}`.trim(),c=await a.manager.search(a.projectRoot,b,{scope:"project",filters:{filePaths:a.scopedFilePaths},limit:5,weights:cO(b),generationMode:!1});return(0,s.QR)(c.results.filter(b=>a.scopedFilePaths.includes(b.filePath)).map(b=>({chapterId:a.chapter.id,filePath:b.filePath,score:b.score+1.2,content:b.content,roleId:a.fileRoleByPath.get(b.filePath),processingType:a.fileProcessingByPath.get(b.filePath),sectionTitle:b.sectionTitle,source:"section-evidence"})),{maxItems:5,maxChars:9e3,preservePinned:!0})}async function cU(a){let b=[],c=a.needs.slice(0,8),d=await Promise.all(c.map(async b=>{(0,P.Te)(a.signal);let c=`${a.chapter.title} ${b} ${(a.chapter.sections||[]).join(" ")}`.trim();return(await a.manager.search(a.projectRoot,c,{scope:"project",filters:{filePaths:a.scopedFilePaths},limit:6,weights:cO(`${a.chapter.title} ${b}`),generationMode:!1})).results.filter(b=>a.scopedFilePaths.includes(b.filePath)).map(b=>({chapterId:a.chapter.id,filePath:b.filePath,score:b.score+2,content:b.content,roleId:a.fileRoleByPath.get(b.filePath),processingType:a.fileProcessingByPath.get(b.filePath),sectionTitle:b.sectionTitle,source:"required-fact-evidence"}))}));return b.push(...d.flat()),(0,s.QR)(b,{maxItems:Math.max(6,3*c.length),maxChars:18e3,preservePinned:!0})}function cV(a,b,c=12){if(0===b.length)return[];let d=b.slice(0,c).map(a=>e.basename(a)),f=b.length>c?` 等 ${b.length} 个文件`:"";return[`${a}:${d.join("、")}${f}`]}function cW(a,b,c){if(Number.isFinite(c)&&c>0)return Math.ceil(c);let d=new Set(b.filter(Boolean)),e=a.listFiles?.().filter(a=>0===d.size||d.has(a.relativePath)).reduce((a,b)=>a+Math.max(0,Math.ceil(Number(b.chunkCount)||0)),0)??0;return e>0?e:Math.max(1,d.size)}let cX=[{pattern:/本小节围绕.+展开,结合绑定项目资料/u,label:"模板化开篇套话"},{pattern:/明确适用范围、控制目标、责任岗位与过程要求/u,label:"泛化目标罗列"},{pattern:/实施前应完成资料核对、技术交底和作业条件确认/u,label:"泛化前置条件"},{pattern:/交底覆盖率按\s*100%?\s*控制/u,label:"空泛交底承诺"},{pattern:/关键问题在\s*24\s*小时内形成整改责任/u,label:"空泛整改时限"},{pattern:/按施工准备→过程实施→检查验收→问题整改→资料归档的闭环组织/u,label:"通用闭环套话"},{pattern:/按作业条件确认→技术交底→过程实施→自检互检→整改复查/u,label:"通用流程套话"},{pattern:/依据本项目已确认资料中的项目边界/u,label:"资料依据套话"},{pattern:/执行日巡查、周复核和节点验收制度/u,label:"泛化巡查制度"},{pattern:/一般问题\s*7\s*日内闭环/u,label:"泛化整改时限"},{pattern:/由项目经理、技术负责人和专职安全员联合复核/u,label:"岗位名单堆砌"},{pattern:/确保与总体施工部署、工期计划和验收要求保持一致/u,label:"原则性呼应"},{pattern:/结合现场实际情况(?:,|,)?合理(?:组织|安排|布置|配置)/u,label:"结合实际套话"},{pattern:/严格(?:执行|落实|按照)国家(?:现行)?(?:有关)?(?:规范|标准|规程)/u,label:"规范泛引用"},{pattern:/做到(?:文明施工|安全生产|质量第一|安全第一)/u,label:"口号式承诺"},{pattern:/(?:确保|保证)工程(?:质量|安全|进度|文明施工)/u,label:"目标口号"},{pattern:/建立(?:健全)?(?:完善)?(?:的)?(?:管理)?体系(?:和|,)?(?:落实|确保|保证)/u,label:"体系空话"}],cY=[/主要分部分项工程施工方案/u,/主要施工方法/u,/主要施工内容/u,/施工方案/u],cZ=/\d+(?:\.\d+)?\s*(?:mm|MPa|kN|kN\/m²|kPa|℃|%|d|h|min|m\/s|次\/天)|[<>≤≥]\s*\d+(?:\.\d+)?\s*(?:mm|MPa|%|d)|间距[≤<]?\s*\d+|偏差[≤<]?\s*\d+|坡度\s*\d+(?:\.\d+)?(?::\d+|%)|压实度\s*[≥>]?\s*\d+|坍落度|闭水试验|静载试验|拉拔试验|探伤|试验压力|锚固长度|搭接长度|保护层厚度|(?:防护挑网|安全网|防护网|围挡|警戒(?:区|线|距离)|防护栏杆).{0,12}(?:宽度|高度|距离|范围)[^,。;;]{0,8}\d+(?:\.\d+)?\s*m|(?:宽度|高度|距离|范围)[^,。;;]{0,8}\d+(?:\.\d+)?\s*m.{0,12}(?:防护挑网|安全网|防护网|围挡|警戒|防护栏杆)/giu,c$=/\d[A-Z][A-Z0-9a-z]*\b|[A-Z]{1,2}\d{2,3}\b|\d+(?:\.\d+)?\s*(?:kW|kVA|KVA|KW)\b|IP\d{2}/gu,c_=/(?:建筑面积|面积|总建筑面积)[约]?\s*\d+(?:\.\d+)?\s*(?:㎡|m²)|计划工期\s*\d+|日历天|地上\s*\d+\s*层|框架结构|质量标准[::]?\s*合格/giu,c0=[{key:"质量标准",patterns:[/质量标准|质量要求|合格率/u]},{key:"计划工期",patterns:[/计划工期|工期要求|合同工期|日历天/u]},{key:"缺陷责任期/保修",patterns:[/缺陷责任期|保修|质保/u]},{key:"安全文明目标",patterns:[/安全.*目标|文明.*目标|安全事故.*零/u]},{key:"项目经理要求",patterns:[/项目经理|项目负责人|注册建造师/u]}];function c1(a){let b=a.split("\n"),c=[],d="",e=[];for(let a of b){let b=/^#{3,4}\s+(.+)$/u.exec(a.trim());b?((d||e.length>0)&&c.push({heading:d,body:e.join("\n")}),d=b[1].trim(),e=[]):e.push(a)}return(d||e.length>0)&&c.push({heading:d,body:e.join("\n")}),c}function c2(a){let b=[],c=new Map;for(let b of a)for(let a of c1(b.content)){let d=a.heading||b.title;for(let e of a.body.replace(/^#{1,6}\s+.*$/gmu,"").replace(/^\s*\|.*\|\s*$/gmu,"").replace(/^\s*[-|]\s*$/gmu,"").replace(/^\s*\[.*?\]\(.*?\)\s*$/gmu,"").split(/\n{1,}/u).map(a=>a.trim()).filter(a=>a.length>=60&&a.length<=400&&!/^\s*[-*]\s+/u.test(a))){let a=e.replace(/[,。,.;;::、()()【】[\]《》“”"'`\s]/gu,"");if(a.length<60)continue;let f=c.get(a)||[];f.some(a=>a.chapter===b.title&&a.section===d)||f.push({chapter:b.title,section:d}),c.set(a,f)}}let d=new Set;for(let[a,e]of c){let c=e.filter((a,b,c)=>c.findIndex(b=>b.chapter===a.chapter&&b.section===a.section)===b);if(c.length<2)continue;let f=c.map(a=>`${a.chapter}::${a.section}`).sort().join("|");if(d.has(f))continue;d.add(f);let g=e[0],h=g?`(如:${g.section} 中「${a.slice(0,30)}…」)`:"";if(b.push({level:c.length>=3?"error":"warning",severity:c.length>=3?"blocker":"warning",message:`发现相同段落出现在 ${c.length} 个不同小节:${c.map(a=>a.section).slice(0,6).join("、")}${h}`,suggestion:"每个小节必须针对其标题写专属内容,不得复制粘贴相同段落;重复小节应合并或删除后重写。"}),b.length>=8)break}return b}function c3(a){let b=[];for(let c of a){let a=c1(c.content),d=[];for(let b of a)for(let{pattern:a,label:c}of cX)a.test(b.body)&&!d.includes(c)&&d.push(c);d.length>=3?b.push({level:"error",severity:"blocker",message:`${c.title} 存在大量模板化空话(${d.slice(0,6).join("、")})`,suggestion:'删除"本小节围绕…展开""按100%控制"式套话,按"责任岗位+执行动作+量化标准+检查频次+整改时限"重写。'}):d.length>0&&b.push({level:"warning",severity:"warning",message:`${c.title} 存在模板化空话:${d.join("、")}`,suggestion:"替换为具体量化做法;同一小节不得重复出现套话段落。"})}return b}function c4(a){let b=[];for(let c of a)for(let a of c1(c.content)){if(!cY.some(b=>b.test(a.heading)||b.test(c.title)))continue;let d=new Set(a.body.match(cZ)||[]),e=new Set(a.body.match(c_)||[]),f=new Set(a.body.match(c$)||[]),g=a.body.length;if(g<400)continue;let h=d.size/(g/1e3),i=/拆除|清理|清底|清运|弃置|运输|搬运/u.test(a.heading);if(0===d.size){if(f.size>=6){b.push({level:"warning",severity:"warning",message:`${c.title} / ${a.heading} 以设备配置参数为主:设备型号/容量参数 ${f.size} 项,工艺参数待补充`,suggestion:"设备清单型小节保留型号规格参数即可;如补充安装工艺(试验压力、坡度、间距、偏差),应同步写入工艺参数与验收节点。"});continue}if(i){b.push({level:"warning",severity:"warning",message:`${c.title} / ${a.heading} 以工程量与保护措施为主,建议补充拆除深度偏差、保护挑网宽度、警戒距离等参数`,suggestion:"拆除类作业补充拆除厚度偏差(mm)、防护挑网/安全网宽度(m)、警戒区距离(m)等安全与技术参数即可,不强制 mm/MPa 级工艺参数。"});continue}b.push({level:"error",severity:"blocker",message:`${c.title} / ${a.heading} 无工艺参数:全文只有概况性数字,缺乏 mm/MPa/间距/偏差/试验压力等工艺级参数`,suggestion:"必须写入工艺参数(如桩位偏差≤50mm、搭接宽度≥100mm、闭水试验48h),参数来自绑定资料或行业规范值。"})}else h<(i?.3:1.5)&&b.push({level:"warning",severity:"warning",message:`${c.title} / ${a.heading} 工艺参数密度偏低:每千字 ${d.size} 个工艺参数(概况数字 ${e.size} 个)`,suggestion:"增加工艺级参数落位;概况数字(面积、工期、层数)不能替代工艺参数。"})}return b}function c5(a){let b=[];for(let c of a)for(let a of c1(c.content)){if(!/主要分部分项工程施工方案|主要施工方法/u.test(a.heading))continue;let d=a.body.split(/^####\s+/gmu).slice(1).map(a=>a.trim()).filter(Boolean);if(0===d.length)continue;let e=d.filter(a=>{let b=/(?:施工)?(?:概况|范围)[::]\s*\S/u.test(a)||/工程量|范围/u.test(a),c=/(?:施工)?(?:流程|工序|顺序)[::]\s*\S/u.test(a)||/→/u.test(a),d=/(?:施工)?方法[::]\s*\S/u.test(a);return!b||!c||!d});e.length>0&&b.push({level:"warning",severity:"warning",message:`${c.title} / ${a.heading} 有 ${e.length}/${d.length} 个分部分项未按"概况/流程/方法"三段式展开`,suggestion:'参照"项目主要施工内容"工作包写法:概况=对象+工程量,流程=→工序链,方法=工艺参数+检测验收。'})}return b}function c6(a,b=""){let c=[],d=b||a.map(a=>a.content).join("\n\n");for(let a of c0)a.patterns.some(a=>a.test(d))||c.push({level:"warning",severity:"warning",message:`未检测到对招标硬性要求的响应:${a.key}`,suggestion:"招标文件中的工期、质量、保修、安全目标等硬性要求必须在施工组织设计中明确响应并落实责任。"});return c}function c7(a){return Math.max(0,Math.min(100,Math.round(a)))}function c8(a,b){let c=new Set([b?.projectName,...b?.fingerprint?.projectNames||[]].filter(Boolean));return(b?.contaminationCandidates||[]).reduce((a,b)=>!b||b.length<6||c.has(b)?a:a.replace(RegExp(b.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&"),"gu"),"本项目工程"),a)}function c9(a){var b;let{documentSpec:c,validationIssues:d,factsModel:e,finalChapterDrafts:f,finalMarkdown:g,template:h,promptBindings:i,promptDocumentRules:j,projectMaterialSummary:k,domainProfile:m,structuredFacts:o,documentBudget:p}=a;return ci((0,x.kQ)(c,d,e,f,g,h.projectBindings||[],i),function(a){let b=[],c=a.markdown||"";for(let e of a.spec.factFields.filter(a=>a.required)){var d;!((d=e.name).length<4||b2(d))&&/\d|GB|JGJ|C\d|HRB|DN|mm|MPa|kPa|工期|质量|安全|项目名称|工程名称|招标人|建设地点|建筑面积|结构形式|层数/u.test(d)&&!b4(c,e.name)&&b.push({level:"info",message:`正文可能未显式覆盖“${e.name}”`,suggestion:"建议检查对应章节是否已自然表达该事实。"})}let e=a.summary.facts.projectName;!e||"当前知识库项目"===e||b2(e)||b4(c,e)||b.push({level:"warning",message:"正文未明显体现关键对象名称",suggestion:"建议在概况、背景或首页标题中体现当前文档的关键对象名称。"});let f=a.summary.facts.documentNo;for(let a of(f&&!c.includes(f)&&b.push({level:"info",message:"正文未体现文档/任务编号",suggestion:"如文档需要编号,请在概况、背景或首页信息中补充。"}),["知识库证据","资料类型","提示词角色","文档规范包","规范包","后台自动规范","后台优化建议","基础事实候选","材料未提供","未检索到"]))c.includes(a)&&b.push({level:"error",message:`正文包含后台流程话术:${a}`,suggestion:"请重新生成或在审查阶段删除后台流程描述。"});return b}({markdown:g,spec:c,summary:k}),function(a){let b=a.profile||l,c=[],d=new Map;for(let c of a.facts){let a=c.fieldName||c.key;a&&function(a,b){let c=n(b,a);return c?"single"===c.cardinality&&"allow_multiple"!==c.conflictPolicy&&"ignore"!==c.conflictPolicy:/项目名称|工程名称|招标人|建设地点|建筑面积|结构形式|层数|工期|质量标准|合同价格形式|绿色建筑等级|投标有效期|质保期/u.test(a)}(a,b)&&b6(String(c.value),b)&&d.set(a,[...d.get(a)||[],{value:String(c.value),source:c.sourceFile}])}for(let[a,e]of d){let d=new Map;for(let a of e){let c=b6(a.value,b);c&&d.set(c,[...d.get(c)||[],a])}if(d.size>1){let b=[...d.values()].map(a=>`${a[0].value}(${a.map(a=>a.source).filter(Boolean).join("、")||"未知来源"})`).join(" vs ");c.push({level:"error",message:`事实一致性冲突:${a} 存在多个值:${b}`,suggestion:"请确认当前绑定材料组,或在模板绑定中只绑定当前文档所需材料。"})}}let e=a.summary.facts.projectName;if(e&&"当前知识库项目"!==e&&!/--|延期到|资料|附件|扫描|目录|汇总|打包|备份|招标工程量清单封面|招标工程量清单扉页|工程量清单表|清单封面|清单扉页|\d{1,2}\.\d{1,2}/u.test(e)){let b=b5(a.markdown);[e,...a.summary.fingerprint.projectNames].flatMap(a=>[a,a.replace(/^\d+(?:\.\d+)?[^\u4e00-\u9fa5]*/u,""),a.replace(/\([^)]*\)|([^)]*)/gu,"")]).map(a=>b5(a)).filter(a=>a.length>=8).some(a=>b.includes(a)||a.length>=12&&b.includes(a.slice(0,Math.max(8,Math.floor(.72*a.length)))))||c.push({level:"warning",message:`正文未包含当前对象名称:${e}`,suggestion:"请确认标题、概况或背景信息是否已体现当前对象名称。"})}return c}({markdown:g,facts:o,summary:k,profile:m}),function(a,b){let c=[],d=new Set([b.projectName,...b.fingerprint.projectNames].filter(Boolean));for(let e of b.contaminationCandidates)e.length>=6&&!d.has(e)&&a.replace(/\s+/gu,"").includes(e.replace(/\s+/gu,""))&&c.push({level:"error",message:`正文疑似混入其他对象名称:${e}`,suggestion:"请检查绑定材料选择、模板绑定文件和知识库证据范围。"});let e=b.fingerprint.documentNos,f=a.match(/\b\d{4}[A-Z]{2,}\d{4,}\b/gu)?.find(a=>!e.includes(a));return f&&e.length>0&&c.push({level:"error",message:`正文疑似混入其他文档编号:${f}`,suggestion:"请重新生成并检查是否召回了其他绑定材料。"}),c}(g,k),0===cv(o).length||!/资料未明确|系统暂未从知识库确认|项目资料暂未明确/u.test(g)?[]:["计划工期","合同工期","质量标准","合同估算价","合同估算价格","建设地点","建设规模"].filter(a=>RegExp(`${a}[^
117
- |。;;]{0,40}(?:资料未明确|系统暂未从知识库确认|项目资料暂未明确)`,"u").test(g)).map(a=>({level:"error",message:`${a} 已抽取到项目资料事实但正文仍显示暂未明确`,suggestion:"请优先使用项目基础事实卡片中的资料原值,不得用占位表达覆盖已确认事实。"})),(b={markdown:g,chapters:f,factsModel:e,template:h,promptBindings:i,promptDocumentRules:j},[...b.promptDocumentRules?.forbidToc?[]:[...(0,x.gN)(b.markdown),...(0,x.f8)(b.markdown)],...(0,x.K1)(b.markdown),...(0,x.Fv)(b.markdown),...(0,x.k0)(b.markdown),...(0,x.NS)(b.markdown),...(0,x.qK)(b.markdown,b.chapters),...(0,x.ji)(b.chapters),...(0,x.i0)(b.chapters),...(0,x.ST)(b.chapters),...(0,x.xX)(b.chapters),...(0,x.qm)(b.markdown,b.factsModel),...cb(b.markdown,b.factsModel),...function(a){let b=a.split(/\n\s*\n/gu).map(a=>a.trim()).filter(Boolean),c=/(?:加强组织领导|严格执行规范|落实责任制度|确保工程质量|强化过程管理|提高思想认识|完善管理体系|形成闭环管理|统筹推进|全面落实)/gu,d=[];for(let a of b){if(120>(0,w.V7)(a))continue;let b=a.match(c)||[],e=a.match(/材料|工序|验收|复验|节点|风险|交底|隐蔽|检验批|进场|责任人|台账|工期|质量|安全|资源/u)||[];b.length>=2&&e.length<2&&d.push({level:"warning",message:`段落存在空泛表述:${a.slice(0,48)}...`,suggestion:"请补充该段对应的对象、动作、控制点或验收闭环,避免只保留管理性套话。"})}return d}(b.markdown),...function(a){let b=[];for(let c of a){let a=I.filter(a=>c.content.includes(a));a.length>0&&b.push({level:"warning",message:`${c.title} 存在施工组织设计空泛套话:${[...new Set(a)].slice(0,8).join("、")}`,suggestion:"请按“责任岗位+执行动作+量化标准+检查频次+整改时限+复查销项”重写相关措施。"})}return b}(b.chapters),...function(a){let b=[];for(let c of a){let a=`${c.title} ${(c.sections||[]).join(" ")}`;for(let d of J){if(!d.pattern.test(a))continue;let e=d.required.filter(a=>!c.content.includes(a));e.length>=Math.ceil(d.required.length/2)&&b.push({level:"warning",message:`${c.title} 缺少${d.label}关键链条:${e.join("、")}`,suggestion:d.prompt})}}return b}(b.chapters),...function(a){let b=M(`${a.markdown} ${a.factsModel.project.map(a=>a.value).join(" ")} ${a.factsModel.preciseFacts.map(a=>a.value).join(" ")}`),c=[];for(let d of Object.values(K)){let e=d.chain.filter(a=>b.includes(M(a)));if(!(RegExp(d.label,"u").test(a.markdown)||e.length>=3))continue;let f=d.forbidden.filter(a=>b.includes(M(a)));f.length>=2&&c.push({level:"warning",message:`疑似${d.label}内容混入不匹配工序:${f.join("、")}`,suggestion:d.prompt}),e.length<Math.min(3,d.chain.length)&&c.push({level:"warning",message:`${d.label}工序链覆盖不足:仅识别到 ${e.join("、")||"未识别到关键工序"}`,suggestion:d.prompt})}return c}({markdown:b.markdown,factsModel:b.factsModel,chapters:b.chapters}),...function(a,b){let c=[];if(!/施工组织设计|施工组织|施组|质量|安全|文明施工/u.test(a))return c;for(let d of cd){let e=cf(b,d.factGroups),f=(function(a,b){let c=[];for(let d of b){let b=new RegExp(d.source,d.flags.includes("g")?d.flags:`${d.flags}g`);for(let d of a.matchAll(b)){let a=ce(d[1]||d[0]||"");a.length>=2&&a.length<=80&&c.push(a)}}return[...new Set(c)]})(a,d.patterns).filter(a=>!function(a,b){return 0===b.length||b.some(b=>b.includes(a)||a.includes(b)||a.length>=4&&b.includes(a.slice(0,4)))}(a,e)).slice(0,5);f.length>0&&c.push({level:"warning",message:`施组数据一致性风险:${d.label} 可能与项目图谱/事实不一致(${f.join("、")})`,suggestion:`请核对${d.label}在${d.locations}中的表述,统一以招标文件、项目图谱和可信事实为准。`})}return c}(b.markdown,b.factsModel),...function(a,b){let c=[],d=cf(b,["project","schedule","resources","quality","safety","preciseFacts"]);if(0===d.length)return c;for(let b of a)/概况|进度|资源|质量|安全|文明|工资|应急/u.test(`${b.title} ${(b.sections||[]).join(" ")}`)&&(d.some(a=>a.length>=3&&b.content.includes(a.slice(0,Math.min(10,a.length))))||c.push({level:"warning",message:`${b.title} 缺少可识别的项目图谱事实支撑`,suggestion:"请至少引用工程名称、工期、工程量、资源、风险、质量安全目标等项目专属事实之一,避免纯模板化。"}));return c}(b.chapters,b.factsModel),...function(a,b=""){let c=[],d=b||a.map(a=>`${a.title}
118
- ${(a.sections||[]).join("\n")}
119
- ${a.content}`).join("\n\n"),e=a.filter(a=>/项目主要施工内容|主要施工内容/u.test(`${a.title} ${(a.sections||[]).join(" ")}`)),f=/施工组织设计|施工组织|计划工期|质量标准|项目经理|工程概况/u.test(d)&&/施工/u.test(d),g=(a,b)=>{let d=(b.match(/^####\s+(?:\d+(?:\.\d+)*\s+)?[一二三四五六七八九十\d]*[、..]?\s*\S+/gmu)||[]).length||(b.match(/^[一二三四五六七八九十]+、\S+/gmu)||[]).length,e=b.split(/^####\s+/gmu).slice(1).map(a=>a.trim()).filter(Boolean),f=e.filter(a=>!a.includes("施工概况")||!a.includes("施工流程")||!a.includes("施工方法")),g=e.filter(a=>/资料内容事实|#{2,6}\s+|\*\*[^*]+\*\*|未尽事宜|专业施工内容统筹|招标范围还包含|具备有效的.*资质/u.test(a)),h=e.filter(a=>{let b=a.match(/施工方法[::]([\s\S]*?)(?=\n施工|$)/u)?.[1]||"";return b.length<30||(b.match(/工程|维修|改造|安装|设备/gu)||[]).length>=4&&!/\d|㎡|m2|m²|mm|厚|验收|检测|调试|试验|复试|记录|报告/u.test(b)}),i=e.filter(a=>{let b=a.match(/施工流程[::]([\s\S]*?)(?=\n施工方法|$)/u)?.[1]||"";return/未尽事宜|本项目为|总建筑面积|保留现状|专业施工内容统筹|招标文件列明|招标范围/u.test(b)});d<5&&c.push({level:"error",severity:"blocker",message:`${a} 主要施工内容工作包不足:当前 ${d} 个,要求不少于 5 个`,suggestion:"按资料识别专业工程/分部分项工作包,逐项写施工概况、施工流程、施工方法。"}),f.length>0&&c.push({level:"error",severity:"blocker",message:`${a} 主要施工内容存在 ${f.length} 个工作包缺少施工概况/施工流程/施工方法`,suggestion:"每个工作包必须分别包含“施工概况、施工流程、施工方法”,不能只在整节中出现一次。"}),g.length>0&&c.push({level:"error",severity:"blocker",message:`${a} 主要施工内容存在脏事实或标题污染`,suggestion:"清理“资料内容事实”、嵌入的 ### 标题、粗体伪标题、未尽事宜、招标范围罗列等污染内容,只保留可交付正文。"}),h.length>0&&c.push({level:"error",severity:"blocker",message:`${a} 主要施工内容存在 ${h.length} 个工作包施工方法过弱`,suggestion:"施工方法不能只是工作包名称或专业范围罗列,必须写资料已确认的工程量、材料、检测、调试、验收或记录要求。"}),i.length>0&&c.push({level:"error",severity:"blocker",message:`${a} 主要施工内容存在 ${i.length} 个工作包流程污染`,suggestion:"施工流程只能写工序链条,不能混入项目概况、总建筑面积、招标范围、未尽事宜等说明性事实。"}),/→|->/u.test(b)||c.push({level:"error",severity:"blocker",message:`${a} 主要施工内容缺少箭头式施工流程`,suggestion:"施工流程应写成“测量放线→基层处理→工序实施→检查验收→资料归档”等链条。"});let j=(b.match(/\d+(?:\.\d+)?\s*(?:㎡|m²|mm|cm|m|MPa|kPa|%|日历天|层|台|套|个|项|批|次|小时|年)/giu)||[]).length,k=(b.match(/工程量|材料|设备|范围|流程|验收|检测|复试|调试|隐蔽|检验批|资料|记录|系统|部位|接口|规格|标准/gu)||[]).length;(j<2||k<12)&&c.push({level:"error",severity:"blocker",message:`${a} 主要施工内容事实细度不足:参数 ${j} 项、事实细节 ${k} 项`,suggestion:"主要施工内容必须落到资料已确认的范围、工程量/材料、流程、验收和记录要求;资料未明确的工具、型号、参数不得编造。"}),/^\s*\|.+\|\s*$/mu.test(b)&&c.push({level:"error",severity:"blocker",message:`${a} 主要施工内容不应使用 Markdown 表格替代工作包正文`,suggestion:"主要施工内容应采用三级小节和段落式工作包写法,不使用表格承载主体内容。"})};if(0===e.length&&f){let a=O(d);return a?(g("全文",a),c):[{level:"error",severity:"blocker",message:"施工组织设计缺少“项目主要施工内容”小节",suggestion:"必须生成“### 项目主要施工内容”,并在该小节内部使用“#### 工作包名称”逐项展开。"}]}for(let a of e){let b=O(a.content)||O(d);if(!b){c.push({level:"error",severity:"blocker",message:`${a.title} 主要施工内容小节缺失或标题结构异常`,suggestion:"必须生成“### 项目主要施工内容”,并在该小节内部使用“#### 工作包名称”逐项展开。"});continue}g(a.title,b)}return c}(b.chapters,b.markdown),...function(a){let b=[];for(let c of a){let a=`${c.title} ${(c.sections||[]).join(" ")} ${c.content}`;for(let d of L)d.pattern.test(a)&&!c.content.includes(d.title)&&b.push({level:"warning",message:`${c.title} 可补充隐藏高分模块:${d.title}`,suggestion:d.prompt})}return b}(b.chapters),...cc(b.chapters),...function(a,b,c){let d={factuality:2*!(0,x.vY)(a,c).some(a=>"error"===a.level),structure:b.length>0&&b.every(b=>a.includes(b.title)&&(0,w.V7)(b.content)>=600)?2:1,depth:0===(0,x.i0)(b).length?2:1,executable:0===cc(b).length?2:1,evidence:0===cb(a,c).length?2:1},e=d.factuality+d.structure+d.depth+d.executable+d.evidence;return[{level:"warning",message:`文档交付评分报告:总分 ${e}/10,事实${d.factuality},结构${d.structure},专业${d.depth},可执行${d.executable},证据${d.evidence}`,suggestion:e>=8?"可交付,但建议继续优化证据使用覆盖率和章节依赖链路。":"建议优先修复低分维度后再导出。"}]}(b.markdown,b.chapters,b.factsModel),...(0,x.vY)(b.markdown,b.factsModel),...(0,x.iC)(b.markdown),...(0,x.BV)(b.markdown),...(0,v.dh)(b.markdown),...(0,x.Ty)(b.chapters),...(0,x.N1)(b.markdown,b.factsModel),...(0,x.S2)(b.markdown,b.chapters,b.factsModel),...function(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}(function(a,b){let c=b.tables||[],d=[],e=b7(a);for(let a of c){let b=a.headers.map(a=>a.replace(/\s+/gu,"").toLowerCase()),c=b.findIndex(a=>/项目名称|名称|清单项|分部分项|项目特征|工程内容|材料名称|设备名称/u.test(a)),f=b.findIndex(a=>/编码|编号|序号|项目编码/u.test(a)),g=b.findIndex(a=>/数量|工程量/u.test(a)),h=b.findIndex(a=>/单位/u.test(a));for(let b of a.rows){let i=c>=0&&b[c]||"",j=f>=0&&b[f]||"",k=g>=0&&b[g]||"",l=h>=0&&b[h]||"";if(!i&&!j)continue;let m=b7(i),n=b7(j),o=m.length>=3&&e.includes(m.slice(0,12))||n.length>=3&&e.includes(n.slice(0,8));d.push({itemCode:j.slice(0,50),itemName:i.slice(0,200),quantity:k.slice(0,50),unit:l.slice(0,20),sourceFile:a.sourceFile||"",placed:o})}}return d.sort((a,b)=>a.placed===b.placed?0:a.placed?1:-1)}(b.markdown,b.factsModel)),...(0,x.yd)(b.markdown,b.factsModel),...function(a){let b=[];return bS.test(a)&&b.push({level:"warning",message:"正文包含联网增强过程性表述",suggestion:"请删除联网检索、网页资料、搜索结果等过程性话术,改为正式交付语言。"}),b}(b.markdown),...(0,x.bM)(b.markdown),...(0,x.M$)(b.markdown,b.promptBindings),...(0,x.AC)(b.markdown,b.chapters),...(0,x.mR)(b.markdown,b.template),...(0,v.UG)(b.markdown,b.template),...(0,v.Ed)(b.markdown,b.promptDocumentRules)]),cN(g,[...o,...e.preciseFacts],{maxIssues:30}).map(a=>({...a,level:"warning",severity:"warning",suggestion:"建议后续优化事实自然落位;导出阶段不因未落位的引用型或可优化事实阻断。"})),(0,w.PE)(h.generationSettings||h.exportSettings,g).filter(a=>!(p.minPages&&/低于目标页数/u.test(a.message))),(0,w.ty)(p,g),(0,v.UG)(g,h),(0,v.Ed)(g,j),(0,cq.IA)(g),g.includes("WRITER_MISSING_SECTION")||g.includes("Writer 未完成")?[{level:"error",severity:"blocker",category:"structure",owner:"system",message:"最终正文仍包含未完成小节标记",suggestion:"必须重新补写对应小节并删除 WRITER_MISSING_SECTION/Writer 未完成。"}]:[],function(a){let b=(a,b)=>{let c=a.split("\n"),d=c.findIndex(a=>/^###\s+(?:\d+(?:\.\d+)*\s+)?/u.test(a.trim())&&a.includes(b));if(d<0&&(d=c.findIndex(a=>/^#{3,4}\s+(?:\d+(?:\.\d+)*\s+)?/u.test(a.trim())&&a.includes(b))),d<0)return"";let e=/^(#{2,6})\s+/u.exec(c[d].trim())?.[1].length||3,f=c.length;for(let a=d+1;a<c.length;a+=1){let b=/^(#{2,6})\s+/u.exec(c[a].trim());if(b&&b[1].length<=e){f=a;break}}return c.slice(d,f).join("\n")},c=[{title:"项目特点、重点、难点分析",minChars:1800},{title:"项目主要施工内容",minChars:2200},{title:"主要分部分项工程施工方案",minChars:1200,blockerMinChars:800},{title:"主要施工方法",minChars:2200},{title:"危大工程专项施工方案审批流程",minChars:500,blockerMinChars:250},{title:"原材料进场复试与见证取样",minChars:600,blockerMinChars:300}],d=[];for(let e of a)for(let a of c){let c=b(e.content,a.title),f=(0,w.V7)(c);if(!c||f>=a.minChars)continue;let g=a.blockerMinChars||Math.floor(.8*a.minChars);f>=g?d.push({level:"warning",severity:"warning",message:`${e.title} ${a.title} 正文深度接近目标:当前 ${f} 字,目标 ${a.minChars} 字`,suggestion:"已达到可交付深度,建议后续按项目数据继续优化扩写。"}):d.push({level:"error",severity:"blocker",message:`${e.title} ${a.title} 正文不足:当前 ${f} 字,要求不少于 ${g} 字`,suggestion:"关键小节必须补足项目数据、重点难点与施工内容对应关系后方可导出。"})}return d}(f),function(a){let b=[{title:"项目特点、重点、难点分析",minNumericFacts:5,minObjectFacts:8,objectPatterns:[/建筑面积|面积/u,/层|框架结构|既有建筑/u,/结构形式|结构加固|墙体补强|装配式/u,/拆除|改造|装修|装饰/u,/工期|日历天/u,/质量标准|合格/u,/营业商铺|经营区域|场地/u,/管网|防水|室外道排/u,/智能化|弱电|消防|暖通|通风空调|水电/u]},{title:"项目主要施工内容",minNumericFacts:4,minObjectFacts:6,objectPatterns:[/拆除|垃圾外运|既有设施保护/u,/结构加固|墙体补强|框架结构/u,/装饰|装修|基层|面层|环保|阻燃/u,/防水|管网|给排水|阀门|道排/u,/消防|水电|电气|弱电|智能化|通风空调/u,/屋面|立面|室外|附属/u,/施工流程|施工方法|施工顺序|工艺流程/u,/验收|检测|调试|资料闭环/u]},{title:"主要分部分项工程施工方案",minNumericFacts:4,minObjectFacts:6,objectPatterns:[/拆除|垃圾外运|既有设施保护/u,/结构加固|墙体补强|框架结构/u,/装饰|装修|基层|面层|环保|阻燃/u,/防水|管网|给排水|阀门|道排/u,/消防|水电|电气|弱电|智能化|通风空调/u,/屋面|立面|室外|附属/u,/施工流程|施工方法|施工顺序|工艺流程/u,/验收|检测|调试|资料闭环/u]},{title:"主要施工方法",minNumericFacts:4,minObjectFacts:6,objectPatterns:[/拆除|垃圾外运|既有设施保护/u,/结构加固|墙体补强|框架结构/u,/装饰|装修|基层|面层|环保|阻燃/u,/防水|管网|给排水|阀门|道排/u,/消防|水电|电气|弱电|智能化|通风空调/u,/屋面|立面|室外|附属/u,/施工流程|施工方法|施工顺序|工艺流程/u,/验收|检测|调试|资料闭环/u]}];return a.flatMap(a=>b.flatMap(b=>{let c=((a,b)=>{let c=a.split("\n"),d=c.findIndex(a=>/^###\s+(?:\d+(?:\.\d+)*\s+)?/u.test(a.trim())&&a.includes(b));if(d<0&&(d=c.findIndex(a=>/^#{3,4}\s+(?:\d+(?:\.\d+)*\s+)?/u.test(a.trim())&&a.includes(b))),d<0)return"";let e=/^(#{2,6})\s+/u.exec(c[d].trim())?.[1].length||3,f=c.length;for(let a=d+1;a<c.length;a+=1){let b=/^(#{2,6})\s+/u.exec(c[a].trim());if(b&&b[1].length<=e){f=a;break}}return c.slice(d,f).join("\n")})(a.content,b.title);if(!c)return[];let d=new Set(c.match(/\d+(?:\.\d+)?\s*(?:m²|㎡|平方米|m|mm|层|栋|日历天|天|%|台|套|根|处|个|kg|t|吨)/giu)||[]).size,e=b.objectPatterns.filter(a=>a.test(c)).length,f=[];return d<b.minNumericFacts&&f.push({level:"error",severity:"blocker",message:`${a.title} ${b.title} 参数落位不足:当前 ${d} 个,要求不少于 ${b.minNumericFacts} 个`,suggestion:"关键小节必须写入项目规模、工期、层数、结构、专业工程或验收参数等具体数值。"}),e<b.minObjectFacts&&f.push({level:"warning",severity:"warning",message:`${a.title} ${b.title} 专业事实覆盖不足:当前 ${e} 类,建议不少于 ${b.minObjectFacts} 类`,suggestion:"优先基于当前项目绑定资料补充工程对象、专业范围、重点难点和对应施工内容;不得为满足类别数量编造或混入其他项目事实。"}),f}))}(f),(function(a,b=""){return[...c2(a),...c3(a),...c4(a),...c5(a),...function(a,b=""){let c=[],d=(b||a.map(a=>a.content).join("\n\n")).split("\n"),e=0,f=0;for(;f<d.length;){let a=d[f].trim();if(!/^\|.+\|$/u.test(a)){f+=1;continue}let b=[];for(;f<d.length&&/^\|.+\|$/u.test(d[f].trim());)b.push(d[f].trim()),f+=1;if(b.length<3)continue;e+=1;let g=b[0].split("|").length-2,h=b.filter((a,b)=>0!==b&&a.replace(/\|/gu,"").replace(/[\s\-:]/gu,"").length>0),i=h.reduce((a,b)=>a+b.split("|").slice(1,-1).map(a=>a.trim()).filter(a=>""===a||"-"===a||"—"===a||"/"===a).length,0),j=h.length*Math.max(1,g);if(i>0&&i/Math.max(1,j)>=.4&&c.push({level:"warning",severity:"warning",message:`第 ${e} 个表格存在 ${i} 个空单元格(${h.length} 行),表格信息不完整`,suggestion:"表格每一列都必须填写,缺失字段应从资料补齐;无法确认的字段应删除该行而非留空。"}),c.length>=5)break}return c}(a,b),...c6(a,b)]})(f,g).map(a=>"error"===a.level?{...a,severity:"blocker"}:a)).map(a=>"error"===a.level?{...a,severity:a.severity||"blocker"}:a)}function da(a){var b;let{finalChapterDrafts:c,effectiveChapters:d,factsModel:e,allEvidence:f,finalMarkdown:g,validationIssues:h,retrievalCoverageReports:i,includeRetrievalCoverage:j}=a,k=function(a){let b=a.chapters.map(b=>{let c=function(a){let b=["project"];return/进度|工期|节点|部署/u.test(a.title)&&b.push("schedule"),/质量|验收|材料/u.test(a.title)&&b.push("quality","rules"),/安全|文明|风险|危大/u.test(a.title)&&b.push("safety","rules"),/资源|材料|设备|劳动力|机械/u.test(a.title)&&b.push("resources"),/施工|工艺|技术|方案|清单|工程量|图纸/u.test(a.title)&&b.push("quantities"),[...new Set(b)]}(a.templateChapters.find(a=>a.id===b.id||a.title===b.title)||b),d=c.filter(c=>{var d;return d=a.factsModel,("project"===c?d.project.length>0||d.preciseFacts.length>0:"schedule"===c?d.schedule.length>0:"quality"===c?d.quality.length>0||d.specifications.length>0:"safety"===c?d.safety.length>0||d.rules.length>0:"resources"===c?d.resources.length>0||d.bills.length>0:"quantities"===c?d.bills.length>0||d.drawings.length>0||d.tables.length>0:"rules"===c&&(d.rules.length>0||d.specifications.length>0))||(b.evidence||[]).some(a=>RegExp(cg[c]||c,"u").test(`${a.sectionTitle||""} ${a.content||""}`))}),e=c.filter(a=>!d.includes(a)),f=c.length?Math.round(d.length/c.length*100):100;return{chapterId:b.id,title:b.title,requiredDomains:c,confirmedDomains:d,unconfirmedDomains:e,score:f}}),c=new Set(a.evidence.map(a=>a.filePath).filter(Boolean)),d=b.length?Math.round(b.reduce((a,b)=>a+b.score,0)/b.length):100;return{score:d,evidenceCount:a.evidence.length,confirmedFiles:c.size,chapterReports:b,unconfirmedDomains:[...new Set(b.flatMap(a=>a.unconfirmedDomains))],remediation:d>=95?"知识库事实覆盖已达到高置信交付要求。":"系统需扩大本地知识库检索、补抽结构化事实,并将已确认事实落位到对应章节。"}}({chapters:c,templateChapters:d,factsModel:e,evidence:f}),l=function(a,b){let c=new Set,d=[];for(let e of[...b.project,...b.schedule,...b.quality,...b.safety,...b.resources,...b.preciseFacts,...b.bills,...b.drawings,...b.rules,...b.specifications]){let b=(0,P.lG)(e.value).replace(/\s+/gu," ").trim(),f=e.fieldName||e.key||e.fieldId||"资料事实",g=`${f}:${b}`;!b||c.has(g)||(c.add(g),d.push({label:f,value:b,sourceFile:e.sourceFile,status:!function(a,b){let c=b7(a),d=b7(b);return!!(!d||d.length<2||c.includes(d))||(b.match(/\d+(?:\.\d+)?\s*(?:日历天|天|个月|月|年|万元|元|平方米|㎡|m²|立方米|m³|米|m|mm|cm|台|套|人|项|%|MPa|kPa)?/giu)||[]).some(a=>b7(a).length>=2&&c.includes(b7(a)))}(a,b)?"unplaced":"used",confidence:e.confidence}))}return d}(g,e),m=(b={chapters:c,templateChapters:d,factsModel:e}).chapters.map(a=>{let c=b.templateChapters.find(b=>b.id===a.id||b.title===a.title),d=function(a,b){let c=`${a.title} ${(b?.sections||a.sections||[]).join(" ")}`;return[{key:"structure",label:"结构完整",passed:(a.sections||b?.sections||[]).length>=2||/###\s+/u.test(a.content)},{key:"depth",label:"内容深度",passed:(0,w.V7)(a.content)>=600},{key:"evidence",label:"证据绑定",passed:(a.evidence||[]).length>0},{key:"professional",label:"专业控制点",passed:/验收|复核|检查|交底|控制点|整改|闭环|台账|进场|工序/u.test(a.content)},{key:"schedule",label:"工期支撑",passed:!/进度|工期|节点/u.test(c)||/工期|节点|计划|纠偏|资源|穿插/u.test(a.content)},{key:"quality",label:"质量验收",passed:!/质量|验收/u.test(c)||/质量|验收|复验|隐蔽|检验批|整改/u.test(a.content)},{key:"safety",label:"安全闭环",passed:!/安全|文明|风险|危大/u.test(c)||/风险|检查|整改|应急|培训|交底/u.test(a.content)}]}(a,c),e=d.filter(a=>a.passed).length;return{chapterId:a.id,title:a.title,score:d.length?Math.round(e/d.length*100):100,checks:d,action:e===d.length?"章节覆盖完整。":"系统需补齐章节结构、证据绑定、专业控制点和跨章依赖。"}}),n=ci(h,k.score>=85?[]:[{level:"warning",message:`系统知识库覆盖确认率偏低:${k.score}%`,suggestion:`${k.remediation} 未确认事实域:${k.unconfirmedDomains.map(a=>cg[a]||a).join("、")||"无"}`}],function(a,b={}){let c=a.filter(a=>"unplaced"===a.status&&b8(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}个)`:""}`}))}(l,{maxIssues:20}),m.filter(a=>a.score<80).map(a=>({level:"warning",message:`章节覆盖不足:${a.title} ${a.score}%`,suggestion:`${a.action} 未通过项:${a.checks.filter(a=>!a.passed).map(a=>a.label).join("、")}`})),j?i.filter(a=>a.risk.highRisk&&(0===a.requiredFactTotal?a.evidenceCount<8:a.requiredFactCovered<a.requiredFactTotal)).map(a=>({level:"warning",message:`系统知识库召回覆盖需复核:${a.chapterTitle}`,suggestion:`知识库总切片 ${a.risk.totalChunks},当前预加载 ${a.risk.loadedChunks}${a.risk.riskReason?`(${a.risk.riskReason})`:""},已启用深召回;事实覆盖 ${a.requiredFactCovered}/${a.requiredFactTotal},小节覆盖 ${a.sectionCovered}/${a.sectionTotal}。`})):[]),o=function(a){let b=function(a){let b=a.filter(a=>"error"===a.level).length;return Math.max(0,100-(12*b+Math.min(2*a.filter(a=>"warning"===a.level).length,30)+Math.min(a.filter(a=>"info"===a.level).length,10)))}(a.issues),c=ch(a.chapterCoverage.map(a=>a.score)),d=a.factTraces.filter(b8),e=d.filter(a=>"used"===a.status).length,f={factuality:Math.min(100,Math.round(.65*(d.length?Math.round(e/d.length*100):100)+.35*b)),structure:Math.min(100,Math.round(.7*(a.chapters.length>0&&a.chapters.every(b=>a.markdown.includes(b.title)&&(0,w.V7)(b.content)>=600)?95:78)+.3*c)),professionalDepth:c,executable:ch(a.chapterCoverage.map(a=>a.checks.some(a=>"professional"===a.key&&a.passed)?95:75)),evidenceCoverage:a.knowledgeCoverage.score,consistency:b},g=Math.round(.22*f.factuality+.16*f.structure+.18*f.professionalDepth+.16*f.executable+.18*f.evidenceCoverage+.1*f.consistency),h=a.issues.filter(a=>"error"===a.level).length,i=Math.max(0,Math.min(99,Math.round(g-8*h))),j=a.knowledgeCoverage.score>=95?95:85;return{overall:g,deliveryProbability:i,target:j,passed:i>=j&&0===h,scores:f,summary:`交付置信度 ${i}% / 目标 ${j}%,综合评分 ${g}/100`,actions:i>=j&&0===h?["已达到当前质量目标,建议保持事实口径和导出前复核。"]:["系统需优先修复阻断问题、扩大本地知识库检索、补抽结构化事实,并将未落位事实写入对应章节。","对低分章节执行结构补齐、专业控制点补写、跨章一致性复核和证据引用覆盖修复。"]}}({markdown:g,chapters:c,issues:n,knowledgeCoverage:k,factTraces:l,chapterCoverage:m}),p=function(a){let b=[],c=a.issues.filter(a=>"error"===a.level);c.length>0&&b.push({priority:"high",title:"阻断问题修复",action:`修复 ${c.length} 个导出阻断问题,优先处理事实冲突、结构缺失、模板规则违规和占位残留。`});let d=(a.factTraces||[]).filter(a=>"unplaced"===a.status);if(d.length>0){let a=d.length>12?`${d.length} 项(示例:${d.slice(0,8).map(a=>a.label).join("、")} 等)`:`${d.length} 项(${d.map(a=>a.label).join("、")})`;b.push({priority:"high",title:"事实落位修复",action:`将 ${a} 已确认知识库事实写入对应章节,保持原始数值、单位和来源口径。`})}a.knowledgeCoverage&&a.knowledgeCoverage.score<95&&b.push({priority:"medium",title:"知识库确认覆盖修复",action:"扩大本地知识库检索范围,执行事实补抽和章节证据重分配;这是系统检索、抽取、落位问题,不要求用户追加资料。"});let e=(a.chapterCoverage||[]).filter(a=>a.score<80);if(e.length>0){let a=e.length>10?`${e.slice(0,8).map(a=>a.title).join("、")} 及其他${e.length-8}章`:e.map(a=>a.title).join("、");b.push({priority:"medium",title:"章节覆盖修复",action:`补齐低覆盖章节(${e.length}章):${a}。`})}return a.qualityReport&&!a.qualityReport.passed&&b.push({priority:"medium",title:"交付置信度修复",action:a.qualityReport.actions.join(" ")}),b}({issues:n,qualityReport:o,knowledgeCoverage:k,factTraces:l,chapterCoverage:m});n=ci(n,o.passed?[]:[{level:"warning",message:`交付置信度未达目标:${o.deliveryProbability}% / ${o.target}%`,suggestion:o.actions.join(" ")}],p.filter(a=>"high"===a.priority).map(a=>({level:"warning",message:`修复策略待执行:${a.title}`,suggestion:a.action})));let q=(0,x.Ai)(n,e,c);return{knowledgeCoverage:k,factTraces:l,chapterCoverage:m,qualityReport:o,repairStrategies:p,validationIssues:n,finalExportGate:q}}async function db(a){var b,c,e;let{chapterDraftsByOrder:f,chapterGenerationStagesByOrder:g,chapterGenerationStages:h,effectiveChapters:i,template:j,allEvidence:k,projectMaterialScope:l,progressStages:m,documentSpec:n,projectMaterialSummary:o,domainProfile:p,documentBudget:q,input:r,generationDiagnostics:t,promptTexts:y,promptBindings:z,promptDocumentRules:A,projectRoot:B,projectId:C,readiness:D,factExtractionPromptTexts:E,hasExplicitOutline:F,missingItems:G,retrievalCoverageReports:H,failedChapterMessages:I,webResearchReport:J,indexHealth:K,agentWorkflow:L,globalConsistencyIssues:M,writingTaskBrief:N,emitProgress:O,withProgressHeartbeat:Q}=a,{signal:R,requirement:S}=r,T=f.filter(a=>!!a);if(h.push(...g.filter(a=>!!a)),0===T.length)throw Error(`章节生成未完成:${I.join(";")||"没有生成任何有效章节"}`);if(F&&T.length<i.length)throw Error(`OUTLINE 指定 ${i.length} 章,实际只生成 ${T.length} 章:${I.join(";")||"部分章节未生成"}`);let U=b_(T.flatMap(a=>a.evidence||[]),l);if(b1(U,l,"finalize:chapter-evidence"),U.length>0){k.push(...U);let a=(0,s.QR)(k,{maxChars:Math.max(5e4,9e3*i.length),preservePinned:!0});k.splice(0,k.length,...a)}let V=b_(k,l);k.splice(0,k.length,...V),b1(k,l,"finalize:all-evidence"),(0,P.Te)(R),(0,aG.fx)(m,(0,aG.X5)({type:"file_understanding",roleId:"multimodal-files",status:"running",message:"正在理解多模态参考文件"},{subtitle:"多模态参考文件"})),O(T);let W={stage:{type:"file_understanding",roleId:"multimodal-files",status:"skipped",message:"文件理解跳过"},notes:[]};try{W=await bN(B,k,R)}catch(a){if(R?.aborted)throw a;console.error("[gen] fileUnderstanding failed:",a)}(0,aG.fx)(m,W.stage);let X=(0,s.QR)(k,{maxItems:Math.max(48,10*i.length),maxChars:Math.max(52e3,9e3*i.length),preservePinned:!0});k.splice(0,k.length,...b_(X,l)),b1(k,l,"finalize:post-file-understanding");let Y=function(a,b,c){let d={};for(let e of(0,u.Uy)(a,c)){let a=b.find(a=>(0,u.I2)(a,e));a&&(d[e.name]=`${a.content.replace(/\s+/gu," ")}(来源:${a.filePath},角色:${a.roleId||"未标注"})`)}return d}(j,k,n),Z=b0(an(k,j,n),l),$=b0(at(k),l),_=b0(au(k,p),l),aa={facts:[],stages:[{type:"fact_extraction",roleId:"llm-json",status:"skipped",message:"已有本地/资料事实覆盖主要必需字段,跳过 LLM 全量事实抽取"}]};if(function(a,b,c){let d=(0,u.Uy)(b,c).filter(a=>a.required);return 0===d.length?a.filter(a=>a.confidence>=.75&&(0,P.lG)(a.value).trim().length>=2).length<12:d.filter(b=>a.some(a=>(function(a,b){let c=(0,P.lG)(a.value).trim();if(!c||c.length<2||c.length>220&&a.confidence<.8)return!1;let d=`${a.fieldId||""} ${a.fieldName||""} ${a.key}`.toLowerCase();return!!(d.includes(b.id.toLowerCase())||d.includes(b.name.toLowerCase()))&&("project_basic_fact"===a.roleId||a.roleId?.startsWith("role-")||a.sourceRef?.filePath?a.confidence>=.55:a.confidence>=.75)})(a,b))).length/d.length<.9}([...Z,...$,..._],j,n)){let a=(0,s.QR)(k,{maxItems:48,maxChars:45e3,preservePinned:!0});try{aa=await ao(a,E,j,n,R,t)}catch(a){if(R?.aborted)throw a;console.error("[gen] fact extraction failed:",a)}}for(let a of aa.stages)(0,aG.fx)(m,a);let ab=b0((b=[...Z,...$,..._,...aa.facts],b.filter(a=>!!a.sourceFile)),l);for(let a of ab)Y[a.key]=`${(0,P.lG)(a.value)}(来源:${a.sourceFile},角色:${a.roleId})`;let ac=aF(ab,b0(am(k),l),G,n,p),ad=T.map(a=>{let b=n.chapterRules.find(b=>b.id===a.id||b.title===a.title),c=(b?.requiredFactIds||[]).map(a=>n.factFields.find(b=>b.id===a)?.name).filter(Boolean),d=[...new Set([...a.missingFacts||[],...c].filter(Boolean))],e=d.filter(b=>!a.missingFacts.includes(b)),f=d.filter(b=>a.missingFacts.includes(b)),g=+(a.evidence.length>0),h=d.length?e.length/d.length:1;return{chapterId:a.id,title:a.title,requiredFacts:d,coveredFacts:e,missingFacts:f,evidenceCount:a.evidence.length,readinessRate:Math.min(1,.7*h+.3*g)}}),ae=function(a,b=[],c){let e=[],f=[];for(let b of a)0===b.evidence.length&&e.push(`${b.title} 未检索到资料证据`),b.content.length<80&&e.push(`${b.title} 内容较短,建议人工补充或重新生成`);return c&&a.length<c.chapters.length&&f.push(`章节生成不完整:已生成 ${a.length}/${c.chapters.length} 章`),c&&0===(0,d.zY)(c).length&&f.push("模板未绑定任何提示词"),{passed:0===f.length,warnings:e,errors:f}}(T,ab,j);ae.warnings=[...ae.warnings,...D.warnings],ae.errors=[...ae.errors,...D.blockingIssues];let af=[...k.reduce((a,b)=>a.set(b.filePath,(a.get(b.filePath)??0)+1),new Map).entries()].sort((a,b)=>b[1]-a[1]).map(([a,b])=>({filePath:a,count:b})),ag=new Map;for(let a of k)ag.set(a.source||"unknown",(ag.get(a.source||"unknown")??0)+1);let ah=ci(function(a,b,c){let d=[...a.errors.map(a=>({level:"error",message:a,suggestion:"请补充配置或资料后重新生成。"})),...a.warnings.map(a=>({level:"warning",message:a,suggestion:"建议人工确认或补充对应资料。"}))];return c.some(a=>/资料未提供|系统暂未从知识库确认/u.test(a.content))&&d.push({level:"warning",message:"存在系统暂未从知识库确认的章节内容",suggestion:"请检查项目角色配置、文件绑定顺序和事实抽取落位结果。"}),b.conflicts.length>0&&d.push(...b.conflicts.map(a=>({level:"warning",message:a,suggestion:"请根据当前模板绑定的角色、文件证据和用户要求复核取值口径。"}))),d}(ae,ac,T),function(a){let b=[];for(let c of a)0===c.evidenceCount?b.push({level:"error",message:`章节缺少证据:${c.title}`,suggestion:"请补充对应绑定材料或调整模板章节检索词。"}):c.readinessRate<.5&&b.push({level:"warning",message:`章节事实覆盖率较低:${c.title} ${Math.round(100*c.readinessRate)}%`,suggestion:"建议补充章节 requiredFacts 或绑定材料证据。"});return b}(ad),(M||[]).slice(0,10).map(a=>({level:"warning",severity:"warning",category:"fact_consistency",owner:"llm",message:`跨章一致性复核:${a}`,suggestion:"建议在章节续写或定向修复阶段消除跨章不一致。"}))),ai=T.map(a=>a.content).join("\n\n");ah=ci(ah,cN(ai,ab,{maxIssues:20}).map(a=>({...a,level:"warning",severity:"warning",suggestion:"建议 Agent Writer 在章节生成阶段优先落位可信基础事实;导出阶段不因未落位的低置信或泛化事实阻断。"})));let aj=Math.max(0,i.length-T.length);ah=ci(ah,[...aj>0?[{level:"error",severity:"blocker",message:`部分章节生成失败:${aj} 章`,suggestion:I.join(";")||"请检查模型调用、知识库检索和事实抽取配置后重新生成失败章节。"}]:[]]),ah=ci(ah,T.flatMap(a=>{let b=i.find(b=>b.id===a.id);if(!b)return[];let c=bE({chapter:b,content:a.content,evidence:a.evidence||[]});return c.length>0?[{level:"warning",message:`${a.title} 小节事实或量化参数落位可继续优化:${c.slice(0,5).join(";")}`,suggestion:"建议在 Agent Writer 阶段扩大定向证据,不得在导出阶段补写。"}]:[]}));let ak=[],al=[...m,...h];(0,aG.fx)(al,(0,aG.X5)({type:"reference",roleId:"knowledge-usage-report",status:"success",message:`资料使用报告:证据 ${k.length} 条,来源文件 ${af.length} 份,结构化事实 ${ab.length} 条`,details:[`证据类型:${[...ag.entries()].map(([a,b])=>`${a} ${b}`).join(",")||"无"}`,`索引健康:可用切片 ${K.usableChunkCount} 条,待索引 ${K.pendingJobs} 个,向量 ${K.vectorStatus?.status||"unknown"}`]},{subtitle:"资料使用报告"})),(0,aG.fx)(al,(0,aG.X5)({type:"reference",roleId:"web-research-report",status:J.enabled?"success":"skipped",message:J.enabled?`联网增强:检索章节 ${new Set(J.chapters).size} 个,查询 ${J.queries.length} 个,使用公开资料 ${J.evidenceCount} 条`:"联网增强未开启",details:J.enabled?[`检索主题:${[...new Set(J.queries)].join(";")||"无"}`,`过滤结果:${J.filteredCount} 条`,"公开资料仅用于通用规范、政策、工艺和措施补充,不作为项目事实来源"]:["可在模型配置中开启联网增强"]},{subtitle:"联网增强报告"}));let ap=(0,v.rs)((0,v.V3)({templateId:j.id,templateName:j.name,title:j.outputTitle,requirement:S||"",projectRoot:B,projectId:C,exportSettings:j.exportSettings,generationSettings:j.generationSettings,facts:Y,structuredFacts:ab,factsModel:ac,chapters:T,sources:af,missingItems:[...new Set(G)],validation:ae,validationIssues:ah,executionStages:al,exportGate:{passed:!1,blockingIssues:[],checklist:[]},assets:ak,partialChapters:T.map(a=>({id:a.id,title:a.title,chars:(0,w.V7)(a.content),status:cr(a,q.chapterTargets.get(a.id)),updatedAt:Date.now()})),checkpointChapters:T,generatedAt:Date.now()},{forbidDrawingImages:!1,promptRules:A}),T,{forbidDrawingImages:!1,promptRules:A}).chapters.map(a=>{let b=i.find(b=>b.id===a.id)||a;return{...a,sections:a.sections||[],content:cI(a.content,b)}}),aq=(0,v.rs)((0,v.V3)({templateId:j.id,templateName:j.name,title:j.outputTitle,requirement:S||"",projectRoot:B,projectId:C,exportSettings:j.exportSettings,generationSettings:j.generationSettings,facts:Y,structuredFacts:ab,factsModel:ac,chapters:ap,sources:af,missingItems:[...new Set(G)],validation:ae,validationIssues:ah,executionStages:al,exportGate:{passed:!1,blockingIssues:[],checklist:[]},assets:ak,partialChapters:[],checkpointChapters:ap,generatedAt:Date.now()},{forbidDrawingImages:!1,promptRules:A}),ap,{forbidDrawingImages:!1,promptRules:A}).markdown;aq=(0,v.bR)((0,v.kT)((0,v.K7)(c8(cG(aq,ab),o))));let ar=cn({facts:ab,markdown:aq});ar.size>0&&al.push({type:"fact_extraction",roleId:"canonical-facts",status:"success",message:`已决策可信基础事实 ${ar.size} 项`,details:[...ar.values()].map(a=>`${a.label}=${a.value}(${a.source},confidence=${a.confidence})`).slice(0,12)});let as=ah;ah=c9({documentSpec:n,validationIssues:ah,factsModel:ac,finalChapterDrafts:ap,finalMarkdown:aq,template:j,promptBindings:z,promptDocumentRules:A,projectMaterialSummary:o,domainProfile:p,structuredFacts:ab,documentBudget:q});let av=da({finalChapterDrafts:ap,effectiveChapters:i,factsModel:ac,allEvidence:k,finalMarkdown:aq,validationIssues:ah,retrievalCoverageReports:H,includeRetrievalCoverage:!0}),{knowledgeCoverage:aw,factTraces:ax,chapterCoverage:ay,qualityReport:az,repairStrategies:aA,finalExportGate:aB}=av;ah=av.validationIssues;let aC=[],aD=[...aB.blockingIssues,...ah.filter(a=>"error"===a.level)],aE=/项目特点.*重点.*难点|重点.*难点.*分析|项目主要施工内容|主要分部分项工程施工方案|主要施工方法|危大工程专项施工方案审批流程|原材料进场复试与见证取样/u,aH=Array.from(new Map(aD.map(a=>{let b=/^(.*?)(?:\s+|)(?:空小节|小节内容补写未完成|小节生成未达标|小节只有标题|只有标题或表格无正文|规划小节正文过短|正文小节正文过短|正文不足):(.+)$/u.exec(a.message);if(!b)return;let c=/^(.*?)\s+(项目特点、重点、难点分析|项目主要施工内容|主要分部分项工程施工方案|主要施工方法|危大工程专项施工方案审批流程|原材料进场复试与见证取样)\s+正文不足/u.exec(a.message),d=c?c[2]:b[2].split(/[::,,]/u)[0].trim();return{issue:a,match:b,critical:aE.test(d)}}).filter(a=>!!a).map(a=>[`${a.match[1].trim()}::${a.match[2].trim()}`,a])).values()).sort((a,b)=>Number(b.critical)-Number(a.critical)).slice(0,4);if(aH.length>0){let b=[];for(let{issue:c,match:d}of aH){let e=d[1].trim(),f=d[2].trim(),g=/^(.*?)\s+(项目特点、重点、难点分析|项目主要施工内容|主要分部分项工程施工方案|主要施工方法|危大工程专项施工方案审批流程|原材料进场复试与见证取样)\s+正文不足/u.exec(c.message);g&&(e=g[1].trim(),f=g[2].trim());let h=ap.findIndex(a=>a.title===e||e.includes(a.title)||a.title.includes(e));h<0&&(h=ap.findIndex(a=>(a.content||"").includes(f)));let l=ap[h],n=i.find(a=>a.id===l?.id||a.title===l?.title);if(h<0||!l||!n){b.push(`失败:${e}/${f} 未定位到章节`);continue}let o=(0,aG.X5)({type:"llm_review",roleId:`agent-final-gate-repair-${l.id}`,status:"running",message:`Final Gate 正在补写空小节:${e} / ${f}`,details:b},{subtitle:"Final Gate Repair"});(0,aG.fx)(m,o),(0,aG.fx)(aC,o),O(ap,m);let p=bC(f),q=Math.max(620,p>0?Math.ceil(p/.7):620),r=await Q(()=>bh({template:j,chapter:n,sectionTitle:f,evidence:l.evidence?.length?l.evidence:k,missingFacts:[],promptTexts:y,projectContext:a.projectContext,requirement:S,roleContext:"Final Gate 空小节定向修复",targetWords:q,maxWords:Math.ceil(1.32*q),forbidDrawingImages:!1,qualityFeedback:`Final Gate 发现“${f}”为空小节或深度不足。请基于证据完整重写该小节正式正文(原小节内容将被整体替换),包含检查责任、验收节点、资料闭环、整改复验要求,优先落位项目建筑面积、层数、工期、专业范围等量化参数,不得输出占位或解释。`,diagnostics:t,signal:R})),s=!1;if(r&&(0,w.V7)(r)>=80){let a=function(a,b,c){let d=a=>a.replace(/[\u00a0\u3000]/gu," ").replace(/^\d+(?:\.\d+)*\s+/u,"").trim(),e=a=>a.trim().replace(/^#{2,6}\s+(?:\d+(?:\.\d+)*\s+)?[^\n]+\n+/u,"").trim(),f=a.split("\n"),g=0;for(let h=0;h<f.length;h+=1){let i=f[h],j=g;g+=i.length+1;let k=/^(#{3,4})\s+(.+)$/u.exec(i.trim());if(!k)continue;let l=d(k[2]);if(l!==b&&!l.includes(b)&&!b.includes(l))continue;let m=f.length;for(let a=h+1;a<f.length;a+=1)if(/^#{2,4}\s+/u.test(f[a].trim())){m=a;break}let n=m<f.length?f.slice(0,m).join("\n").length:a.length,o=e(c);return`${a.slice(0,j)}${i.trim()}
120
-
121
- ${o}${a.slice(n)}`}return a}(l.content,f,r);(s=a!==l.content)&&(ap[h]={...l,content:cI(a,n)}),b.push(s?`成功:${e}/${f}(${(0,w.V7)(r)}字)`:`失败:${e}/${f}(未定位到原小节块)`)}else b.push(`失败:${e}/${f}(${t.llm.lastError||"空响应"})`);let u=(0,aG.X5)({type:"llm_review",roleId:`agent-final-gate-repair-${l.id}`,status:s?"success":"failed",message:s?`Final Gate 空小节修复完成:${e} / ${f}`:`Final Gate 空小节修复失败:${e} / ${f}`,details:b},{subtitle:"Final Gate Repair"});(0,aG.fx)(m,u),(0,aG.fx)(aC,u),O(ap,m)}aq=(0,v.bR)((0,v.kT)((0,v.K7)(c8(cG((c={template:j,requirement:S,projectRoot:B,projectId:C,facts:Y,structuredFacts:ab,factsModel:ac,chapters:ap,sources:af,missingItems:G,validation:ae,validationIssues:ah,executionStages:al,assets:ak,promptDocumentRules:A},(0,v.rs)((0,v.V3)({templateId:c.template.id,templateName:c.template.name,title:c.template.outputTitle,requirement:c.requirement||"",projectRoot:c.projectRoot,projectId:c.projectId,exportSettings:c.template.exportSettings,generationSettings:c.template.generationSettings,facts:c.facts,structuredFacts:c.structuredFacts,factsModel:c.factsModel,chapters:c.chapters,sources:c.sources,missingItems:[...new Set(c.missingItems)],validation:c.validation,validationIssues:c.validationIssues,executionStages:c.executionStages,exportGate:{passed:!1,blockingIssues:[],checklist:[]},assets:c.assets,partialChapters:[],checkpointChapters:c.chapters,generatedAt:Date.now()},{forbidDrawingImages:!1,promptRules:c.promptDocumentRules}),c.chapters,{forbidDrawingImages:!1,promptRules:c.promptDocumentRules}).markdown),ab),o)))),ah=c9({documentSpec:n,validationIssues:as.filter(a=>!aH.some(b=>{let c=b.match[1].trim(),d=b.match[2].trim(),e=/^(.*?)\s+(项目特点、重点、难点分析|项目主要施工内容|主要分部分项工程施工方案|主要施工方法|危大工程专项施工方案审批流程|原材料进场复试与见证取样)\s+正文不足/u.exec(b.issue.message);return e&&(c=e[1].trim(),d=e[2].trim()),a.message.includes(c)&&a.message.includes(d)&&/空小节|小节内容补写未完成|小节生成未达标|小节只有标题|正文小节正文过短|规划小节正文过短|缺少规划小节|正文不足/u.test(a.message)})&&!/已确认事实未在正文中落位/u.test(a.message)),factsModel:ac,finalChapterDrafts:ap,finalMarkdown:aq,template:j,promptBindings:z,promptDocumentRules:A,projectMaterialSummary:o,domainProfile:p,structuredFacts:ab,documentBudget:q}),av=da({finalChapterDrafts:ap,effectiveChapters:i,factsModel:ac,allEvidence:k,finalMarkdown:aq,validationIssues:ah,retrievalCoverageReports:H,includeRetrievalCoverage:!1}),({knowledgeCoverage:aw,factTraces:ax,chapterCoverage:ay,qualityReport:az,repairStrategies:aA,finalExportGate:aB}=av),ah=av.validationIssues}let aI=[{key:"export-gate",label:"导出门禁",passed:(e={exportGate:aB,qualityReport:az,repairStrategies:aA}).exportGate.passed,message:e.exportGate.passed?"导出门禁通过":`仍有 ${e.exportGate.blockingIssues.length} 个阻断问题`},{key:"delivery-probability",label:"交付置信度",passed:e.qualityReport.passed,message:`${e.qualityReport.deliveryProbability}% / ${e.qualityReport.target}%`},{key:"factuality",label:"事实准确性",passed:e.qualityReport.scores.factuality>=85,message:`${e.qualityReport.scores.factuality}/100`},{key:"evidence-coverage",label:"知识库证据覆盖",passed:e.qualityReport.scores.evidenceCoverage>=85,message:`${e.qualityReport.scores.evidenceCoverage}/100`},{key:"professional-depth",label:"专业深度",passed:e.qualityReport.scores.professionalDepth>=80,message:`${e.qualityReport.scores.professionalDepth}/100`},{key:"repair-strategies",label:"修复策略",passed:0===e.repairStrategies.filter(a=>"high"===a.priority).length,message:e.repairStrategies.map(a=>a.title).join("、")||"无高优先级修复策略"}],aJ=function(a){let b=[...a.diagnostics.metrics].sort((a,b)=>b.durationMs-a.durationMs).slice(0,5).map(a=>({name:a.name,durationMs:a.durationMs}));return{llmCalls:a.diagnostics.llm.calls,llmFailures:a.diagnostics.llm.failures,maxParallelLlm:a.diagnostics.llm.maxActive,searchQueries:a.diagnostics.evidence.searchQueries,evidenceContextChars:a.diagnostics.evidence.contextChars,qualityIssues:{...a.diagnostics.quality},slowMetrics:b,elapsedMs:a.startedAt&&a.endedAt?a.endedAt-a.startedAt:void 0}}({diagnostics:t}),aK=(0,x.Ff)(ah),aL=function(a,b=""){let c=function(a){let b=a.map(a=>`${a.title} ${(a.sections||[]).join(" ")} ${a.content}`).join("\n"),c=[{label:"工程概况",pattern:/工程概况|项目概况|基本概况/u},{label:"主要施工内容",pattern:/主要施工内容/u},{label:"重难点分析",pattern:/重点.{0,4}难点/u},{label:"施工部署",pattern:/施工部署|总体部署|流水/u},{label:"进度计划",pattern:/进度计划|工期保障|工期计划/u},{label:"质量保证",pattern:/质量保证|质量管理|质量控制/u},{label:"安全文明",pattern:/安全.{0,8}(?:管理|措施|文明)|文明施工/u},{label:"资源配置",pattern:/劳动力|机械设备|材料.{0,4}计划|资源配置/u},{label:"绿色环保",pattern:/绿色施工|扬尘|噪声|环保/u},{label:"应急管理",pattern:/应急/u}],d=c.filter(a=>a.pattern.test(b)),e=c7(d.length/c.length*100),f=c.filter(a=>!a.pattern.test(b)).map(a=>a.label);return{score:e,detail:`覆盖 ${d.length}/${c.length} 个核心结构组${f.length?`;缺失:${f.join("、")}`:""}`}}(a),d=function(a){let b=a.map(a=>a.content).join("\n"),c=new Set(b.match(/\d+(?:\.\d+)?\s*(?:m²|㎡|m3|m³|mm|cm|m|km|kg|t|MPa|kPa|℃|%|日历天|天|层|台|套|个|项|次|份|人|小时)/giu)||[]),d=new Set(b.match(/工程量|材料|设备|范围|流程|验收|检测|复试|调试|隐蔽|检验批|资料|记录|系统|部位|接口|规格|标准/gu)||[]),e=Math.max(1,b.length),f=c.size/(e/1e3),g=d.size/(e/1e3);return{score:c7(Math.min(100,18*f+12*g)),detail:`量化参数 ${c.size} 项(每千字 ${f.toFixed(1)}),专业事实词 ${d.size} 类(每千字 ${g.toFixed(1)})`}}(a),e=function(a){let b=a.map(a=>a.content).join("\n"),c=new Set(b.match(/\d+(?:\.\d+)?\s*(?:mm|MPa|kN|kPa|℃|d)|间距[≤<]?\s*\d+|偏差[≤<]?\s*\d+|坡度\s*\d+|压实度\s*[≥>]?\s*\d+|坍落度|闭水试验|静载试验|拉拔试验|探伤|试验压力|锚固长度|搭接长度|保护层厚度/giu)||[]),d=new Set(b.match(/(?:建筑面积|面积)[约]?\s*\d+(?:\.\d+)?\s*(?:㎡|m²)|计划工期\s*\d+|日历天|地上\s*\d+\s*层/giu)||[]),e=Math.max(1,b.length),f=c.size/(e/1e3);return{score:c7(Math.min(100,12*f+20*(d.size>0))),detail:`工艺参数 ${c.size} 项(每千字 ${f.toFixed(1)}),概况数字 ${d.size} 项`}}(a),f=function(a,b=""){let c=(b||a.map(a=>a.content).join("\n\n")).split("\n"),d=0,e=0,f=0;for(;f<c.length;){let a=c[f].trim();if(!/^\|.+\|$/u.test(a)){f+=1;continue}let b=[];for(;f<c.length&&/^\|.+\|$/u.test(c[f].trim());)b.push(c[f].trim()),f+=1;b.length<3||(d+=1,0===b.slice(1).filter(a=>a.replace(/\|/gu,"").replace(/[\s\-:]/gu,"").length>0).reduce((a,b)=>a+b.split("|").slice(1,-1).map(a=>a.trim()).filter(a=>""===a||"-"===a||"—"===a||"/"===a).length,0)&&(e+=1))}return{score:0===d?40:c7(e/d*100),detail:`表格 ${d} 个,其中字段完整 ${e} 个`}}(a,b),g=function(a){let b=c3(a),c=a.reduce((a,b)=>a+(b.content.match(/本小节围绕|交底覆盖率按100%|24小时内形成整改责任|按施工准备→过程实施→检查验收→问题整改→资料归档的闭环组织|按作业条件确认→技术交底→过程实施|依据本项目已确认资料中的项目边界/gu)||[]).length,0);return{score:c7(100-15*c-25*b.filter(a=>"error"===a.level).length),detail:`模板化空话命中 ${c} 处,废话段问题 ${b.length} 项`}}(a),h=function(a){let b=c2(a);return{score:c7(100-20*b.length-20*b.filter(a=>"error"===a.level).length),detail:`重复段落问题 ${b.length} 项`}}(a),i=function(a,b=""){let c=b||a.map(a=>a.content).join("\n\n"),d=[{label:"质量标准",pattern:/质量标准|质量要求|合格率/u},{label:"计划工期",pattern:/计划工期|工期要求|日历天/u},{label:"保修",pattern:/缺陷责任期|保修|质保/u},{label:"安全目标",pattern:/安全.{0,8}目标|文明.{0,8}目标/u},{label:"项目经理",pattern:/项目经理|项目负责人/u}],e=c6(a,b),f=d.filter(a=>a.pattern.test(c));return{score:c7(f.length/d.length*100),detail:`招标硬性要求响应 ${f.length}/${d.length} 项${e.length?`(未响应:${e.map(a=>a.message.replace(/未检测到对招标硬性要求的响应:/u,"")).join("、")})`:""}`}}(a,b),j=[{key:"structure",label:"结构完整度",score:c.score,detail:c.detail,weight:.18},{key:"factLanding",label:"事实落位率",score:d.score,detail:d.detail,weight:.18},{key:"processParameter",label:"工艺参数密度",score:e.score,detail:e.detail,weight:.16},{key:"table",label:"表格完整度",score:f.score,detail:f.detail,weight:.12},{key:"filler",label:"废话控制",score:g.score,detail:g.detail,weight:.14},{key:"duplication",label:"重复控制",score:h.score,detail:h.detail,weight:.12},{key:"reviewResponse",label:"评标响应度",score:i.score,detail:i.detail,weight:.1}],k=c7(j.reduce((a,b)=>a+b.score*b.weight,0)),l=k>=85?"专业":k>=70?"良好":k>=55?"合格":"待提升",m=[...c2(a),...c3(a),...c4(a),...c5(a)].slice(0,5).map(a=>a.message),n=j.filter(a=>a.score<70).map(a=>`${a.label}(${a.score}分)`);return{total:k,grade:l,dimensions:j,summary:`施工组织设计专业度评分 ${k} 分(${l})${n.length?`;待提升:${n.join("、")}`:""}`,topIssues:m}}(ap,aq);t.quality.blockingCount+=aK.blocking,t.quality.importantCount+=aK.important,t.quality.minorCount+=aK.minor;let aM=aB.blockingIssues.length,aN=[...al,...aC].map(a=>"validation"===a.type&&"document-workflow"===a.roleId?{...a,status:aM>0?"failed":"success",message:`阻断 ${aM},问题 ${ah.length}`}:"export_ready"===a.type?{...a,status:aB.passed?"success":"failed",message:aB.passed?"已准备好导出 Markdown/HTML/DOCX/PDF":"导出门禁未通过,请完成阻断问题修复后再导出"}:aB.passed&&"failed"===a.status&&/^agent-(?:reviewer|repairer)-/u.test(a.roleId)?{...a,status:"skipped",message:`${a.message||"章节中间审查失败"};最终门禁已通过,历史中间态已归档`}:a);aN.push((0,aG.X5)({type:"validation",roleId:"agent-final-gate",status:aB.passed?"success":"failed",message:aB.passed?"Agent 最终门禁通过":`Agent 最终门禁阻断 ${aM} 个问题`,details:aB.blockingIssues.slice(0,12).map(a=>a.message)},{subtitle:"Agent 最终门禁"})),aN.push((0,aG.X5)({type:"validation",roleId:"document-delivery-score",status:az.passed?"success":aB.passed?"skipped":"failed",message:aB.passed&&!az.passed?`${az.summary}(导出门禁已通过,作为后续优化建议归档)`:az.summary,details:az.actions},{subtitle:"交付评分"})),aN.push((0,aG.X5)({type:"validation",roleId:"document-professional-score",status:"专业"===aL.grade||"良好"===aL.grade?"success":"skipped",message:aL.summary,details:[...aL.dimensions.map(a=>`${a.label}:${a.score} 分(${a.detail})`),...aL.topIssues.map(a=>`待修复:${a}`)]},{subtitle:"专业度评分"})),N&&aN.push((0,aG.X5)({type:"reference",roleId:"document-writing-task-brief",status:"success",message:`写作任务书:${N.documentType},${N.chapters.length} 章任务卡,全局写作焦点 ${N.globalWritingFocus.length} 条`,details:[...N.globalWritingFocus,...N.chapters.slice(0,10).map(a=>`${a.chapterTitle}:覆盖 ${a.mustCover.length} 项`)],subtitle:"写作任务书"})),aN.push((0,aG.X5)({type:"reference",roleId:"knowledge-coverage",status:aw.score>=85?"success":"failed",message:`资料确认覆盖率:${aw.score}%(证据 ${aw.evidenceCount} 条,文件 ${aw.confirmedFiles} 份)`,details:[aw.remediation]},{subtitle:"资料覆盖"})),aN.push((0,aG.X5)({type:"validation",roleId:"document-review-checklist",status:aI.every(a=>a.passed)?"success":aB.passed?"skipped":"failed",message:`交付复核清单:通过 ${aI.filter(a=>a.passed).length}/${aI.length}${aB.passed&&!aI.every(a=>a.passed)?"(导出门禁已通过,其余项作为优化建议归档)":""}`,details:aI.map(a=>`${a.passed?"通过":"待修复"}:${a.label}${a.message?`(${a.message})`:""}`)},{subtitle:"交付复核"}));let aO=[...t.metrics].sort((a,b)=>b.durationMs-a.durationMs).slice(0,5).map(a=>`${a.name} ${Math.round(a.durationMs/1e3)}秒`).join(",");aN.push((0,aG.X5)({type:"validation",roleId:"document-diagnostics",status:"success",message:`性能统计:LLM ${t.llm.calls} 次,失败 ${t.llm.failures} 次,瞬态重试 ${t.llm.retries} 次,峰值并行 ${t.llm.maxActive},检索 ${t.evidence.searchQueries} 次/${Math.round(t.evidence.searchMs/1e3)} 秒,证据上下文 ${t.evidence.contextChars} 字,噪声过滤 ${t.evidence.filteredNoise} 条,质量问题 阻断${t.quality.blockingCount}/重要${t.quality.importantCount}/轻微${t.quality.minorCount}${aO?`,Top耗时:${aO}`:""}`},{subtitle:"后台诊断"}));let aP=ap.map(a=>({...a,evidence:(0,s.QR)(a.evidence||[],{maxItems:12,maxChars:9e3,preservePinned:!0})}));return ap=aP,{templateId:j.id,templateName:j.name,title:j.outputTitle,requirement:S||"",projectRoot:B,projectId:C,exportSettings:j.exportSettings,generationSettings:j.generationSettings,facts:Y,structuredFacts:ab,factsModel:ac,chapters:aP,sources:af,missingItems:[...new Set(G)],validation:ae,validationIssues:ah,exportGate:aB,executionStages:aN,assets:ak,partialChapters:ap.map(a=>({id:a.id,title:a.title,chars:(0,w.V7)(a.content),status:cr(a,q.chapterTargets.get(a.id)),updatedAt:Date.now()})),checkpointChapters:aP,agentWorkflow:L,reviewMetadata:{chapterSummaries:[],globalIssues:[],diagnostics:t,profile:function(a){let b=`${a.template.name} ${a.template.outputTitle||""} ${a.requirement||""} ${a.chapters.map(a=>a.title).join(" ")}`,c=[{pattern:/专项施工|危大|专项方案/u,type:"专项施工方案",dimensions:["专项对象边界","工艺参数","风险控制","验收要求","应急措施"]},{pattern:/投标|技术标|响应|招标/u,type:"投标技术方案",dimensions:["招标响应","技术优势","工期质量安全承诺","资源保障","履约可实施性"]},{pattern:/监理|旁站|巡视|平行检验/u,type:"监理规划/细则",dimensions:["监理目标","旁站巡视","平行检验","验收程序","资料签认"]},{pattern:/可研|可行性|项目建议书|投资估算/u,type:"可研/项目建议类文档",dimensions:["建设必要性","方案比选","投资估算","风险分析","实施效益"]},{pattern:/运维|维护|保养|巡检/u,type:"运维维护方案",dimensions:["巡检频次","维护流程","故障响应","备品备件","记录闭环"]}].find(a=>a.pattern.test(b));return{type:c?.type||"施工组织设计/施工技术方案",dimensions:c?.dimensions||["工程概况","施工部署","进度质量安全","资源配置","施工工艺和验收闭环"],requiredEvidencePolicy:"本地知识库为完整事实源;系统暂未确认的事实必须通过扩大检索、事实补抽或落位修复解决,不得归因为用户资料缺失。"}}({template:j,chapters:i,requirement:S}),knowledgeCoverage:aw,factTraces:ax,chapterCoverage:ay,retrievalCoverage:H,qualityReport:az,repairStrategies:aA,reviewChecklist:aI,professionalScore:aL,writingTaskBrief:N,workflowVersion:cj.x,telemetry:aJ},generatedAt:Date.now(),markdown:aq}}var dc=c(70963),dd=c(25284);let de=["知识库","系统暂未","项目资料暂未","资料未明确","暂未明确","待确认","待资料复核","待系统","未检索到","资料不足","无法确认","建议补充","不适用","COL","可核验信息","围绕"];function df(a){return a.replace(/\s+/gu,"").toLowerCase()}function dg(a){return`${a.fieldId||""} ${a.fieldName||""} ${a.key} ${(0,P.lG)(a.value)}`.replace(/\s+/gu," ").trim()}function dh(a){return(0,P.lG)(a.value).replace(/\s+/gu," ").trim()}function di(a,b){let c=df(dg(a));return b.split(/[\s、,,;;::()()【】[-]+/u).filter(a=>a.length>=2).some(a=>c.includes(df(a)))}function dj(a,b){let c=[...a.works.map(a=>`工程:${a.name} ${a.scope}`),...a.methods.map(a=>`工法:${a.name} ${(a.applicableWorks||[]).join("、")}`),...a.resources.map(a=>`资源:${a.name} ${a.spec} ${a.quantity}${a.unit}`),...a.schedule.map(a=>`工期:${a.milestone} ${a.duration}`),...a.standards.map(a=>`标准:${a.code} ${a.description}`),...a.risks.map(a=>`风险:${a.risk} ${a.mitigation}`),...a.requirements.map(a=>`要求:${a.category} ${a.detail}`),...a.siteConditions.map(a=>`现场:${a.condition} ${a.impact}`)],d=df(b);return c.filter(a=>df(a).includes(d)||b.split(/[\s、,,;;::()()【】[-]+/u).filter(a=>a.length>=2).some(b=>df(a).includes(df(b))))}function dk(a){let b=[];return/重点|难点|危大|风险|安全|应急/u.test(a)&&b.push("安全 文明 危大 风险 应急 临边 洞口 消防 临电 高处 起重 吊装 基坑 脚手架 模板 支护 图纸 施工说明 审查意见"),/工期|进度|节点|计划/u.test(a)&&b.push("工期 日历天 节点 进度 计划 开工 竣工 关键线路"),/质量|验收|标准|实测|通病/u.test(a)&&b.push("质量 验收 合格 标准 规范 检验批 隐蔽 复试 样板"),/资源|材料|机械|人材机|设备/u.test(a)&&b.push("清单 工程量 材料 设备 机械 劳动力 规格 型号 数量 单位"),/概况|说明|依据|范围/u.test(a)&&b.push("工程名称 项目名称 建设地点 建筑面积 建设规模 招标范围 施工范围"),/部署|施工|流水|区段|组织/u.test(a)&&b.push("施工 组织 部署 区段 流水 作业面 工序 穿插 图纸 清单"),b}function dl(a){return/项目特点.*重点.*难点|重点.*难点.*分析/u.test(a)?"系统识别本项目特点、施工重点、施工难点、形成原因、影响范围和应对措施,必须落位项目规模、结构形式、工期、专业范围、现场约束等具体事实,并为“项目主要施工内容”提供逐项对应依据。":/项目主要施工内容/u.test(a)?"按专业工程和关键工序展开施工内容,必须逐项响应“项目特点、重点、难点分析”中的重点难点,说明施工范围、实施内容、控制措施、验收节点和资料闭环。":/工期|进度|节点|计划/u.test(a)?"使用项目工期、节点和资源事实说明进度组织要求。":/质量|验收|标准|实测/u.test(a)?"使用项目质量目标、验收标准和工序事实说明质量控制要求。":/安全|危大|风险|应急/u.test(a)?"使用项目风险、危大工程和安全文明事实说明安全管控要求。":/资源|材料|机械|人材机/u.test(a)?"使用清单、材料、设备和劳动力事实说明资源配置要求。":/概况|说明|依据/u.test(a)?"使用项目基础事实说明编制边界和工程概况。":"使用已确认项目事实形成正式施工组织内容。"}function dm(a){let b=a.facts.slice(0,18).map(a=>`- ${a.key}:${dh(a)}${a.sourceFile?`(来源:${a.sourceFile})`:""}`).join("\n"),c=a.sections.map((a,b)=>`${b+1}. 必须输出三级标题:### ${a.title}
122
- 写作目标:${a.objective}
123
- 支撑情况:证据 ${a.evidenceIds.length},事实 ${a.factIds.length},图谱 ${a.graphNodeIds.length}
124
- 最小正文深度:${a.minChars} 字`).join("\n");return["【Agent 章节任务】",`任务ID:${a.taskId}`,`章节:${a.title}`,a.graphContext?`图谱上下文:
125
- ${a.graphContext}`:"",b?`事实卡:
126
- ${b}`:"",`小节任务:
127
- ${c}`,"写作要求:必须严格按“小节任务”逐项输出,每个任务都必须保留完全一致的三级标题“### 小节标题”;不得合并小节、不得改写小节标题、不得省略小节;只使用事实卡、图谱上下文和绑定证据;不得输出后台话术、兜底措辞、待确认、不适用;缺少事实的小节不得编造。"].filter(Boolean).join("\n\n")}function dn(a){return a.replace(/^\s*#{2,4}\s*/u,"").replace(/^\s*(?:\d+(?:\.\d+)*|[一二三四五六七八九十]+)(?:[、..]|\s+)\s*/u,"").trim()}function dp(a){return df(dn(a)).replace(/施工(?=方案|流程|方法)/gu,"").replace(/专项(?=方案)/gu,"").replace(/项目|工程|主要|重点|技术/gu,"").replace(/\s/gu,"")}function dq(a,b){let c=a.split("\n"),d=df(dn(b)),e=dp(b),f=[],g=-1,h=a=>{if(g<0)return;let b=c.slice(g,a).join("\n").trim();b&&f.push(b),g=-1};for(let a=0;a<c.length;a+=1){var i;if(!/^\s*#{2,3}\s+/u.test(c[a]))continue;h(a);let b=(i=dn(c[a]),df(dn(i))),f=dp(dn(c[a]));(b===d||b.includes(d)||d.includes(b)||f===e||f.includes(e)||e.includes(f))&&(g=a+1)}return h(c.length),f.sort((a,b)=>(0,w.V7)(b)-(0,w.V7)(a))[0]||""}function dr(a){let b=dh(a);return!(!b||b.length<3||/^(?:见|详见|按|执行|参见|依据).{0,16}(?:前附表|招标公告|招标文件|合同|协议书|通用条款|专用条款|图纸|清单|附件|资料)$/u.test(b)||/^(?:合同协议书|通用条款|专用条款|招标文件|招标公告|投标人须知前附表|附件|资料)$/u.test(b.replace(/[()()\d一二三四五六七八九十、..\s]/gu,"")))&&/项目|工程|编号|地点|规模|范围|工期|质量|安全|资源|材料|设备|验收|\d/u.test(dg(a))}function ds(a){let b=[],c=a.draft.content||"";for(let d of de)"围绕"!==d&&c.includes(d)&&b.push({level:"error",severity:"blocker",category:"style",owner:"system",message:`${a.draft.title} 正文包含禁止话术:${d}`,suggestion:"改为事实支撑的正式表达;缺失事实不得占位。"});for(let d of((0,w.V7)(c),a.task.sections)){let a=dq(c,d.title);if(a.includes("[WRITER_MISSING_SECTION]")||!a&&c.includes("[WRITER_MISSING_SECTION]"))b.push({level:"error",severity:"blocker",category:"structure",owner:"system",message:`${d.title} Writer 未完成`,suggestion:"Repairer 必须基于该小节事实卡和证据生成正式正文,并删除 WRITER_MISSING_SECTION 标记。"});else if(a&&(0,w.V7)(a)<d.minChars){let c=/项目特点.*重点.*难点|重点.*难点.*分析|项目主要施工内容|主要分部分项工程施工方案|主要施工方法|危大工程专项施工方案审批流程|原材料进场复试|见证取样/u.test(d.title),e=(0,w.V7)(a)>=Math.floor(.7*d.minChars);b.push({level:c&&!e?"error":"warning",severity:c&&!e?"blocker":"warning",category:"structure",owner:"system",message:`${d.title} 正文不足,未达到任务最小深度`,suggestion:c?"关键小节必须基于项目事实和对应关系重写补足;不得仅保留概述性文字。":"应基于该小节事实卡和证据重新生成,不得使用标题占位。"})}else if(!a){let a=/项目特点.*重点.*难点|重点.*难点.*分析|项目主要施工内容|主要分部分项工程施工方案|主要施工方法|危大工程专项施工方案审批流程|原材料进场复试|见证取样/u.test(d.title);b.push({level:a?"error":"warning",severity:a?"blocker":"warning",category:"structure",owner:"system",message:a?`${d.title} 正文不足,未达到任务最小深度`:`${d.title} 未匹配到独立小节标题`,suggestion:a?"关键小节缺失正文,必须基于该小节事实卡和证据生成正式正文,不得以标题占位。":"正文已成文但小节标题与规划标题不完全一致,建议后续按规划标题进一步规范结构。"})}if(d.ready||b.push(...d.issues.map(a=>({...a,level:"warning",severity:"warning"}))),/主要分部分项工程施工方案|主要施工方法/u.test(d.title)){let a=dq(c,d.title),e=new Set([...a.match(cZ)||[],...a.match(c$)||[]]).size;(0,w.V7)(a)>=800&&e<4&&b.push({level:"warning",severity:"warning",category:"professional_chain",owner:"system",message:`${d.title} 工艺参数落位不足:当前 ${e} 个,要求不少于 4 个`,suggestion:"必须补充 mm/MPa/间距/偏差/坡度/试验压力等工艺参数(来自绑定资料或行业规范值)或设备型号规格参数。"})}}let d=a.context.materialScope.selectedRoots;for(let e of a.context.materialScope.rejectedRoots)e&&!d.includes(e)&&c.includes(e)&&b.push({level:"error",severity:"blocker",category:"evidence_coverage",owner:"system",message:`${a.draft.title} 混入非当前资料组名称:${e}`,suggestion:"必须删除跨项目内容并重新检索当前资料组证据。"});let e=a.task.facts.filter(dr),f=e.filter(a=>{let b=dh(a);return b.length>=2&&c.includes(b.slice(0,Math.min(18,b.length)))}).length;e.length>=3&&0===f&&1200>(0,w.V7)(c)&&b.push({level:"warning",severity:"warning",category:"evidence_coverage",owner:"system",message:`${a.draft.title} 未明显落位章节事实卡`,suggestion:"建议将章节事实卡中的关键工程事实写入对应小节,但不因引用型或低可执行事实阻断。"});let g=b.filter(a=>"error"===a.level||"blocker"===a.severity),h=b.filter(a=>/正文不足|未落位章节事实卡/u.test(a.message)),i=g.some(a=>/Writer 未完成|正文不足,未达到任务最小深度/u.test(a.message));return{issues:b,supportedFacts:f,unsupportedSignals:b.map(a=>a.message),repairable:b.length>0&&(b.length<=6||h.length===b.length||0===g.length||i)}}function dt(a){return a.replace(/\s+/gu,"").toLowerCase()}var du=c(14070);async function dv(a){(0,P.Te)(a.signal);let b=(0,d.QJ)(a.templateId);if(!b)throw Error("Document template not found");let c=e.resolve(a.projectRoot||(0,g.aY)());if(!c)throw Error("No knowledge base project found");let o=(0,f.computeProjectId)(c),p=b,q=(0,g.Qh)(),y=[],z=[],A=(b,c=G)=>{let d=b?[...b].sort((a,b)=>{let c=z.indexOf(a.id),d=z.indexOf(b.id);return(c<0?Number.MAX_SAFE_INTEGER:c)-(d<0?Number.MAX_SAFE_INTEGER:d)}):void 0;a.onProgress?.([...c],d?{chapters:d}:void 0)},B=Math.max(15e3,Math.min(6e4,Number(process.env.DOCUMENT_GENERATION_HEARTBEAT_MS??3e4))),C=async(b,c=G)=>{let d=setInterval(()=>{a.signal?.aborted||A(y,c)},B);try{return await b()}finally{clearInterval(d)}},E=(0,d.N6)(p)||"none",F=(0,i.Mu)(E)?.name||E,G=[(0,aG.X5)({type:"role_binding",roleId:E,status:"running",message:`生成任务已创建,正在读取模板与角色配置:${p.name}`,details:[`当前项目:${o}`,`资料目录:${e.join(c,"knowledgeBase")}`,"正在读取项目资料包和提示词配置"],progress:{current:1,total:4,label:"初始化配置"}},{subtitle:F,roleName:F,order:0})];A();let I=(0,d.bj)(p),J=I.bindings;(0,aG.fx)(G,(0,aG.X5)({type:"validation",roleId:"document-preparation",status:"running",message:"正在分析模板规范、用户要求与项目资料包",details:["解析 OUTLINE 与模板章节","读取项目资料包","自动识别资料类型并构建项目理解"],progress:{current:1,total:3,label:"准备分析"}},{subtitle:"生成准备",order:G.length})),A();let K=(0,cq.Qu)({template:p,requirement:a.requirement,projectRoot:c,facts:[]}).materialScope.selectedFiles;if(0===K.length)throw Error("模板未绑定可用项目资料包,请先在模板中绑定需要参与生成的项目文件夹。");let L=(0,aM.W9)(c,p,{requirement:a.requirement}),M=(0,aM._n)(p,L),{kindByPath:N,processingByPath:O}=(0,aM.Hz)(L),R=aL([...I.writerPrompts,...I.chapterPrompts]),S=(0,t.cs)([{text:a.requirement,source:"用户需求",strict:!0},{text:R,source:"提示词角色",strict:!0}]),T=S.length>=2;T&&(p={...b,chapters:S});let U=await C(()=>Promise.resolve((0,k.P)(c,{requirement:a.requirement,boundFilePaths:K})));(0,aG.fx)(G,(0,aG.X5)({type:"validation",roleId:"document-preparation",status:"running",message:"正在生成自动文档规格并评估生成准备度",details:[`项目资料:${K.length} 份`,`资料类型:${Object.values(L.groups).filter(a=>a.length>0).length} 类`,"生成事实字段与章节约束"],progress:{current:2,total:3,label:"规格评估"}},{subtitle:"生成准备",order:G.length})),A();let W=await C(()=>Promise.resolve((0,j.x)(p,a.requirement||""))),X=W.spec,Y=function(a,b=""){let c=`${a?.id||""} ${a?.name||""} ${a?.category||""} ${a?.description||""} ${a?.outputTitle||""} ${b}`;return/施工组织设计|施工方案|危大工程|人、材、机|安全文明施工/u.test(c)?m:l}(p,a.requirement||""),_=(0,r.$)({template:p,spec:X,summary:U,resolvedRoles:[]});if(!_.ready)throw Error(`生成准备度不足:${_.blockingIssues.join(";")}`);let aa=[M.prompt,(0,k.F)(U,{publicSafe:!0}),(0,j.N)(X,W.sourceHash,{publicSafe:!0}),(0,r.R)(_,{publicSafe:!0})].filter(Boolean).join("\n\n"),ab=[M.prompt,(0,k.F)(U),(0,j.N)(X,W.sourceHash),(0,r.R)(_)].filter(Boolean).join("\n\n"),ac=aL([...I.writerPrompts,...I.formattingPrompts]),ad=aL([...I.writerPrompts,...I.chapterPrompts,...I.formattingPrompts]),ae=aL(I.prompts),af=(0,h.I)().load().webAccess||{enabled:!1,allowProjectFacts:!1,maxQueriesPerChapter:2,maxResultsPerQuery:3,trustedDomains:[]},aj=function(a){let b=a.attributedPrompts||[],c=[a.promptTexts,a.requirement||""].filter(Boolean).join("\n\n").replace(/\\n/gu,"\n"),d=function(a){let b=a.replace(/\\n/gu,"\n"),c=new Set;for(let a of(/全文必须输出[::]\s*([^。;;\n]+)/u.exec(b)?.[1]||/必须输出(?:的)?表格[::]\s*([^。;;\n]+)/u.exec(b)?.[1]||"").split(/[、,,]/u)){let b=/([\p{Script=Han}A-Za-z0-9()()]{2,30}表)$/u.exec(a.trim())?.[1];b&&b.length>=4&&b.length<=30&&c.add(b)}/项目基本信息表/u.test(b)&&c.add("项目基本信息表");let d=["知识库","提示词","建议补充","资料库","OCR","后台话术","后台流程","后台数据","后台资料","后台溯源","绑定片段"];/杜绝(?:套话|空话)|禁止(?:套话|空话)|不得(?:套话|空话)|严禁(?:套话|空话)/u.test(b)&&d.push("高度重视","重中之重"),/技术标(?:正文)?(?:不得|禁止|严禁).*(?:商务|报价|单价|税率|利润|造价)/u.test(b)&&d.push("报价明细表");let e=aZ(b,"封面"),f=aZ(b,"目录");return{coverPolicy:e,tocPolicy:f,forbidCover:"forbidden"===e,forbidToc:"forbidden"===f,forbiddenTerms:[...new Set(d)],preferredTerms:[{from:"高度重视",to:"严格落实"},{from:"重中之重",to:"关键控制事项"}],requiredTables:[...c],requiredKeywords:aW(b),forbiddenPatterns:aX(b)}}(c),e=[...new Set([...d.requiredTables,...function(a){let b=new Set;for(let c of[/(?:必须|应当|需要|全文必须|至少)输出(?:的)?表格[::]\s*([^。;;\n]+)/gu,/(?:必须|应当|需要|全文必须|至少)包含(?:的)?表格[::]\s*([^。;;\n]+)/gu,/(?:表格清单|表格要求)[::]\s*([^。;;\n]+)/gu])for(let d of a.matchAll(c))for(let a of(d[1]||"").split(/[、,,//及和与]/u)){let c=/([\p{Script=Han}A-Za-z0-9()()《》<>]{2,40}表)/u.exec(a.trim())?.[1];c&&b.add(c.replace(/[<>《》]/gu,""))}for(let c of a.matchAll(/([\p{Script=Han}A-Za-z0-9()()]{2,40}表)(?:必须|应当|需要|不得缺失|不可缺失)/gu))b.add(c[1]);return/项目基本信息表/u.test(a)&&b.add("项目基本信息表"),[...b]}(c)])],f=aW(c),g=aX(c),h=function(a){let b=[];for(let c of(/<OUTLINE>([\s\S]*?)<\/OUTLINE>/u.exec(a)?.[1]||"").split(/\r?\n/u)){let a=c.replace(/^\s*(?:\d+[.、.]|[-*])\s*/u,"").trim();a.length>=2&&a.length<=80&&!aQ(a)&&b.push(a)}return[...new Set(b)]}(c),i=["知识库","提示词","建议补充","资料库","OCR","后台话术","后台流程","后台数据","后台资料","后台溯源","绑定片段"],j=/技术标(?:正文)?(?:不得|禁止|严禁).*(?:商务|报价|单价|税率|利润|造价)/u.test(c)?["报价明细表"]:[],k=[],l=function(a){let b=/(?:不少于|至少|最低|必须生成不少于)\s*(\d+(?:\.\d+)?)\s*(万)?\s*字/u.exec(a);if(!b)return;let c=Number(b[1]);if(Number.isFinite(c)&&!(c<=0))return Math.floor(c*(b[2]?1e4:1))}(c),m=(a.template?.chapters||[]).map(a=>({chapterTitle:a.title,mustInclude:aY(c,RegExp(`${a.title.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&")}|${a.title.slice(0,6).replace(/[.*+?^${}()|[\]\\]/gu,"\\$&")}`,"u")).slice(0,8),mustNotInclude:aY(c,/禁止|不得|严禁|杜绝/u).filter(b=>b.includes(a.title)).slice(0,8)})).filter(a=>a.mustInclude.length>0||a.mustNotInclude.length>0),n=(a.rolePrompts||[]).map(a=>({roleId:a.roleId,focusAreas:aY(a.content,/重点|关注|围绕|响应|体系|措施|质量|安全|工期|资源/u).slice(0,8),mustDo:aY(a.content,/必须|应当|需要|确保|严格/u).slice(0,10),mustNotDo:aY(a.content,/禁止|不得|严禁|杜绝/u).slice(0,10)})).filter(a=>a.focusAreas.length>0||a.mustDo.length>0||a.mustNotDo.length>0),o=[d.coverPolicy&&"unspecified"!==d.coverPolicy?`已识别封面规则:${"required"===d.coverPolicy?"要求生成":"禁止生成"}`:"",d.tocPolicy&&"unspecified"!==d.tocPolicy?`已识别目录规则:${"required"===d.tocPolicy?"要求生成":"禁止生成"}`:"",h.length?`已识别一级章节固定规则 ${h.length} 条`:"",k.length?`已识别禁用主体表达:${k.join("、")}`:"",d.forbiddenTerms.length?`已识别禁用词 ${d.forbiddenTerms.length} 个`:"",e.length?`已识别必需表格:${e.join("、")}`:"",f.length?`已识别必含关键词:${f.join("、")}`:"",g.length?`已识别禁止出现内容:${g.join("、")}`:"",l?`已识别最低字数要求:${l} 字`:"",n.length?`已抽取角色执行规则 ${n.length} 组`:""].filter(Boolean),p=[],q={},r=(a,c,d,e)=>{let f=function(a,b,c){for(let d of a)if(d.content.includes(b))return{promptId:d.promptId,roleId:d.roleId,pattern:c};return{promptId:"system:generation-control",roleId:"generation-control",pattern:c}}(b,d,e);q[a]||(q[a]=[]),q[a].length<24&&q[a].push({...f,matchedText:d}),p.length<60&&p.push({rule:c,source:f,matchedText:d})};for(let a of(d.coverPolicy&&"unspecified"!==d.coverPolicy&&r("coverPolicy",`已识别封面规则:${d.coverPolicy}`,"封面",/封面|cover/u.source),d.tocPolicy&&"unspecified"!==d.tocPolicy&&r("tocPolicy",`已识别目录规则:${d.tocPolicy}`,"目录",/目录|toc/u.source),e))r("requiredTables",`必需表格:${a}`,a,/全文必须输出|必须输出表格|项目基本信息表/u.source);for(let a of f)r("requiredKeywords",`必含关键词:${a}`,a,/必须包含|必须含|应包含|需要包含/u.source);for(let a of g)r("forbiddenPatterns",`禁止内容:${a}`,a,/禁止|不得|严禁|杜绝/u.source);for(let a of h)r("exactHeadings",`固定章节:${a}`,a,/第[一二三四五六七八九十百千\d]+章/u.source);return l&&r("minWords",`最低字数:${l}`,String(l),/\d{3,}\s*字/u.source),{...d,requiredTables:e,requiredKeywords:f,forbiddenPatterns:g,sourceHash:function(a){let b=0x811c9dc5;for(let c=0;c<a.length;c+=1)b^=a.charCodeAt(c),b=Math.imul(b,0x1000193);return(b>>>0).toString(16)}(c),exactHeadings:h,forbidExtraHeadings:/不得合并|不得删除|不得改名|不得新增|严格按.*章节名称|一级章节.*不得/u.test(c)||h.length>0,requiredSubjects:/我公司/u.test(c)?["我公司","项目部"]:[],forbiddenSubjects:k,backendTerms:i,commercialTerms:j,forbiddenTerms:[...new Set([...d.forbiddenTerms,...i,...j,...k])],forbidFabrication:/不得编造|严禁编造|不得擅自|资料未明确|系统暂未|事实真实性/u.test(c),requireEvidenceForQuantities:/量化|参数|数值|具体数据|具体参数|工程实体参数|资料中明确|不得空泛|不能空泛|泛泛而谈/u.test(c),preferProjectFacts:/事实优先|项目事实|真实性高于/u.test(c),minWords:l,minChars:l,chapterRules:m,roleRules:n,executionSummary:o,ruleSources:Object.keys(q).length>0?q:void 0,extractionTrace:p.length>0?p:void 0}}({promptTexts:[aa,ae].filter(Boolean).join("\n\n"),requirement:a.requirement,template:p,rolePrompts:I.prompts}),ak=[function(a){let b=[`运行时规则版本:${a.sourceHash}`,"required"===a.coverPolicy?"用户要求输出封面时必须保留封面;未要求时不得由系统擅自决定。":"","required"===a.tocPolicy?"用户要求输出目录时必须保留目录,并确保目录只来自最终合法正文标题。":"",a.forbidCover?"用户明确禁止输出封面。":"",a.forbidToc?"用户明确禁止输出目录、目录说明或导航页。":"",a.exactHeadings.length?`一级章节必须严格使用:${a.exactHeadings.join(";")}`:"",a.forbidExtraHeadings?"不得新增、删除、合并或改名一级章节。":"",a.requiredSubjects.length?`正文主体优先使用:${a.requiredSubjects.join("、")}`:"",a.forbiddenSubjects.length?`禁止主体表达:${a.forbiddenSubjects.join("、")}`:"",a.forbidFabrication?"不得编造系统暂未从知识库确认的项目事实、工程实体参数、人名、联系方式或品牌;应通过扩大检索、事实补抽或落位修复解决。":"",a.requireEvidenceForQuantities?"涉及数量、工期、质量标准、规格型号等参数时必须以绑定资料中的明确事实为准。":"",a.commercialTerms.length?`禁止输出商务敏感内容:${a.commercialTerms.join("、")}`:"",a.backendTerms.length?`禁止输出系统内部话术:${a.backendTerms.join("、")}`:"",a.requiredTables.length?`必须输出以下正式 Markdown 表格:${a.requiredTables.join("、")}。表格必须包含表名、表头、分隔线和数据行。`:"",a.requiredKeywords?.length?`正文必须覆盖以下关键词或要点:${a.requiredKeywords.join("、")}。`:"",a.forbiddenPatterns?.length?`正文禁止出现以下内容:${a.forbiddenPatterns.join("、")}。`:"",a.minWords?`全文不少于 ${a.minWords} 字。`:""].filter(Boolean);return`以下规则由系统运行时从用户绑定指令中自动抽取,不作为用户可编辑内容。生成、检查和修复必须共同遵守:
128
- ${b.map((a,b)=>`${b+1}. ${a}`).join("\n")}`}(aj),!af.enabled?"":"公开资料补充使用规则:\n1. 公开资料只可用于补充通用规范、政策、工艺和措施。\n2. 不得使用公开资料新增或修改项目名称、建设地点、建设规模、工期、质量标准、工程量、材料规格、图纸参数、商务数据。\n3. 本地项目资料与公开资料冲突时,必须以本地项目资料为准。\n4. 不得在正文中出现任何检索过程、外部页面、工具调用或系统内部过程性表述。\n5. 不得把公开资料中的其他项目案例参数写入本项目正文。"].filter(Boolean).join("\n\n"),ao=[aa,ak,`生成前规划章节结构:
129
- ${(0,v.CK)(p)}`,ac||ad].filter(Boolean).join("\n\n"),ap=[ab,ak,aL([...I.extractionPrompts,...I.referencePrompts])].filter(Boolean).join("\n\n"),ar=[aa,ak,aL([...I.writerPrompts,...I.chapterPrompts,...I.formattingPrompts])].filter(Boolean).join("\n\n");(0,aG.fx)(G,(0,aG.X5)({type:"validation",roleId:"document-preparation",status:"success",message:`模板规范与项目资料理解完成,识别 ${K.length} 份项目资料`,details:[`提示词绑定:${J.length} 个`,`项目资料包:${L.materialRoots.join("、")||"当前知识库"}`,T?`识别 OUTLINE 章节:${S.length} 个`:"未识别显式 OUTLINE,使用模板章节"],progress:{current:3,total:3,label:"准备完成"}},{subtitle:"生成准备",order:G.length})),A();let as=new Set(K),av=new Map([...N.entries()].map(([a,b])=>[a,(0,aM._W)(b)])),aw=new Map([...O.entries()].map(([a,b])=>[a,b]));(0,aG.fx)(G,(0,aG.X5)({type:"knowledge_retrieval",roleId:"knowledge-index",status:"running",message:"正在读取项目资料包索引",details:["使用上传阶段已完成的解析、切片和索引结果","不在生成流程中重新解析或入库","准备按资料类型召回章节证据"],progress:{current:1,total:3,label:"读取索引"}},{subtitle:"知识库检索",order:G.length})),A();let ax=await C(()=>q.getProject(c)),aH=function(a,b){let c=new Set(b.filter(Boolean)),d=(a.listFiles?.()||[]).filter(a=>0===c.size||c.has(a.relativePath)),e=new Set(d.map(a=>a.relativePath)),f=[...c].filter(a=>!e.has(a)),g=d.filter(a=>0===Math.max(0,Math.ceil(Number(a.chunkCount)||0))).map(a=>a.relativePath),h=d.filter(a=>"error"===a.status).map(a=>a.relativePath),i="function"==typeof a.countPendingIndexJobs?a.countPendingIndexJobs():0,j="function"==typeof a.getVectorStatus?a.getVectorStatus():void 0,k=d.filter(a=>"error"!==a.status&&Math.max(0,Math.ceil(Number(a.chunkCount)||0))>0),l=k.map(a=>a.relativePath),m=k.reduce((a,b)=>a+Math.max(0,Math.ceil(Number(b.chunkCount)||0)),0),n=[...cV("部分绑定文件未完成索引,已自动跳过",f),...cV("部分绑定文件没有可用切片,已自动跳过",g),...cV("部分绑定文件索引失败,已自动跳过",h)],o=c.size>0&&0===m?["所有绑定文件均无可用切片"]:[],p=[...n,...i>0?[`仍有 ${i} 个待索引任务,建议等待索引完成后生成`]:[],...j&&"ready"!==j.status?[`向量索引状态为 ${j.status},当前召回质量可能下降`]:[]];return{scopedRecords:d,usablePaths:l,missingFiles:f,emptyFiles:g,errorFiles:h,pendingJobs:i,vectorStatus:j,usableChunkCount:m,blockingIssues:o,warnings:p}}(ax,[...as]);if(aH.blockingIssues.length>0)throw Error(`生成前知识索引不可用:${aH.blockingIssues.join(";")}`);let aN=new Set(aH.usablePaths),aO=bY(o,[...aN]),aP=cW(ax,[...aN],a.maxEvidencePerChapter),aR=aH.pendingJobs>0||0===aH.usableChunkCount,aV=function(a){let b=Math.max(0,Math.ceil(a.totalChunks||0)),c=Math.max(0,Math.ceil(a.loadedChunks||0)),d=Math.max(0,b-c),e=b>0?c/b:1,f=[...b>=1e3&&e<.35?["切片未完全预加载"]:[],...!1===a.vectorReady?["向量索引未就绪"]:[]];return{totalChunks:b,loadedChunks:c,omittedChunks:d,loadedRatio:e,highRisk:f.length>0,riskReason:f.join("、")||void 0}}({totalChunks:Math.min(aH.usableChunkCount,20*K.length),loadedChunks:Math.min(aH.usableChunkCount,20*K.length),vectorReady:aH.vectorStatus?"ready"===aH.vectorStatus.status:void 0});(0,aG.fx)(G,(0,aG.X5)({type:"knowledge_retrieval",roleId:"knowledge-index",status:aR?"failed":"success",message:`已读取知识索引:项目资料 ${aH.scopedRecords.length} 份,可用切片 ${aH.usableChunkCount} 条`,details:[`项目资料:${as.size} 份`,`可用证据文件:${aN.size} 份`,`向量状态:${aH.vectorStatus?.status||"unknown"}`,...aH.warnings,"后续将按招标正文/清单/图纸/补疑等资料类型召回"],progress:{current:3,total:3,label:"索引已就绪"}},{subtitle:"知识库检索",order:G.length})),A(),(0,P.Te)(a.signal);let a0=[],a1=[],a2={enabled:af.enabled,queries:[],evidenceCount:0,filteredCount:0,chapters:[]},a3=[],a4=[],a6=[],a7=[],a8=[],a9=-1,ba=new Map,bb=new Map,bc=(a,b)=>{let c=`${a}::${b.maxChunkContentChars}`;if(!bb.has(c))try{bb.set(c,ax.getFileDetail?.(a,b))}catch{bb.set(c,void 0)}return bb.get(c)},bd=async(a,b,d,e)=>{let f=cO(e),g=(0,P.c6)({query:a,scopedFilePaths:b,limit:d,weights:f,generationMode:!1}),h=ba.get(g);if(h)return h;let i=await q.search(c,a,{scope:"project",filters:{filePaths:b},limit:d,weights:f,generationMode:!1}).catch(()=>null),j=i?.results||[];return ba.set(g,j),j},be={stage:(0,aG.X5)({type:"file_understanding",roleId:"project-understanding",status:"success",message:`已完成项目资料理解:${L.files.length} 份资料,${Object.values(L.groups).filter(a=>a.length>0).length} 类资料类型`,details:M.prompt.split("\n").slice(0,16)},{subtitle:"项目资料理解",order:G.length})};(0,aG.fx)(G,be.stage),A();let bf=b_(await cu({manager:q,project:ax,projectRoot:c,scopedFilePaths:[...as].filter(Boolean).sort(),fileRoleByPath:av,fileProcessingByPath:aw,signal:a.signal}),aO);b1(bf,aO,"project-basic-evidence"),bf.length>0&&(a0.push(...bf),(0,aG.fx)(G,(0,aG.X5)({type:"knowledge_retrieval",roleId:"project-basic-evidence",status:"success",message:`已锁定项目基础事实证据 ${bf.length} 条`,details:bf.slice(0,8).map(a=>`${e.basename(a.filePath)}|${a.sectionTitle||"正文片段"}|score=${a.score.toFixed(2)}`)},{subtitle:"基础事实召回",order:G.length})),A());let bg=b0(an(a0,p,X),aO),bi=b0(at(a0),aO),bj=[...bg,...bi,...b0(au(a0,Y),aO)],bk=(0,dd.hp)({projectRoot:c,template:p,requirement:a.requirement}),bl=[...bk?.facts||[],...bj],bm=aF(bl,b0(am(a0),aO),a3,X,Y),bn=(0,cq.Qu)({template:p,requirement:a.requirement,projectRoot:c,facts:bl,projectGraph:bk?.projectGraph,projectGraphSource:bk?"project-intelligence":void 0});for(let a of(0,cq.SU)(bn))(0,aG.fx)(G,a);bk&&(0,aG.fx)(G,(0,aG.X5)({type:"file_understanding",roleId:"project-intelligence-cache",status:"success",message:`已复用入库后项目理解资产与绑定 scope 快照:${bk.files.length} 份绑定资料`,details:[`项目级缓存时间:${new Date(bk.cache.createdAt).toLocaleString()}`,`scope 快照:${bk.scopeSnapshot.scopeHash.slice(0,12)}`,`复用预计算事实:${bk.facts.length} 条`,`复用预计算项目图谱:${bk.projectGraph.works.length}工程/${bk.projectGraph.methods.length}工法/${bk.projectGraph.resources.length}资源`,`复用施工组织设计专项图谱:${bk.constructionOrganizationGraph.workPackages.length} 个工作包/${bk.constructionOrganizationGraph.controlMatrix.length} 条控制矩阵`,`图谱来源:${bk.cache.projectGraphMessage}`,`章节意图证据覆盖:${Object.keys(bk.evidenceByChapterId||{}).length}/${p.chapters.length} 章`,`排除正文不适用资料:${bk.files.filter(a=>!a.usableForBody).length} 份`]},{subtitle:"项目理解缓存 / Scope 快照"})),A();let bo=bn.baseProjectGraph;if(!bk){(0,aG.fx)(G,(0,aG.X5)({type:"file_understanding",roleId:"project-graph",status:"running",message:`正在临时构建完整项目图谱:${a0.length} 条证据 → LLM 结构化提取`,details:["缓存缺失或版本过期,建议重新构建项目理解缓存;本次生成将临时构建完整项目图谱。","提取:工程内容、施工方法、材料设备、技术标准、重点难点"],progress:{current:2,total:3,label:"项目图谱"}},{subtitle:"项目资料图谱分析",order:G.length})),A();let b=await C(()=>(0,dc.i)({evidence:a0,signal:a.signal,projectRoot:c,requirement:a.requirement,templateId:p.id,diagnostics:bR}),G);if(!b.graph)throw Error(`完整项目图谱构建失败:${b.stage.message||b.stage.status}`);bo=b.graph,(0,aG.fx)(G,b.stage),A()}bo&&(M=(0,aM._n)(p,L,bo));let bp=function(a){var b;let c=(0,P.c6)({version:"canonical-facts-v2",requirement:a.requirement||"",templateId:a.templateId||"",requiredKeys:a.requiredKeys||[],facts:a.facts.map(a=>({key:a.key,fieldId:a.fieldId,fieldName:a.fieldName,value:a.value,sourceFile:a.sourceFile,roleId:a.roleId,confidence:a.confidence})).sort((a,b)=>`${a.sourceFile}${a.key}${a.value}`.localeCompare(`${b.sourceFile}${b.key}${b.value}`)),graphHash:a.projectGraph?(0,P.c6)(a.projectGraph):"",markdownHash:a.markdown?(0,P.c6)(a.markdown.slice(0,2e4)):""}),d=function(a,b){let c=cp(a);if(c)try{let a=JSON.parse(ai.readFileSync(e.join(c,`canonical-facts-${b}.json`),"utf8"));return a&&a.byKey?a:void 0}catch{return}}(a.projectRoot,c);if(d)return d;let f=cn({facts:a.facts,markdown:a.markdown}),g={};for(let[a,b]of f.entries())g[a]=function(a){let b=a.source.includes("generated_markdown")?"generated_markdown":a.source.includes("evidence")?"evidence":"structured_fact";return{key:a.fieldKey,label:a.label,value:a.value,normalizedValue:aq(a.value),sourceType:b,sourceFile:a.source,confidence:a.confidence,priority:co(b),locked:co(b)>=80,selectedReason:a.selectedReason}}(b);let h=a.facts||[],i=[];for(let a of[{key:"project_name",label:"项目名称",pattern:/项目名称|工程名称|招标项目名称|project_name/u,bucket:"projectIdentity"},{key:"project_code",label:"项目编号",pattern:/项目编号|招标项目编号|project_code/u,bucket:"projectIdentity"},{key:"owner",label:"招标人",pattern:/招标人|建设单位|发包人|owner/u,bucket:"projectIdentity"},{key:"project_location",label:"建设地点",pattern:/建设地点|实施地点|project_location/u,bucket:"projectIdentity"},{key:"project_scale",label:"建设规模",pattern:/建设规模|工程规模|project_scale/u,bucket:"projectScope"},{key:"construction_scope",label:"施工范围",pattern:/施工范围|招标范围|工程范围/u,bucket:"projectScope"},{key:"duration",label:"计划工期",pattern:/计划工期|合同工期|总工期|schedule_requirement|duration/u,bucket:"schedule"},{key:"quality_target",label:"质量目标",pattern:/质量标准|质量目标|quality_standard/u,bucket:"quality"}]){let b=function(a,b,c,d){return a.filter(a=>d.test(`${a.fieldId||""}${a.key||""}${a.fieldName||""}`)).map(a=>(function(a,b,c){let d=(0,P.lG)(a.value),e=function(a){let b=`${a.sourceFile||""} ${a.sourceRef?.sectionTitle||""} ${a.roleId||""}`;return/合同/u.test(b)?"contract":/招标|公告|前附表|需求书/u.test(b)?"tender":/清单|工程量|BOQ|报价/u.test(b)?"boq":/图纸|设计|CAD|DWG/u.test(b)?"drawing":/规范|标准/u.test(b)?"standard":"structured_fact"}(a);return{key:b,label:c,value:d,normalizedValue:aq(d),sourceType:e,sourceFile:a.sourceFile,sourceRef:a.sourceRef?.sectionTitle,confidence:Math.round(100*(a.confidence||.5)),priority:co(e),locked:co(e)>=80,selectedReason:"按资料来源优先级和字段置信度决策"}})(a,b,c)).filter(a=>a.value&&!/资料未明确|系统暂未确认/u.test(a.value)).sort((a,b)=>b.priority-a.priority||b.confidence-a.confidence||a.value.length-b.value.length)}(h,a.key,a.label,a.pattern);!g[a.key]&&b.length>0&&(g[a.key]=b[0]);let c=function(a,b,c){let d=[...new Map(c.map(a=>[a.normalizedValue,a])).values()];if(d.length<=1)return;let e=Math.max(...d.map(a=>a.priority)),f=d.filter(a=>a.priority===e);return{key:a,label:b,values:d.map(a=>({value:a.value,sourceFile:a.sourceFile,priority:a.priority,confidence:a.confidence})),decision:1===f.length?"highest_priority_selected":"manual_review_required"}}(a.key,a.label,b);c&&i.push(c)}let j=(b=a.projectGraph)?[...(b.resources||[]).map(a=>({key:`resource_${a.type}_${a.name}`,label:"equipment"===a.type?"机械设备":"labor"===a.type?"劳动力":"材料资源",value:[a.name,a.spec,a.quantity,a.unit].filter(Boolean).join(" "),normalizedValue:aq([a.name,a.spec,a.quantity,a.unit].filter(Boolean).join(" ")),sourceType:"projectGraph",sourceFile:a.sourceFiles?.[0],confidence:55,priority:co("projectGraph"),locked:!1,selectedReason:"来自项目图谱资源节点"})).filter(a=>a.value),...(b.risks||[]).map(a=>({key:`risk_${a.risk}`,label:"风险源",value:[a.risk,a.level,a.mitigation].filter(Boolean).join(" "),normalizedValue:aq([a.risk,a.level,a.mitigation].filter(Boolean).join(" ")),sourceType:"projectGraph",sourceFile:a.sourceFiles?.[0],confidence:55,priority:co("projectGraph"),locked:!1,selectedReason:"来自项目图谱风险节点"})).filter(a=>a.value)]:[],k=j.filter(a=>/resource_/u.test(a.key)),l=j.filter(a=>/risk_/u.test(a.key));for(let a of j)g[a.key]||(g[a.key]=a);let m=(a.requiredKeys||[]).filter(a=>!g[a]).map(a=>({key:a,label:ck.find(b=>b.key===a)?.label||a,reason:"未从用户输入、招标资料、清单、图纸或项目图谱中确认该事实"})),n={projectIdentity:{projectName:g.project_name,projectCode:g.project_code,owner:g.owner,location:g.project_location},projectScope:{scale:g.project_scale,constructionScope:g.construction_scope},schedule:{duration:g.duration||g.schedule_requirement},quality:{target:g.quality_target||g.quality_standard},safety:{risks:l},resources:{resources:k},environment:{},constraints:{},byKey:g,conflicts:i,gaps:m},o=cp(a.projectRoot);return o&&ai.writeFileSync(e.join(o,`canonical-facts-${c}.json`),JSON.stringify(n,null,2)),n}({facts:bl,projectGraph:bo,requiredKeys:ck.map(a=>a.key),projectRoot:c,requirement:a.requirement,templateId:p.id});bm.canonical=bp;let bq=(0,t._9)(p,X,{preserveExplicitOutline:T}),br=H({template:p,chapters:bq,requirement:a.requirement}),bs=Z({template:p,chapters:br,requirement:a.requirement}),bt=ag({chapters:bs.enrichedChapters,projectGraph:bo,canonicalFacts:bp});p={...p,chapters:bt};let bu=new Map;if(bo){let a=new Set;for(let b of[...bo.works,...bo.methods,...bo.resources,...bo.schedule,...bo.standards,...bo.risks,...bo.requirements,...bo.siteConditions])(b.sourceFiles||[]).forEach(b=>a.add(b));for(let b of bt){let c=[b.title,b.purpose,...b.sections||[],...b.requiredFacts||[],...b.queries||[]].join(" "),d=a=>a&&((0,du.C1)(a,c,.18)||(0,du.C1)(a,b.title,.12)),e=/概况|总体|部署|施工|进度|工期|质量|安全|资源|人材机|材料|机械|劳动力|风险|危大|绿色|环保/u.test(c),f=bo.works.filter(a=>a.name&&(d(a.name)||e)),g=bo.methods.filter(a=>a.name&&(d(a.name)||(a.applicableWorks||[]).some(d)||e)),h=bo.resources.filter(a=>a.name&&(d(a.name)||/资源|人材机|材料|机械|劳动力/u.test(c)&&/material|equipment|labor/u.test(a.type))),i=bo.gaps.filter(a=>d(a)||e),j=new Set;for(let a of f)(a.sourceFiles||[]).forEach(a=>j.add(a));for(let a of g)(a.sourceFiles||[]).forEach(a=>j.add(a));for(let a of h)(a.sourceFiles||[]).forEach(a=>j.add(a));0===j.size&&e&&[...a].slice(0,12).forEach(a=>j.add(a)),bu.set(b.id,{graphFiles:j,graphBoqItems:h.map(a=>({name:a.name,quantity:a.quantity,unit:a.unit,sourceFiles:a.sourceFiles||[]})),graphWorks:f.map(a=>a.name),graphMethods:g.map(a=>a.name),gaps:i})}bk||((0,aG.fx)(G,(0,aG.X5)({type:"file_understanding",roleId:"project-graph-match",status:"success",message:`图谱→章节映射完成:${bo.works.length}工程 ${bo.methods.length}工法 ${bo.resources.length}资源 → ${bt.length}章`,details:bt.map(a=>{let b=bu.get(a.id);return`${(0,t.GQ)(a.title)}:匹配文件${b?.graphFiles.size||0}个,BOQ项${b?.graphBoqItems.length||0}个`})},{subtitle:"图谱章节映射"})),A())}let bv=bt,bw=(0,dd.TD)(bk?.constructionOrganizationGraph)||bk?.constructionOrganizationContext,bx=[M.prompt,bw].filter(Boolean).join("\n\n"),by=[bx,V({template:{...p,chapters:bv},chapters:bv,factsModel:bm,requirement:a.requirement})].filter(Boolean).join("\n\n"),bz={...p,chapters:bv},bA=function(a,b){let c=a.replace(/\\n/gu,"\n"),d=new Map,e=[...c.matchAll(/第([一二两三四五六七八九十\d]+)章[^\n。;;]{0,80}(?:强制|必须|挂靠|小节|排序|最先|之后|之前)/gu)];for(let a of e){let b=function(a){let b={零:0,一:1,二:2,两:2,三:3,四:4,五:5,六:6,七:7,八:8,九:9};if(/^\d+$/u.test(a))return Number(a);if(void 0!==b[a])return b[a];if("十"===a)return 10;let c=/^(?:(一|二|两|三|四|五|六|七|八|九)?)十(?:(一|二|两|三|四|五|六|七|八|九))?$/u.exec(a);if(c)return 10*(c[1]?b[c[1]]:1)+(c[2]?b[c[2]]:0)}(a[1]);if(!b)continue;let f=Math.max(0,a.index||0),g=e.find(a=>(a.index||0)>f)?.index,h=c.slice(f,Math.min(c.length,g??f+1400));if(aT(h)&&!/(强制小节|必须小节|以下小节设置和排序|必须设置独立的|必须包含独立的)/u.test(h))continue;let i=function(a){let b=/(?:以下小节设置和排序|强制小节|必须小节)[::]\s*([\s\S]*?)(?:\n\s*#{2,6}\s|\n\s*第[一二两三四五六七八九十\d]+章|$)/u.exec(a)?.[1];if(b){let c=aU([...b.matchAll(/(?:^|\n)\s*\d+[..、]\s*([^——\-—::。;;\n]{2,30})(?:[——\-—::]|,|,|。|;|;|\n|$)/gu)].map(a=>a[1]),a);if(c.length>0)return c}let c=[];for(let b of a.matchAll(/第[一二两三四五六七八九十\d]+章[^。;;\n]{0,50}(?:强制)?(?:包含|设置|输出|排序|挂靠)[^::。;;\n]{0,20}[::]\s*([^。;;\n]{2,120})/gu))for(let a of b[1].split(/[、,,//及和与]/u))c.push(a);for(let b of a.matchAll(/[“"]([^”"]{2,30})[”"]\s*(?:二级)?小节/gu))c.push(b[1]);for(let b of a.matchAll(/([\p{Script=Han}A-Za-z0-9()()]{2,30})(?:——|—|-|:|:)\s*(?:独立的)?(?:二级)?小节/gu))c.push(b[1]);for(let b of a.matchAll(/(?:必须|应当|需|需要|包含|设置|输出)[^。;;\n]{0,30}(?:独立的)?(?:二级)?小节[::]\s*([^。;;\n]{2,80})/gu))for(let a of b[1].split(/[、,,//及和与]/u))c.push(a);return aU(c,a)}(h);if(0===i.length)continue;let j=d.get(b)||{blocks:[],titles:[]};for(let a of(j.blocks.push(h),i))j.titles.some(b=>aS(b,a))||j.titles.push(a);d.set(b,j)}return[...d.entries()].map(([a,c])=>{let d=b?.[a-1];return{chapterIndex:a-1,chapterTitle:d?.title,source:c.blocks[0]?.split("\n").find(a=>a.trim())?.trim().slice(0,120),requiredSections:c.titles.map((a,b)=>({title:a,order:b+1,required:!0,source:c.blocks[0]?.slice(0,240)}))}})}([ao,a.requirement||""].filter(Boolean).join("\n\n"),bv),bB=(0,w.tF)({requirement:a.requirement,promptTexts:ao,template:bz,chapters:bv,spec:X}),bC=0,bD=0,bF=await (0,P.l$)(bv.map((a,b)=>({chapter:a,chapterIndex:b})),async({chapter:b,chapterIndex:c})=>{if(b.sections?.length){bC+=1;let a=a$([...bA.filter(a=>a.chapterIndex===c||a.chapterTitle&&(0,t.GQ)(a.chapterTitle)===(0,t.GQ)(b.title)).flatMap(a=>a.requiredSections.sort((a,b)=>(a.order||0)-(b.order||0)).map(a=>a.title)),...b.sections],b.title);return{...b,sections:a.length?a:a$(b.sections,b.title)}}bD+=1;let d=(0,s.QR)(a0.filter(a=>a.chapterId===b.id||(0,u.Lk)(a,b.title)),{maxChars:(0,s.Pc)(bB.chapterTargets.get(b.id)||1200),preservePinned:!0}),e=M.chapterPlans.find(a=>a.chapterId===b.id)?.writingGoal||"",f=cJ(I,b),g=await a_({template:bz,chapter:b,chapterIndex:c,evidence:d,promptTexts:f.promptTexts,projectContext:by,requirement:a.requirement,roleContext:e,targetWords:bB.chapterTargets.get(b.id)||1200,structuralRules:bA,signal:a.signal}),h=bA.filter(a=>a.chapterIndex===c||a.chapterTitle&&(0,t.GQ)(a.chapterTitle)===(0,t.GQ)(b.title)).flatMap(a=>a.requiredSections.map(a=>`强制小节:${a.title}`));if((0,aG.fx)(G,(0,aG.X5)({type:"validation",roleId:"section-planning",promptId:f.primaryPromptId,status:g.length?"success":"failed",message:`${(0,t.GQ)(b.title)} 小节规划${g.length?`生成 ${g.length} 个小节`:"未生成可用小节"}`,details:[...f.promptDetails,...h,...g.length?g.map(a=>`规划小节:${a}`):["规划结果为空或被污染过滤"]]},{subtitle:"小节规划"})),!g.length)throw Error(`${(0,t.GQ)(b.title)} 小节规划未生成可用小节`);return{...b,sections:g}},{kind:"llmRepair",targetWords:bB.targetChars||4e3,concurrency:2}),bJ=H({template:p,chapters:bF,requirement:a.requirement}),bK=Z({template:p,chapters:bJ,requirement:a.requirement});bv=ag({chapters:bK.enrichedChapters,projectGraph:bo,canonicalFacts:bp}),(bK.issues.length>0||bs.issues.length>0)&&(0,aG.fx)(G,(0,aG.X5)({type:"validation",roleId:"bid-structure-audit",status:bK.issues.some(a=>"blocker"===a.severity)?"failed":"success",message:`评标结构符合性校验:${bK.diagnostics.length} 个结构组,${bK.diagnostics.filter(a=>"satisfied"===a.status).length} 个已满足,${bK.diagnostics.filter(a=>"missing"===a.status&&"required"===a.level).length} 个必查缺失(已自动补挂),${bK.diagnostics.filter(a=>"fragmented"===a.status).length} 个分散`,details:[...bK.diagnostics.map(a=>`${"satisfied"===a.status?"满足":"fragmented"===a.status?"分散":"补挂"}:${a.groupTitle}${"missing"===a.status?`(补挂小节:${a.missingSections.join("、")})`:""}`),...bK.issues.map(a=>`提示:${a.message}`).slice(0,8)]},{subtitle:"评标结构校验"})),p={...p,chapters:bv};let bL=function(a){let b=D({template:{id:"runtime",name:a.templateName||"",outputTitle:"",description:"",category:"",chapters:a.chapters},chapters:a.chapters,requirement:a.requirement}),c=/施工组织设计|施工组织|施组|技术标/u.test(`${a.templateName||""} ${a.requirement||""} ${a.chapters.map(a=>a.title).join(" ")}`)||b.length>0,d=Object.values(a.factsModel?.canonical?.byKey||{}).map(a=>`${a.label}=${a.value}`),e=["正文必须落到本项目资料已确认的事实,不得使用模板化空话或跨小节复制段落",'措施类内容写成"责任岗位+执行动作+量化标准+检查频次+整改时限+复查销项"','工作包级小节按"施工概况/施工流程/施工方法"三段式展开'],f=a.chapters.map(b=>{var c;let d=(c=b.title,$.find(a=>a.pattern.test(c))),e=(a.projectGraph?.works||[]).filter(a=>a.name&&(b.title.includes(a.name.slice(0,2))||/概况|总体|施工内容|方案|施工/u.test(b.title))).slice(0,10),f=(a.projectGraph?.resources||[]).filter(a=>a.quantity&&/概况|资源|总体|施工内容|方案/u.test(b.title)).slice(0,12).map(a=>({itemCode:"",itemName:a.name,quantity:a.quantity,unit:a.unit}));return{chapterId:b.id,chapterTitle:b.title,writingGoal:d?.goal||"结合本章标题与项目资料事实展开专业内容,避免泛化叙述",mustCover:[...d?.mustCover||[],...(b.requiredFacts||[]).slice(0,6)],factDomains:[...b.requiredFacts||[],...e.map(a=>a.name)].slice(0,10),evidenceRefs:b.queries.slice(0,6).map(a=>({filePath:a,kind:"query",priority:"should"})),boqTargets:f,drawingTargets:[],gaps:[]}});return{documentType:c?"施工组织设计":"专业文档",globalWritingFocus:c?[...e,...d.length?[`项目可信基础事实(写作时必须优先落位):${d.slice(0,10).join(";")}`]:[]]:e.slice(0,2),chapters:f}}({chapters:bv,factsModel:bm,projectGraph:bo||void 0,requirement:a.requirement,templateName:p.name}),bM=V({template:p,chapters:bv,factsModel:bm,requirement:a.requirement});by=[bx,bM].filter(Boolean).join("\n\n"),bk||(0,aG.fx)(G,(0,aG.X5)({type:"validation",roleId:"document-blueprint",status:"success",message:"已生成全局事实主表与文档蓝图,后续章节和小节将共用同一套专业约束",details:bM.split("\n").slice(0,12)},{subtitle:"全局蓝图"}));let bN=(0,w.tF)({requirement:a.requirement,promptTexts:ao,template:p,chapters:bv,spec:X}),bP=function(a){let b=Date.now(),c=a.template.chapters.map(a=>{let b=a.sections?.length?a.sections:[a.title];return{chapterId:a.id,title:a.title,purpose:a.purpose||dl(a.title),requiredFacts:[...new Set([...a.requiredFacts||[],a.title])],requiredGraphNodes:[a.title],evidenceQueries:[...new Set([a.title,...a.queries||[],...a.requiredFacts||[]])],qualityRules:["事实必须来自锁定资料范围","不得出现后台话术和兜底措辞","不得混入其他项目名称","章节必须覆盖规划小节"],forbiddenPhrases:de,sections:b.map(b=>({title:b,objective:dl(b),requiredFacts:[...new Set([b,...a.requiredFacts||[]])],requiredGraphNodes:[b],evidenceQueries:[...new Set([a.title,b,...dk(a.title),...dk(b),...a.queries||[],...a.requiredFacts||[]].filter(Boolean))],forbiddenPhrases:de,minChars:/项目特点.*重点.*难点|重点.*难点.*分析/u.test(b)?1800:/项目主要施工内容|主要分部分项工程施工方案|主要施工方法/u.test(b)?2200:/原材料进场复试|见证取样|危大工程专项施工方案审批流程/u.test(b)?800:/施工部署|施工流水|主要施工机械|劳动力|材料进场|资源动态|质量控制点|危大工程|安全隐患|临时用水|临时用电/u.test(b)?760:/概况|说明|依据/u.test(b)?260:420}))}});return{plan:{planId:`plan-${(0,P.c6)({templateId:a.template.id,scope:a.context.materialScope.scopeHash,chapters:c.map(a=>a.title)}).slice(0,10)}`,title:a.title||a.template.name,chapters:c,requiredGlobalFacts:["项目名称","工期","质量标准","招标范围"],forbiddenPhrases:de,qualityRules:["资料范围先锁定","基础图谱必跑","章节任务先于正文","Reviewer 通过后才能导出"]},node:{id:"document-planner",type:"document_planner",status:"completed",startedAt:b,completedAt:Date.now(),outputSummary:`${c.length} 章、${c.reduce((a,b)=>a+b.sections.length,0)} 个小节任务`,metrics:{chapters:c.length}}}}({template:p,context:bn,title:p.name});bn.documentPlan=bP.plan,bn.nodes.push(bP.node),(0,aG.fx)(G,(0,aG.X5)({type:"validation",roleId:"agent-document-planner",status:"success",message:bP.node.outputSummary||"Agent 文档规划完成",details:bP.plan.chapters.map(a=>`${a.title}:${a.sections.length} 个小节任务`)},{subtitle:"Agent Document Planner",order:G.length})),z=bv.map(a=>a.id);let bQ=function(a){let b=a.template.chapters.length,c=b>0?a.targetWords/b:a.targetWords,d=`${a.template.name}
130
- ${a.template.category||""}
131
- ${a.requirement||""}`,e=/专项|安全|质量|验收|审核|合同|合规|审计|风控|风险/u.test(d),f=a.targetWords>=3e4||b>=8||c>=4e3,g=a.targetWords<=6e3&&b<=4&&!e;return{mode:e?"strict":f?"longform":g?"fast":"balanced",enableChapterReview:!0,enableGlobalReview:"1"===process.env.DOCUMENT_GLOBAL_CONSISTENCY_REVIEW,enableDocumentBudgetExpansion:!1,enableFinalQualityReview:!0}}({template:p,targetWords:bN.targetChars||[...bN.chapterTargets.values()].reduce((a,b)=>a+b,0),requirement:a.requirement}),bR={strategy:bQ,metrics:[],llm:{calls:0,failures:0,maxActive:0,retries:0},evidence:{raw:0,used:0,filteredNoise:0,avgNoiseScore:0,avgFactDensity:0,searchQueries:0,searchMs:0,contextChars:0},quality:{blockingCount:0,importantCount:0,minorCount:0,repairedCount:0}};(0,aG.fx)(G,(0,aG.X5)({type:"validation",roleId:"document-strategy",status:"success",message:`已自动选择 ${bQ.mode} 生成策略:章节审查 ${bQ.enableChapterReview?"启用":"跳过"}、全局审查 ${bQ.enableGlobalReview?"启用":"跳过"}、最终质量审查 ${bQ.enableFinalQualityReview?"启用":"跳过"}、全文扩写 ${bQ.enableDocumentBudgetExpansion?"启用":"跳过"};LLM 调用按工作流任务自然并行`},{subtitle:"后台自动策略"}));let bS=T?"OUTLINE 章节":"模板章节",bT=(0,aG.X5)({type:"validation",roleId:"section-planning",status:"success",message:`小节规划:${bD} 章由 LLM 基于${bS}、项目资料理解和证据规划小节,${bC} 章已由模板显式提供小节并跳过规划`},{subtitle:"小节规划策略"}),bU=T?`;识别到 OUTLINE 章节 ${S.length} 个`:";未识别到有效 OUTLINE,将使用模板章节",bV=[...I.prompts.map(a=>`${a.category}|${a.roleId}|${a.id}|${a.name}|${a.bindingSource}|${a.content.length} 字符|hash=${a.contentHash}|${a.contentPreview}`),...I.unresolvedRoles.map(a=>`unresolved|${a}|项目角色配置中的提示词角色不存在`),...I.missingResourceRoles.map(a=>`missingResource|${a}|提示词角色未显式绑定资源`)];(0,aG.fx)(G,(0,aG.X5)({type:"role_binding",roleId:E,status:"success",message:`已绑定项目资料 ${K.length} 份、${I.prompts.length} 个有效提示词;写作 ${I.writerPrompts.length}、章节 ${I.chapterPrompts.length}、抽取 ${I.extractionPrompts.length};已自动抽取运行时规则 ${aj.executionSummary.length} 条;语义资料覆盖 ${Math.round(100*_.materialCoverageRate)}%${bU}`,details:[...bV,...aj.executionSummary.map(a=>`runtimeRule|${a}`)]},{subtitle:F,roleName:F})),(0,aG.fx)(G,(0,aG.X5)({type:"validation",roleId:"runtime-prompt-rules",status:"success",message:`运行时提示词规则已抽取:${aj.executionSummary.length} 条,版本 ${aj.sourceHash}`,details:aj.executionSummary.length?[...aj.executionSummary,`必需表格:${aj.requiredTables.join("、")||"无"}`,`必含关键词:${aj.requiredKeywords?.join("、")||"无"}`,`禁含内容:${aj.forbiddenPatterns?.join("、")||"无"}`]:["未从提示词中识别到额外硬规则,使用系统默认质量规则"]},{subtitle:"提示词规则执行"})),(0,aG.fx)(G,(0,aG.X5)({type:"validation",roleId:"document-readiness",status:_.ready?"success":"failed",message:`生成准备度:绑定资料已就绪,语义覆盖 ${Math.round(100*_.materialCoverageRate)}%,角色匹配 ${Math.round(100*_.roleSatisfactionRate)}%,优化建议 ${Math.round(100*_.specCompletenessRate)}%`,details:_.diagnostics},{subtitle:"生成准备度检查"})),(0,aG.fx)(G,bT),A();let bX=Math.round(([...bN.chapterTargets.values()].reduce((a,b)=>a+b,0)||bN.targetChars||0)/Math.max(1,bv.length)),bZ=Number(process.env.DOCUMENT_CHAPTER_CONCURRENCY||0),b$=bv.some(a=>(a.sections||[]).filter(Boolean).length>=30),b2=bv.length<=1||b$?1:bN.longformStrict||bX>=9e3?2:bX>=6500?Math.min(3,bv.length):Math.min(4,bv.length),b3=Math.max(1,Math.min(bv.length||1,Number.isFinite(bZ)&&bZ>0?Math.floor(bZ):b2));(0,aG.fx)(G,(0,aG.X5)({type:"validation",roleId:"chapter-concurrency",status:"success",message:`章节自适应调度:本轮 ${b3}/${bv.length} 章并发`,details:[`有效章节数:${bv.length}`,`平均章节目标:${bX} 字`,Number.isFinite(bZ)&&bZ>0?`章节并发来自 DOCUMENT_CHAPTER_CONCURRENCY=${Math.floor(bZ)}`:`章节并发自适应=${b2},${b$?"存在超长显式小节章,优先逐章产出 checkpoint":"长章保守、短章提速"}`]},{subtitle:"章节并发策略"})),A();for(let b=0;b<bv.length;b+=b3){let d=bv.slice(b,b+b3);await Promise.all(d.map(async(d,f)=>{let g,h=b+f;(0,P.Te)(a.signal);let i=Date.now(),j=G.length;try{var k,m;let b;G.push((0,aG.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:I.writerPrompts[0]?.id,status:"running",message:`${(0,t.GQ)(d.title)} 正在检索证据并准备章节内容`,details:[`章节序号:${h+1}/${bv.length}`,`二级小节:${d.sections?.length||0} 个`,"正在生成检索查询"],progress:{current:h+1,total:bv.length,label:"章节生成"}},{subtitle:(0,t.GQ)(d.title),order:h})),A();let f=a.resumeChapters?.find(a=>a.id===d.id||a.title===d.title),o=f?.content?.trim(),r=f?.evidence?.length?[...f.evidence]:[],z=M.chapterPlans.find(a=>a.chapterId===d.id||a.chapterTitle===d.title),B=z?Object.values(z.evidenceQueries).flat().filter(Boolean):[],D=d.queries.length>0?d.queries:[p.name,p.outputTitle,d.title],E=bu.get(d.id);if(bo&&E&&E.graphFiles.size>0){let a=[...aN],b=b=>a.includes(b)?b:a.find(a=>a.endsWith(b)||a.includes(b));for(let a of[...E.graphFiles].map(a=>b(a)||a).filter(a=>aK(c,a,aN)).slice(0,12)){let b=bc(a,{maxChunkContentChars:8e3});if(b?.chunks?.length)for(let c of b.chunks)r.push({chapterId:d.id,filePath:b.file?.relativePath||a,score:5+(E.graphWorks.length+E.graphMethods.length)*.5,content:c.content,roleId:av.get(a),processingType:aw.get(a),sectionTitle:c.sectionTitle,source:"graph-evidence"})}}let F=/概况|工程|项目|总体|部署|进度|工期|质量/u.test(d.title)?cs:[],H=cQ(d,[...D,...B],F),J=cR(d,F),N=Date.now();G[j]=(0,aG.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:I.writerPrompts[0]?.id,status:"running",message:`${(0,t.GQ)(d.title)} 正在执行质量优先的章节检索${E?.graphFiles.size?`(图谱匹配 ${E.graphFiles.size} 个文件)`:""}`,details:H.slice(0,J).map(a=>`检索:${a.slice(0,42)}`),progress:{current:h+1,total:bv.length,label:"证据检索"}},{subtitle:(0,t.GQ)(d.title),order:h}),A();let O=o?[]:[...aN].filter(Boolean).sort(),R=o?[]:bk?.evidenceByChapterId?.[d.id]||[];R.length>0&&r.push(...R);let S=[],T=H.slice(0,J),U=(d.requiredFacts||[]).filter(a=>!!a&&!T.some(b=>b.includes(a)||a.includes(b))).slice(0,4).map(a=>`${d.title} ${a}`),V=[...T,...U];if(O.length>0&&V.length>0){(0,P.Te)(a.signal);let b=await (0,P.l$)(V,async a=>bd(a,O,Math.min(aP,12),d.title),{kind:"search"});S.push(...b)}for(let a of(bR.evidence.searchQueries+=V.length,bR.evidence.searchMs+=Date.now()-N,S))r.push(...a.filter(a=>aK(c,a.filePath,as)).map(a=>({chapterId:d.id,filePath:a.filePath,score:a.score,content:a.content,roleId:av.get(a.filePath),processingType:aw.get(a.filePath),sectionTitle:a.sectionTitle,source:a.source})));let W=o?[]:await (0,aM.$b)({manager:q,projectRoot:c,chapter:d,plan:z,profile:L,scopedFilePaths:O,limitPerQuery:Math.min(aP,10),signal:a.signal}).catch(()=>[]);r.push(...W);let Z=new Set((d.pinnedEvidenceFilePaths||[]).filter(Boolean)),$=[];/概况|工程|项目|总体|部署|进度|工期|质量/u.test(d.title)&&r.push(...bf.map(a=>({...a,chapterId:d.id,source:"pinned-evidence"})));let _=new Set([...Z]),ab=bN.chapterTargets.get(d.id)||1200,ac=(0,s.Pc)(ab,6e3,12e3);for(let a of _){if(!aK(c,a,as))continue;let b=Z.has(a),e=bc(a,{maxChunkContentChars:ac});e&&r.push(...e.chunks.map(a=>({chapterId:d.id,filePath:e.file.relativePath,score:1,content:a.content,roleId:av.get(e.file.relativePath),processingType:aw.get(e.file.relativePath),sectionTitle:a.sectionTitle,source:b?"pinned-evidence":"bound-file"})))}let ad=r.filter(a=>aK(c,a.filePath,aN));if(!o&&af.enabled&&af.allowProjectFacts){let b=await bW({config:af,chapterId:d.id,chapterTitle:d.title,sectionTitles:d.sections||[],runtimeRules:aj,localFacts:[...bm.project,...bm.schedule,...bm.quality,...bm.safety,...bm.resources,...bm.preciseFacts],signal:a.signal});a2.queries.push(...b.queries),a2.filteredCount+=b.filtered+b.evidence.length}let ae=(0,s.Pc)(ab,7e3,26e3),ag=o?[]:(0,aM.SK)({project:ax,chapter:d,plan:z,profile:L,scopedFilePaths:O,highRisk:aV.highRisk});ag.length>0&&ad.push(...b_(ag,aO)),ad=b_(ad,aO);let ai=cP(d,ad,{maxItems:cS(aP,d,aV.highRisk),maxChars:ae+(aV.highRisk?14e3:4e3),preservePinned:!0},bR);b1(ai,aO,`chapter:${d.id}:initial`);let ak=d.requiredFacts.filter(a=>!ai.some(b=>(0,u.Lk)(b,a))),am=0,an=function(a){let b=(a.chapter.requiredFacts||[]).filter(b=>!a.evidence.some(a=>dt(`${a.sectionTitle||""}${a.content||""}`).includes(dt(b)))),c=(a.chapter.tablePlans||[]).flatMap(a=>a.fillability?.missingProjectFactFields||[]),d=a.evidence.length<3?["章节证据数量不足"]:[],e=b.length+c.length+d.length,f=e>=5?"high":e>=2?"medium":"low",g="high"===f?"evidence_first":c.length>0?"generate_with_review_notes":b.length>0?"section_first":"normal";return{chapterId:a.chapter.id,chapterTitle:a.chapter.title,canGenerate:!0,riskLevel:f,missingFacts:b,missingEvidence:d,tableFieldGaps:[...new Set(c)],suggestedStrategy:g,reason:0===e?"章节事实、证据和表格可填性满足常规生成条件。":`识别到 ${e} 项生成前缺口,按 ${g} 策略生成。`}}({chapter:d,evidence:ai}),ao=new Set(ai.map(a=>a.filePath)).size,ap=!!E&&(E?.graphFiles.size||0)>=8&&ao>=6&&0===ak.length&&"low"===an.riskLevel,aq=O.length<=80&&("evidence_first"===an.suggestedStrategy||aV.highRisk||ak.length>0||ai.length<8&&"low"!==an.riskLevel);if(!ap&&aq&&O.length>0){let b=await ah({manager:q,projectRoot:c,chapter:d,scopedFilePaths:O,fileRoleByPath:av,fileProcessingByPath:aw,requiredNeeds:ak,highRisk:aV.highRisk,signal:a.signal}).catch(()=>[]);am=b.length,b.length>0&&(ad=cP(d,[...ad,...b_(b,aO)],{maxItems:cS(aP+12,d,aV.highRisk),maxChars:ae+(aV.highRisk?36e3:16e3),preservePinned:!0},bR),ad=b_(ad,aO),ai=cP(d,ad,{maxItems:cS(aP+8,d,aV.highRisk),maxChars:ae+(aV.highRisk?28e3:12e3),preservePinned:!0},bR),b1(ai,aO,`chapter:${d.id}:deep`),ak=d.requiredFacts.filter(a=>!ai.some(b=>(0,u.Lk)(b,a))))}for(let a of(0===ai.length&&a3.push(`${d.title}:缺少可支撑正文的项目资料证据`),ak))a3.push(`${d.title}:事实需求未满足 ${a}`);let ar=(0,aG.X5)({type:"knowledge_retrieval",roleId:"knowledge-base",status:a0.length>0?"success":"failed",message:`已检索/绑定 ${a0.length} 条证据`});a9<0?a9=(0,aG.fx)(G,ar):G[a9]={...ar,order:G[a9]?.order??ar.order},A(),(0,P.Te)(a.signal);let at=E?[E.graphWorks.length?`图谱识别本章工程内容:${E.graphWorks.join("、")}`:"",E.graphMethods.length?`图谱识别本章施工方法:${E.graphMethods.join("、")}`:"",E.graphBoqItems.length?`图谱识别本章BOQ清单项(${E.graphBoqItems.length}项):${E.graphBoqItems.slice(0,30).map(a=>`${a.name} ${a.quantity}${a.unit}`).join("、")}`:"",E.gaps.length?`图谱识别本章资料缺口:${E.gaps.join(";")}`:""].filter(Boolean).join("\n"):"",au=[function(a,b){let c=a.chapters.find(a=>a.chapterId===b);return c?["【本章写作任务书】",`写作目标:${c.writingGoal}`,c.mustCover.length?`必须覆盖:${c.mustCover.join("、")}`:"",c.boqTargets.length?`清单目标项:${c.boqTargets.slice(0,20).map(a=>`${a.itemName} ${a.quantity}${a.unit}`).join("、")}`:""].filter(Boolean).join("\n"):""}(bL,d.id),at,z?.writingGoal,z?.mustCover?.length?`本章必须覆盖:${z.mustCover.join("、")}`:"",z?.mustUseMaterialKinds?.length?`本章优先使用资料类型:${z.mustUseMaterialKinds.join("、")}`:""].filter(Boolean).join("\n"),aF=cJ(I,d);if(I.writerPrompts.length>0&&!aF.primaryWriter)throw Error(`${(0,t.GQ)(d.title)} 写作主控提示词未进入章节生成阶段`);let aH=[aF.promptTexts,aa].filter(Boolean).join("\n\n"),aL=aF.promptDetails.length?aF.promptDetails:["未绑定章节写作提示词"],aQ=function(a){let b=a.profile||l,c=[],d=[a.template.name,a.template.outputTitle,a.chapter.title,a.chapter.purpose,...a.chapter.sections||[]].filter(Boolean).join(" "),e=a.spec?.chapterRules.find(b=>b.id===a.chapter.id||b.title===a.chapter.title);for(let d of a.chapter.requiredFacts||[])aA(c,b,{label:d,category:n(b,d)?.category||"required",required:!0,source:"template"});for(let d of a.chapter.sections||[])aA(c,b,{label:d,category:"section",required:!1,source:"section",queries:az(d,[a.chapter.title])});for(let d of a.plan?.requiredContents||[])aA(c,b,{label:d,category:n(b,d)?.category||"plan",required:!0,source:"plan"});for(let d of a.plan?.evidenceNeeds||[])aA(c,b,{label:d,category:n(b,d)?.category||"plan",required:!0,source:"plan"});for(let d of e?.requiredFactIds||[]){let e=a.spec?.factFields.find(a=>a.id===d);e&&aA(c,b,{label:e.name,category:n(b,e.name)?.category||"spec",required:!0,source:"spec",fieldId:e.id,queries:az(e.name,[e.extractionHint||"",e.validationHint||""])})}for(let e of a.spec?.factFields||[]){if(!e.required)continue;let f=n(b,e.name),g=`${e.name} ${e.extractionHint||""} ${e.validationHint||""}`;(d.includes(e.name)||az(e.name,f?.aliases||[]).some(a=>d.includes(a))||a.chapter.requiredFacts.some(a=>a.includes(e.name)||e.name.includes(a)))&&aA(c,b,{label:e.name,category:f?.category||"spec",required:!0,source:"spec",fieldId:e.id,queries:az(e.name,[g])})}for(let a of b.factFields)[a.name,...a.aliases].some(a=>a.length>=2&&d.includes(a))&&aB(c,b,a,"profile","must_use"===a.usagePolicy,[d]);let f=ay(a.requirement||"");if(f)for(let a of b.factFields)[a.name,...a.aliases].some(a=>a.length>=2&&f.includes(a))&&aB(c,b,a,"requirement",!0,[f]);let g=ay(a.promptTexts||"");if(g)for(let d of b.factFields)[d.name,...d.aliases].some(a=>a.length>=2&&g.includes(a))&&aB(c,b,d,"prompt","must_use"===d.usagePolicy,[a.chapter.title]);return c}({template:p,chapter:d,spec:X,profile:Y,promptTexts:aH,requirement:a.requirement,plan:z?{requiredContents:z.mustCover,evidenceNeeds:Object.values(z.evidenceQueries).flat()}:void 0}),aR=aD({needs:aQ,factsModel:bm,evidence:ad,profile:Y}),aS=aR.filter(a=>a.need.required&&"satisfied"!==a.status).map(a=>a.need.label);if(aS.length>0&&O.length>0){let b=await cU({manager:q,projectRoot:c,chapter:d,needs:aS,scopedFilePaths:O,fileRoleByPath:av,fileProcessingByPath:aw,signal:a.signal}).catch(()=>[]),e=await ah({manager:q,projectRoot:c,chapter:d,scopedFilePaths:O,fileRoleByPath:av,fileProcessingByPath:aw,requiredNeeds:aS,highRisk:!0,signal:a.signal}).catch(()=>[]),f=b_([...b,...e],aO);f.length>0&&(ad=cP(d,[...ad,...f],{maxItems:cS(aP+16,d,!0),maxChars:ae+42e3,preservePinned:!0},bR),ad=b_(ad,aO),ai=cP(d,ad,{maxItems:cS(aP+12,d,!0),maxChars:ae+32e3,preservePinned:!0},bR),b1(ai,aO,`chapter:${d.id}:supplemental`),ak=d.requiredFacts.filter(a=>!ai.some(b=>(0,u.Lk)(b,a))),aS=(aR=aD({needs:aQ,factsModel:bm,evidence:ad,profile:Y})).filter(a=>a.need.required&&"satisfied"!==a.status).map(a=>a.need.label))}b1(ai,aO,`chapter:${d.id}:writer-input`);let aT=function(a){let b=a.chapter.sections?.length||0,c=(a.chapter.sections||[]).filter(b=>a.evidence.some(a=>(0,u.Lk)(a,b)||`${a.sectionTitle||""} ${a.content}`.includes(b))).length,d=a.chapter.requiredFacts.length,e=a.chapter.requiredFacts.filter(b=>a.evidence.some(a=>(0,u.Lk)(a,b))).length;return{chapterId:a.chapter.id,chapterTitle:a.chapter.title,risk:a.risk,evidenceCount:a.evidence.length,evidenceFiles:new Set(a.evidence.map(a=>a.filePath)).size,sectionCovered:c,sectionTotal:b,requiredFactCovered:e,requiredFactTotal:d}}({chapter:d,evidence:ai,risk:aV});a1.push(aT);let aU=new Set(ai.map(a=>a.filePath)),aW=ai.reduce((a,b)=>a+b.content.length,0),aX=[...aV.highRisk?[`召回覆盖风险(${aV.riskReason||"切片未完全预加载"}):已加载 ${aV.loadedChunks}/${aV.totalChunks},已启用深召回`]:[],`项目理解缓存证据:${R.length} 条`,`深召回证据:${am} 条`,`事实覆盖:${aT.requiredFactCovered}/${aT.requiredFactTotal}`,`小节覆盖:${aT.sectionCovered}/${aT.sectionTotal}`];G[j]=(0,aG.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:I.writerPrompts[0]?.id,status:"running",message:`${(0,t.GQ)(d.title)} 已选取 ${ai.length} 条高相关证据,正在生成正文`,details:[`使用绑定文件:${aU.size} 份`,`上下文字符:${aW}`,`检索查询:${Math.min(H.length,J)} 组`,...aX],progress:{current:h+1,total:bv.length,label:"正文生成"}},{subtitle:(0,t.GQ)(d.title),order:h}),A(),bR.evidence.contextChars+=aW;let aY=(k=aR,aC(k.flatMap(a=>a.facts))),aZ=/概况|工程|项目|总体|部署|进度|工期|质量/u.test(d.title)?bi:[],a$=function(a){let b=a.spec?.chapterRules.find(b=>b.id===a.chapter.id||b.title===a.chapter.title),c=(b?.requiredFactIds||[]).map(b=>a.spec?.factFields.find(a=>a.id===b)?.name).filter(Boolean),d=[...new Set([...a.chapter.requiredFacts,...c,...a.plan?.requiredContents||[],...a.plan?.evidenceNeeds||[],...(a.resolvedFactNeeds||[]).filter(a=>a.need.required).map(a=>a.need.label)].filter(Boolean))],e=a.roleFacts.map(({fact:a})=>`- ${a.key}:${(0,s.eE)((0,P.lG)(a.value))}`),f=(a.resolvedFactNeeds||[]).flatMap(a=>a.facts),g=a.indexedFacts||[],h=(0,Q.Cr)(g,a=>(0,Q.rF)(a),{maxItems:48,maxChars:12e3},"indexedFacts"),i=f.length>0?[]:h.selected.map(a=>`- ${a.key||a.fieldName||"资料事实"}:${(0,s.eE)((0,P.lG)(a.value)).slice(0,180)}${a.sourceFile?`(来源:${a.sourceFile.split("/").pop()})`:""}`),j=h.dropped.length>0?[`⚠️ ${h.dropped.length} 个低优先级事实未列出(完整列表见事实主表)`]:[],k=[...f,...g].filter(a=>/建设地点|建设规模|招标范围|计划工期|合同工期|周期要求|质量标准|合同估算|投资估算|最高投标限价|招标控制价/u.test(`${a.key||""}${a.fieldName||""}${a.fieldId||""}`)).filter((a,b,c)=>c.findIndex(b=>`${b.key||b.fieldName}:${(0,P.lG)(b.value)}`==`${a.key||a.fieldName}:${(0,P.lG)(a.value)}`)===b),l=[...new Set([...function(a){let b=new Set,c=/(?:\b[A-Z]{1,8}[\w./-]*\d[\w./-]*\b|\b\d+(?:\.\d+)?\s*(?:mm|cm|m|km|㎡|m²|m3|m³|kg|g|t|L|ml|MPa|kPa|℃|%|台|套|个|项|批|次|份|人|小时|分钟|日历天|天|周|月|年|万元|元)\b|\b\d+\s*[×xX]\s*\d+(?:\s*[×xX]\s*\d+)?\b|\b(?:GB|GB\/T|ISO|IEC|IEEE|RFC|API|DB\d*|T\/[A-Z]+)\s*[\w.-]+\b)/giu;for(let d of a){let a=(0,P.lG)(d.content).replace(/\s+/gu," ");if((!/报价明细|投标报价|单价|合价|综合单价|预留金|税率|增值税|利润|结算/u.test(a)||/合同估算价|合同估算价格|投资估算|最高投标限价|招标控制价/u.test(a))&&!/OCR|识别错误|乱码|无法确认|疑似|不确定|语义断裂/u.test(a)){for(let d of a.matchAll(c))b.add(d[0].trim());if(b.size>=40)break}}return[...b].slice(0,40)}(a.evidence),...f.map(a=>(0,P.lG)(a.value)).filter(a=>/\d|DN|φ|Φ|mm|cm|m²|m3|m³|MPa|kPa|℃|%|GB|JGJ|ISO|台|套|个|项|批|次|份|人|㎡|日历天|万元|元/iu.test(a)),...g.map(a=>(0,P.lG)(a.value)).filter(a=>/\d|DN|φ|Φ|mm|cm|m²|m3|m³|MPa|kPa|℃|%|GB|JGJ|ISO|台|套|个|项|批|次|份|人|㎡|日历天|万元|元/iu.test(a))])],m=0,n=[];for(let a of l){if(m+a.length>3e3&&n.length>=10)break;n.push(a),m+=a.length+1}let o=new Set([...a.evidence.map(a=>a.filePath),...f.map(a=>a.sourceFile),...(a.indexedFacts||[]).map(a=>a.sourceFile)]).size,p=(a.resolvedFactNeeds||[]).filter(a=>"satisfied"!==a.status&&a.need.required).map(a=>a.need.label);return["【本章事实覆盖与参数落位要求】",d.length?`必须优先覆盖的事实/要求:
132
- ${d.map(a=>`- ${a}`).join("\n")}`:"",e.length?`角色节点已抽取事实:
133
- ${e.join("\n")}`:"",k.length?`项目基础事实卡片(资料已明确,项目概况、项目基本信息表、进度和质量相关内容必须优先使用,不得输出任何占位话术):
134
- ${k.map(a=>`- ${a.key||a.fieldName}:${(0,s.eE)((0,P.lG)(a.value)).slice(0,220)}${a.sourceFile?`(来源:${a.sourceFile.split("/").pop()})`:""}`).join("\n")}
135
- 项目基本信息表必须使用固定表头:| 信息项 | 内容 |,不得使用“序号|项目名称|内容参数”表头,不得输出后台溯源列。`:"",a.factNeedsPrompt||"",i.length?`全局资料事实索引匹配到的本章可写事实:
136
- ${i.join("\n")}`:"",n.length?`本章资料中可直接使用的可靠精确参数/编号:${n.join("、")}。这些参数来自绑定资料,不属于编造;涉及对应对象、部位、工序、材料、设备、项目概况、质量验收或安全控制时必须自然写入正文,并保持原样或等价专业表达。项目基础事实中的合同估算价、计划工期可用于项目概况;不得写入报价明细、单价、税率、预留金。`:"",p.length?`当前事实需求仍未充分确认:${p.join("、")}。未确认项不得编造;但已满足事实需求中的资料事实必须写入对应小节。`:"",a.missingFacts.length?`模板显式要求中当前检索未充分命中的项:${a.missingFacts.join("、")}。未命中项不得编造,但不得因此省略上方已经明确的可靠参数。`:"",`本章可用材料来源约 ${o} 个文件,正文必须按事实需求把可用事实内化到对应小节,不得单列后台资料清单。`,...j].filter(Boolean).join("\n")}({chapter:d,plan:void 0,spec:X,roleFacts:$,evidence:ai,missingFacts:ak,indexedFacts:[...aZ,...aY],resolvedFactNeeds:aR,factNeedsPrompt:function(a){let b=a.map(a=>{let b=a.facts.slice(0,5).map(b=>`${b.key||b.fieldName||a.need.label}=${aE(b.value)}${b.sourceFile?`(${e.basename(b.sourceFile)})`:""}`),c=a.facts.length?[]:(a.evidence||[]).slice(0,2).map(a=>`证据片段:${aE(a.content).slice(0,160)}${a.filePath?`(${e.basename(a.filePath)})`:""}`);return`- ${a.need.required?"必须":"相关"}|${a.need.label}|${a.status}${b.length||c.length?`:${[...b,...c].join(";")}`:":未在已解析资料中确认"}`});return b.length?`事实需求覆盖卡片:
137
- ${b.join("\n")}`:""}(aR)}),a_=function(a){let b=Date.now(),c=a.plan.chapters.find(b=>b.chapterId===a.chapter.id)||a.plan.chapters.find(b=>b.title===a.chapter.title);if(!c)throw Error(`缺少章节计划:${a.chapter.title}`);let d=a.context.facts.filter(a=>c.evidenceQueries.some(b=>di(a,b))||c.requiredFacts.some(b=>di(a,b))),e=c.sections.map(b=>{let c=a.context.facts.filter(a=>b.evidenceQueries.some(b=>di(a,b))||b.requiredFacts.some(b=>di(a,b))).slice(0,24),d=a.evidence.filter(a=>b.evidenceQueries.some(b=>(function(a,b){let c=df(`${a.sectionTitle||""} ${a.content||""} ${a.filePath||""}`);return b.split(/[\s、,,;;::()()【】[-]+/u).filter(a=>a.length>=2).some(a=>c.includes(df(a)))})(a,b))).slice(0,24),e=b.requiredGraphNodes.flatMap(b=>dj(a.context.baseProjectGraph,b)).slice(0,12),f=[];return 0===d.length&&0===c.length&&0===e.length&&f.push({level:"error",severity:"blocker",category:"evidence_coverage",owner:"system",message:`${b.title} 缺少事实、图谱或证据支撑`,suggestion:"应先定向检索和抽取事实,不能生成占位正文。"}),{...b,factIds:c.map(a=>(0,P.c6)({key:a.key,value:(0,P.lG)(a.value),sourceFile:a.sourceFile}).slice(0,12)),evidenceIds:d.map(a=>(0,P.c6)({filePath:a.filePath,content:a.content.slice(0,160),score:a.score}).slice(0,12)),graphNodeIds:e.map(a=>(0,P.c6)(a).slice(0,12)),ready:0===f.length,issues:f}}),f=e.flatMap(a=>a.issues),g={taskId:`chapter-task-${(0,P.c6)({plan:a.plan.planId,chapter:a.chapter.id,evidence:a.evidence.map(a=>(0,P.c6)({filePath:a.filePath,content:a.content.slice(0,120),score:a.score}))}).slice(0,10)}`,chapterId:a.chapter.id,title:a.chapter.title,facts:d.slice(0,48),evidence:a.evidence.slice(0,48),graphContext:dj(a.context.baseProjectGraph,a.chapter.title).slice(0,20).join("\n"),sections:e,ready:0===f.length,issues:f};return{task:g,node:{id:`chapter-task-${a.chapter.id}`,type:"chapter_task_planner",status:g.ready?"completed":"failed",startedAt:b,completedAt:Date.now(),outputSummary:`${g.sections.filter(a=>a.ready).length}/${g.sections.length} 个小节任务就绪`,metrics:{facts:g.facts.length,evidence:g.evidence.length,issues:f.length},issues:f}}}({plan:bP.plan,chapter:d,context:bn,evidence:ai});if(bn.chapterTasks=[...(bn.chapterTasks||[]).filter(a=>a.chapterId!==d.id),a_.task],bn.nodes.push(a_.node),(0,aG.fx)(G,(0,aG.X5)({type:"validation",roleId:`agent-chapter-task-${d.id}`,status:a_.task.ready||o?"success":"failed",message:a_.task.ready?a_.node.outputSummary||`${(0,t.GQ)(d.title)} 章节任务规划完成`:o?`${(0,t.GQ)(d.title)} 章节任务未完全就绪,已复用已有正文并交由 Reviewer/Repairer 处理`:a_.node.outputSummary||`${(0,t.GQ)(d.title)} 章节任务规划完成`,details:a_.task.issues.map(a=>a.message)},{subtitle:"Agent Chapter Task Planner",order:G.length})),A(y),!a_.task.ready&&!o)throw Error(`${(0,t.GQ)(d.title)} 章节任务未就绪:${a_.task.issues.map(a=>a.message).join(";")}`);let a6=[aH,dm(a_.task)].filter(Boolean).join("\n\n"),ba={total:aR.length,satisfied:aR.filter(a=>"satisfied"===a.status).length,missing:aR.filter(a=>"missing"===a.status).length,lowConfidence:aR.filter(a=>"low_confidence"===a.status).length};for(let a of aS)a3.push(`${d.title}:事实需求未确认 ${a}`);let bb=X?.chapterRules.find(a=>a.id===d.id||a.title===d.title),be=bN.chapterTargets.get(d.id)||1200,bg=d.sections?.filter(Boolean).length||0,bj=/[、,,;;]/u.test(d.title),bl=function(a){let{budgetTarget:b,sectionCount:c,title:d,longformStrict:e}=a,f=/[、,,;;]/u.test(d),g=/工期|进度|质量|安全|危大|资源|人材机|保障|措施|重难点/u.test(d),h=/概况|结语|附录|说明/u.test(d),i=c>0?c*(f?720:g?900:780):g?5200:3600,j=e?h?2600:g?5200:3600:Math.min(1200,b),k=e?Math.min(Math.max(4200,b),c>=30?9800:f?8800:g?9200:7200):b,l=Math.max(j,Math.min(b,i,k));return{budgetTarget:b,roundTarget:l,structureTarget:i,maxWords:Math.ceil(l*(a.longformStrict?1.12:1.18)),label:`章节预算约 ${b} 字,本轮生成约 ${l} 字,结构目标约 ${i} 字`}}({budgetTarget:be,sectionCount:bg,title:d.title,longformStrict:bN.longformStrict}),bp=Math.ceil(bl.maxWords*(bN.maxChars?1.05:1)),bq=bN.targetChars?Math.min(1800,Math.max(600,Math.floor(.45*bl.roundTarget))):1200,br=bl.roundTarget,bs=Math.max(Math.min(bb?.minWords||0,br),Math.min(X?.dynamicChapterRule.minWordsPerChapter||0,br),Math.floor(.68*br),bq),bt=bI(bs,br),bw=bg>0?Math.min(br,Math.max(1800,bl.structureTarget)):br,bx=Math.max(4,Number(process.env.DOCUMENT_SECTION_FIRST_MAX_SECTIONS||8)),bz=process.env.DOCUMENT_SECTION_FIRST_GENERATION,bA=void 0!==bz&&0===Number(bz),bB=void 0!==bz&&0!==Number(bz),bC=br>=6e3&&bg>=4&&bg<=bx&&!bj,bD=!bA&&bg>=2&&(bg>bx||bj||bN.longformStrict&&bg>=6),bF=!bA&&!bD&&bg>=2&&bg<=bx&&(bB||bC||bN.longformStrict),bJ=0,bK=a=>{let b=Date.now();if(b-bJ<3e3)return;bJ=b;let c=a.filter(Boolean).join("\n\n");c.trim()&&A([...y,{id:d.id,title:d.title,content:`## ${d.title}
138
-
139
- ${c}`,evidence:ai,missingFacts:ak,sections:d.sections||[],tablePlans:d.tablePlans||[],inProgress:!0}])},bM=a=>{"complete"===a.phase&&a.partialSections&&bK(a.partialSections)};if(o)b=cI(o,d),g=(0,aG.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:aF.primaryPromptId,status:"success",message:`${(0,t.GQ)(d.title)} 已复用已有章节正文:当前 ${(0,w.V7)(b)} 字,跳过 Writer,直接进入 Reviewer/Repairer/Final Gate`,details:[`有效证据:${ai.length} 条`,`事实需求:${ba.satisfied}/${ba.total} 已满足,缺失 ${ba.missing},低置信 ${ba.lowConfidence}`,"来源:resumeChapters/checkpointChapters"],progress:{current:h+1,total:bv.length,label:"复用章节"}},{subtitle:(0,t.GQ)(d.title),order:h}),G[j]=g,A(y);else{G[j]=(0,aG.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:aF.primaryPromptId,status:"running",message:bD?`${(0,t.GQ)(d.title)} 正在按语义小节组并发成稿`:bF?`${(0,t.GQ)(d.title)} 正在按小节并发成稿`:`${(0,t.GQ)(d.title)} 正在整章一次成稿`,details:bD||bF?[...aL,`有效证据:${ai.length} 条`,`事实需求:${ba.satisfied}/${ba.total} 已满足,缺失 ${ba.missing},低置信 ${ba.lowConfidence}`,bl.label,`生成上限约 ${bp} 字`,`规划小节:${d.sections?.length||0} 个`,bD?"小节较多,按工期/质量/安全/资源等语义组并发生成,避免整章长调用低产":"按章节结构拆分小节自然并发生成,章节聚合后再审查修复"]:[...aL,`有效证据:${ai.length} 条`,`事实需求:${ba.satisfied}/${ba.total} 已满足,缺失 ${ba.missing},低置信 ${ba.lowConfidence}`,bl.label,`生成上限约 ${bp} 字`,`规划小节:${bg} 个`,"首次生成必须覆盖章节结构、小节和事实,篇幅目标仅作为规划参考"],progress:{current:h+1,total:bv.length,label:bD?"小节分组":bF?"小节并发":"整章成稿"}},{subtitle:(0,t.GQ)(d.title),order:h}),A();let e=bD?await C(()=>aI(bR,`chapter-section-group-draft:${d.id}`,()=>bG({template:p,chapter:d,evidence:ai,missingFacts:ak,promptTexts:a6,projectContext:by,requirement:a.requirement,roleContext:au,targetWords:bw,maxWords:bp,forbidDrawingImages:!1,factCoverageContext:a$,compactProjectContext:!0,sectionEvidenceProvider:b=>cT({manager:q,projectRoot:c,chapter:d,sectionTitle:b,scopedFilePaths:O,fileRoleByPath:av,fileProcessingByPath:aw,signal:a.signal}),onSectionProgress:bM,diagnostics:bR,signal:a.signal}))):bF?await C(()=>aI(bR,`chapter-section-draft:${d.id}`,()=>bH({template:p,chapter:d,evidence:ai,missingFacts:ak,promptTexts:a6,projectContext:by,requirement:a.requirement,roleContext:au,targetWords:bw,maxWords:bp,forbidDrawingImages:!1,factCoverageContext:a$,projectRoot:c,modelName:(0,al.$y)()?.model.name,materialContextHash:(0,P.c6)({materialFilePaths:K,promptTexts:aH}),allowPartialResult:!1,compactProjectContext:!0,sectionEvidenceProvider:b=>cT({manager:q,projectRoot:c,chapter:d,sectionTitle:b,scopedFilePaths:O,fileRoleByPath:av,fileProcessingByPath:aw,signal:a.signal}),onSectionProgress:bM,diagnostics:bR,signal:a.signal}))):await C(()=>aI(bR,`chapter-draft:${d.id}`,()=>a5(p,d,ai,ak,a6,by,a.requirement,au,{forbidDrawingImages:!1,minWords:bs,targetWords:br,maxWords:bp,maxTokens:bt,factCoverageContext:a$,signal:a.signal,diagnostics:bR})));if(!e&&bD&&(G[j]=(0,aG.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:aF.primaryPromptId,status:"running",message:`${(0,t.GQ)(d.title)} 小节组未返回有效正文,正在切换为逐小节备用成稿`,details:[`LLM 最近错误:${bR.llm.lastError||"小节组空响应或超时"}`,`有效证据:${ai.length} 条`],progress:{current:h+1,total:bv.length,label:"备用成稿"}},{subtitle:(0,t.GQ)(d.title),order:h}),A(y),e=await C(()=>aI(bR,`chapter-section-fallback:${d.id}`,()=>bH({template:p,chapter:d,evidence:ai,missingFacts:ak,promptTexts:a6,projectContext:by,requirement:a.requirement,roleContext:au,targetWords:bw,maxWords:bp,forbidDrawingImages:!1,factCoverageContext:a$,projectRoot:c,modelName:(0,al.$y)()?.model.name,materialContextHash:(0,P.c6)({materialFilePaths:K,promptTexts:aH,fallback:"section-parallel"}),allowPartialResult:!1,sectionEvidenceProvider:b=>cT({manager:q,projectRoot:c,chapter:d,sectionTitle:b,scopedFilePaths:O,fileRoleByPath:av,fileProcessingByPath:aw,signal:a.signal}),diagnostics:bR,signal:a.signal}).catch(a=>{bR.llm.lastError=a instanceof Error?a.message:String(a)})))),!e&&(bD||bF)&&(G[j]=(0,aG.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:aF.primaryPromptId,status:"running",message:`${(0,t.GQ)(d.title)} 小节成稿未完成,正在切换为整章紧凑备用成稿`,details:[`LLM 最近错误:${bR.llm.lastError||"小节成稿空响应或超时"}`,`有效证据:${ai.length} 条`],progress:{current:h+1,total:bv.length,label:"整章备用"}},{subtitle:(0,t.GQ)(d.title),order:h}),A(y),e=await C(()=>aI(bR,`chapter-compact-fallback:${d.id}`,()=>a5(p,d,ai,ak,a6,by,a.requirement,au,{forbidDrawingImages:!1,minWords:Math.floor(.65*bs),targetWords:Math.floor(.75*bw),maxWords:bp,maxTokens:bt,factCoverageContext:a$,signal:a.signal,diagnostics:bR}).catch(a=>{bR.llm.lastError=a instanceof Error?a.message:String(a)})))),!e&&ai.length>0&&(G[j]=(0,aG.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:aF.primaryPromptId,status:"running",message:`${(0,t.GQ)(d.title)} LLM 多路径未返回有效正文,正在用当前项目证据生成可审查草稿`,details:[`LLM 最近错误:${bR.llm.lastError||"空响应或超时"}`,`证据条数:${ai.length}`],progress:{current:h+1,total:bv.length,label:"证据草稿"}},{subtitle:(0,t.GQ)(d.title),order:h}),A(y),e=function(a){let b=(a.chapter.sections?.length?a.chapter.sections:["资料依据与施工对象","主要控制措施","检查验收与闭环管理"]).flatMap(b=>{let c=(function(a,b,c){let d=[a,b.title,...a.split(/[、,,;;\s]+/u)].filter(a=>a.length>=2),e=c.map(a=>{let b=(0,s.eE)(a.content||"").replace(/\s+/gu," ").trim(),c=d.reduce((c,d)=>c+(b.includes(d)||(a.sectionTitle||"").includes(d)?1:0),0)+a.score;return{content:b,score:c}}).filter(a=>a.content.length>=30).sort((a,b)=>b.score-a.score),f=[];for(let a of e.slice(0,8)){for(let b of a.content.split(/[。;;\n]/u).map(a=>a.trim()).filter(Boolean))if(!(b.length<18||b.length>180||/报价|单价|税率|利润|后台|知识库|提示词|OCR|文件路径/u.test(b))&&!(/^(?:本节围绕|本小节依据|项目实施时应|实施过程中应|当前绑定资料|当前项目绑定资料)/u.test(b)||/确保各项措施与本工程实施条件相匹配/u.test(b)||/形成责任明确、过程可控、资料完整的管理闭环/u.test(b)||/确保现场管理要求与施工进度、资源组织和验收节点同步推进/u.test(b)||/^管理闭环[。;;]?$/u.test(b)||/资料参数行摘要|房建市政施工评定分离招标示范文本|我方已仔细研究|中标通知书|签订合同|履约保证金|投标函|投标人须知|招标公告|开标|评标|保证金|电子交易系统|公共资源交易|监管部门|专用账户监管协议书|资金托管专用账号/u.test(b)||/^#+\s*/u.test(b)||/^(?\d+)/u.test(b))&&(f.some(a=>a.includes(b)||b.includes(a))||f.push(b),f.length>=10))break;if(f.length>=10)break}return f})(b,a.chapter,a.evidence).slice(0,8);return 0===c.length?[]:[[`### ${b}`,"",...c.map(a=>`- ${a}。`)].join("\n")]});return 0===b.length?"":(0,v.kT)((0,v.FD)(`## ${a.chapter.title}
140
-
141
- ${b.join("\n\n")}`,a.forbidDrawingImages))}({chapter:d,evidence:ai,targetWords:bw,forbidDrawingImages:!1})),(0,P.Te)(a.signal),!e){let a=`${(0,t.GQ)(d.title)} 大模型未返回有效正文,已阻断生成`;throw G[j]=(0,aG.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:aF.primaryPromptId,status:"failed",message:a,details:[`LLM 最近错误:${bR.llm.lastError||"空响应或超时"}`,`证据条数:${ai.length}`],progress:{current:h+1,total:bv.length,label:"章节阻断"}},{subtitle:(0,t.GQ)(d.title),order:h}),A(y),Error(a)}let f=e;if(!f.trim())throw Error(`${(0,t.GQ)(d.title)} 首次生成失败,未获得可用于定稿的正文`);b=cI(f,d)}let bO=bE({chapter:d,content:b,evidence:ai}),bQ=(0,w.V7)(b),bS=(0,v.r4)(b),bT=bS.length>0?bS:d.sections||[],bU=(0,x.qK)(b,[{title:d.title,content:b,sections:bT}]).map(a=>a.message),bV=bO.slice(0,6).map(a=>`小节事实密度需优化:${a}`),bX=[...bU,...bV],bY=function(a,b,c=[]){return a<=0||c.some(a=>/未返回有效章节正文|生成失败/u.test(a))?"failed":"success"}(bQ,0,bX);g=(0,aG.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:aF.primaryPromptId,status:bY,message:(0,aG.AQ)(`${(0,t.GQ)(d.title)} 已由大模型成稿:当前 ${bQ} 字;章节预算约 ${bl.budgetTarget} 字,本轮目标约 ${bl.roundTarget} 字${bX.length?`;待优化:${bX.slice(0,8).join("、")}`:""}`,i),details:[`本轮完成率:${Math.round(bQ/Math.max(1,bl.roundTarget)*100)}%`,`结构目标约 ${bl.structureTarget} 字`,...aL,`二级小节:${bT.length} 个`,`扩写轮次:0`],progress:{current:h+1,total:bv.length,label:bX.length?"章节已生成":"章节达标"}},{subtitle:(0,t.GQ)(d.title),order:h}),a8[h]=g;let bZ={id:d.id,title:d.title,content:b,evidence:ai,missingFacts:ak,sections:bT,tablePlans:d.tablePlans||[]},b$=ds({task:a_.task,draft:bZ,context:bn});bn.reviewResults={...bn.reviewResults||{},[d.id]:b$};let b0=b$.issues.filter(a=>"blocker"===a.severity||"error"===a.level),b2=b0.some(a=>/Writer 未完成/u.test(a.message)),b3=b0.some(a=>/正文不足,未达到任务最小深度/u.test(a.message)),b4=b0.length>0&&(b$.repairable||b2||b3);if(bn.nodes.push({id:`chapter-reviewer-${d.id}`,type:"chapter_reviewer",status:b0.length?b4?"running":"failed":"completed",startedAt:Date.now(),completedAt:Date.now(),outputSummary:b$.issues.length?`${b$.issues.length} 个 Reviewer 提示`:"Reviewer 通过",metrics:{supportedFacts:b$.supportedFacts},issues:b$.issues}),(0,aG.fx)(G,(0,aG.X5)({type:"llm_review",roleId:`agent-reviewer-${d.id}`,status:b0.length?b4?"running":"failed":"success",message:b0.length?`${(0,t.GQ)(d.title)} Reviewer 发现 ${b0.length} 个阻断问题,等待 Repairer 修复`:`${(0,t.GQ)(d.title)} Reviewer 通过${b$.issues.length?`(${b$.issues.length} 个优化提示)`:""}`,details:b$.issues.map(a=>a.message)},{subtitle:"Agent Reviewer",order:G.length})),A(y),b0.length>0&&(b$.repairable||b2||b3)){let b={...b$,issues:b0},e=b$.repairable?(m={task:a_.task,review:b}).review.repairable?["【Agent 定向修复任务】",`章节:${m.task.title}`,"只修复下列问题,不重写无关内容;如果问题是小节正文不足,必须按原小节标题完整补足该小节正式正文,每个小节不得少于任务最小深度:",...m.review.issues.map(a=>`- ${a.message};${a.suggestion||""}`),dm(m.task)].join("\n"):"":["【Agent 定向修复任务】",`章节:${a_.task.title}`,"Reviewer 发现 Writer 未完成小节。必须基于对应小节事实卡和证据生成正式正文,替换并删除 WRITER_MISSING_SECTION 标记;不得跳过这些小节,不得保留占位说明。",...b0.map(a=>`- ${a.message};${a.suggestion||""}`)].join("\n"),f=G.length,g=b0.filter(a=>/Writer 未完成/u.test(a.message)),h=b0.filter(a=>/正文不足,未达到任务最小深度/u.test(a.message)),i=[...g,...h.filter(a=>!g.some(b=>b.message===a.message))],j=[];for(let[b,g]of((0,aG.fx)(G,(0,aG.X5)({type:"llm_review",roleId:`agent-repairer-${d.id}`,status:"running",message:`${(0,t.GQ)(d.title)} Reviewer 发现 ${b0.length} 个阻断问题,正在定向修复`,details:b0.map(a=>a.message)},{subtitle:"Agent Repairer",order:f})),A(y),i.entries())){let h=g.message.replace(/\s*Writer 未完成.*$/u,"").replace(/\s*正文不足,未达到任务最小深度.*$/u,"").trim(),k=/Writer 未完成/u.test(g.message)?"缺失小节":"深度不足小节";(0,aG.fx)(G,(0,aG.X5)({type:"llm_review",roleId:`agent-repairer-${d.id}`,status:"running",message:`${(0,t.GQ)(d.title)} 正在补写${k} ${b+1}/${i.length}:${h}`,details:[...j,`当前:${h}`]},{subtitle:"Agent Repairer",order:f})),A(y);let l=a_.task.sections.find(a=>a.title===h),m=(a,b,c)=>{let d=a=>a.replace(/[\u00a0\u3000]/gu," ").replace(/^\d+(?:\.\d+)*\s+/u,"").trim(),e=a=>d(a).replace(/施工(?=方案|流程|方法)/gu,"").replace(/专项(?=方案)/gu,"").replace(/\s/gu,""),f=a=>a.trim().replace(/^#{2,6}\s+(?:\d+(?:\.\d+)*\s+)?[^\n]+\n+/u,"").trim(),g=a.split("\n"),h=0;for(let i=0;i<g.length;i+=1){let j=g[i],k=h;h+=j.length+1;let l=/^(#{3,4})\s+(.+)$/u.exec(j.trim());if(!l)continue;let m=d(l[2]),n=e(m),o=e(b);if(m!==b&&!m.includes(b)&&!b.includes(m)&&n!==o&&!n.includes(o)&&!o.includes(n))continue;let p=g.length;for(let a=i+1;a<g.length;a+=1)if(/^#{2,4}\s+/u.test(g[a].trim())){p=a;break}let q=p<g.length?g.slice(0,p).join("\n").length:a.length,r=f(c);return`${a.slice(0,k)}${j.trim()}
142
-
143
- ${r}${a.slice(q)}`}let i=a_.task.sections.findIndex(a=>e(a.title)===e(b));if(i>=0){let d=a_.task.sections.slice(i+1).map(a=>e(a.title));for(let h=0;h<g.length;h+=1){let i=/^(#{3,4})\s+(.+)$/u.exec(g[h].trim());if(!i||!d.includes(e(i[2])))continue;let j=g.slice(0,h).join("\n").length+ +(h>0),k=f(c);return k?`${a.slice(0,j).trimEnd()}
144
-
145
- ### ${b}
146
-
147
- ${k}
148
-
149
- ${a.slice(j).trimStart()}`:a}}let j=f(c);return j?`${a.trimEnd()}
150
-
151
- ### ${b}
152
-
153
- ${j}`:a},n=b_(await cT({manager:q,projectRoot:c,chapter:d,sectionTitle:h,scopedFilePaths:O,fileRoleByPath:av,fileProcessingByPath:aw,signal:a.signal}).catch(()=>[]),aO);b1(n.length?n:ai,aO,`repair:${d.id}:${h}`);let o=Math.max(l?.minChars||0,/项目主要施工内容/u.test(h)?2200:/主要分部分项工程施工方案|主要施工方法/u.test(h)?1800:/项目特点.*重点.*难点|重点.*难点.*分析/u.test(h)?1500:/原材料进场复试|见证取样|危大工程专项施工方案审批流程/u.test(h)?900:760),r=/正文不足,未达到任务最小深度/u.test(g.message);bR.llm.lastError=void 0;let s=await C(()=>aI(bR,`agent-repairer-section:${d.id}:${h}`,()=>bh({template:p,chapter:d,sectionTitle:h,evidence:n.length?n:ai,missingFacts:ak,promptTexts:[a6,e].filter(Boolean).join("\n\n"),projectContext:by,requirement:a.requirement,roleContext:au,targetWords:o,maxWords:1.25*o,forbidDrawingImages:!1,factCoverageContext:a$,qualityFeedback:`Repairer 定向补写“${h}”。必须输出该小节正式正文并彻底删除 WRITER_MISSING_SECTION 标记。`,diagnostics:bR,signal:a.signal})));if((!s||s.includes("WRITER_MISSING_SECTION"))&&(bR.llm.lastError=void 0,(0,aG.fx)(G,(0,aG.X5)({type:"llm_review",roleId:`agent-repairer-${d.id}`,status:"running",message:`${(0,t.GQ)(d.title)} 正在二次补写${k} ${b+1}/${i.length}:${h}`,details:[...j,`重试:${h}`]},{subtitle:"Agent Repairer",order:f})),A(y),s=await C(()=>aI(bR,`agent-repairer-section-retry:${d.id}:${h}`,()=>bh({template:p,chapter:d,sectionTitle:h,evidence:n.length?n:ai,missingFacts:ak,promptTexts:e,projectContext:by,requirement:a.requirement,roleContext:au,targetWords:o,maxWords:1.15*o,forbidDrawingImages:!1,factCoverageContext:a$,qualityFeedback:`第二次定向补写“${h}”:只写该小节正式正文,不写解释,不保留 WRITER_MISSING_SECTION。`,diagnostics:bR,signal:a.signal})))),s&&!s.includes("WRITER_MISSING_SECTION")){let a=/^#{3,4}\s+/u.test(s.trim())?s.trim():`### ${h}
154
-
155
- ${s.trim()}`,b=(0,w.V7)(a),c=!r||b>=Math.floor(.85*o),d=c?m(bZ.content,h,a):bZ.content,e=d!==bZ.content;e&&(bZ={...bZ,content:d}),j.push(e?`成功:${h}(${b}字,证据 ${n.length||ai.length} 条)`:`失败:${h}(${c?"未定位到原小节块":`补写不足 ${b}/${o} 字`})`)}else j.push(`失败:${h}(${!s?bR.llm.lastError||"空响应":"仍包含 WRITER_MISSING_SECTION"})`);(0,aG.fx)(G,(0,aG.X5)({type:"llm_review",roleId:`agent-repairer-${d.id}`,status:"running",message:`${(0,t.GQ)(d.title)} 已补写${k} ${b+1}/${i.length}`,details:j},{subtitle:"Agent Repairer",order:f})),A(y)}let k={content:bZ.content,appliedCount:0};b0.some(a=>!/Writer 未完成|正文不足,未达到任务最小深度/u.test(a.message))&&(k=await C(()=>aI(bR,`agent-repairer:${d.id}`,()=>aJ({template:p,chapter:{id:d.id,title:d.title,content:bZ.content,evidence:ai,missingFacts:ak,sections:bT},issues:b0.map(a=>`${a.message};${a.suggestion||""}`),promptTexts:[a6,e].filter(Boolean).join("\n\n"),requirement:a.requirement,forbidDrawingImages:!1,diagnostics:bR,signal:a.signal})))),bZ={...bZ,content:cI(k.content||bZ.content,d)},b$=ds({task:a_.task,draft:bZ,context:bn}),bn.reviewResults={...bn.reviewResults||{},[d.id]:b$};let l=b$.issues.some(a=>"blocker"===a.severity||"error"===a.level);bn.nodes.push({id:`chapter-repairer-${d.id}`,type:"chapter_repairer",status:l?"failed":"completed",startedAt:Date.now(),completedAt:Date.now(),outputSummary:b$.issues.length?`修复后仍有 ${b$.issues.length} 个问题`:"定向修复通过",metrics:{supportedFacts:b$.supportedFacts},issues:b$.issues}),(0,aG.fx)(G,(0,aG.X5)({type:"llm_review",roleId:`agent-reviewer-${d.id}`,status:l?"failed":"success",message:l?`${(0,t.GQ)(d.title)} Reviewer 复审仍有 ${b$.issues.length} 个阻断问题`:`${(0,t.GQ)(d.title)} Reviewer 复审通过`,details:b$.issues.map(a=>a.message)},{subtitle:"Agent Reviewer",order:f-1})),(0,aG.fx)(G,(0,aG.X5)({type:"llm_review",roleId:`agent-repairer-${d.id}`,status:l?"failed":"success",message:b$.issues.length?`${(0,t.GQ)(d.title)} 定向修复后仍有 ${b$.issues.length} 个问题`:`${(0,t.GQ)(d.title)} 定向修复通过`,details:[...j,...b$.issues.map(a=>`剩余:${a.message}`)]},{subtitle:"Agent Repairer",order:f})),A(y)}b$.issues.some(a=>"blocker"===a.severity||"error"===a.level)&&a4.push(`${(0,t.GQ)(d.title)} Reviewer 未通过:${b$.issues.map(a=>a.message).join(";")}`),a7[h]=bZ,y=a7.filter(a=>!!a),A(y),bR.quality.blockingCount+=b$.issues.filter(a=>"error"===a.level).length,bR.quality.importantCount+=b$.issues.filter(a=>"warning"===a.level).length}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:"生成失败"}`;a4.push(b),g=(0,aG.X5)({type:"chapter_generation",roleId:"chapter_generation",status:"failed",message:`${(0,t.GQ)(d.title)} 生成失败:${b}`},{subtitle:(0,t.GQ)(d.title),order:h}),a8[h]=g}g&&(G[j]=g),A(y)}))}let b4=a7.filter(a=>!!a);a6.push(...a8.filter(a=>!!a));let b5=[];if("1"===process.env.DOCUMENT_GLOBAL_CONSISTENCY_REVIEW)try{let b=await C(()=>bO({template:p,chapters:b4,chapterReviews:[],promptTexts:ar,requirement:a.requirement,projectContext:by,diagnostics:bR,signal:a.signal}));b5=b.issues,(0,aG.fx)(G,b.stage),A(b4)}catch(b){if(a.signal?.aborted)throw b;console.error("[gen] global consistency review failed:",b)}return db({chapterDrafts:b4,chapterDraftsByOrder:a7,chapterGenerationStagesByOrder:a8,chapterGenerationStages:a6,effectiveChapters:bv,template:p,allEvidence:a0,projectMaterialScope:aO,progressStages:G,documentSpec:X,projectMaterialProfile:L,projectMaterialSummary:U,domainProfile:Y,documentBudget:bN,promptTexts:ao,reviewPromptTexts:ar,input:a,generationStrategy:bQ,generationDiagnostics:bR,promptBindings:J,promptDocumentRules:aj,projectUnderstanding:M,projectContext:by,projectRoot:c,projectId:o,readiness:_,factExtractionPromptTexts:ap,hasExplicitOutline:T,missingItems:a3,retrievalCoverageReports:a1,failedChapterMessages:a4,webResearchReport:a2,indexHealth:aH,promptPlan:I,globalConsistencyIssues:b5,writingTaskBrief:bL,agentWorkflow:bn,emitProgress:A,withProgressHeartbeat:C})}async function dw(a){let b=(0,d.QJ)(a.templateId);if(!b)throw Error("Document template not found");let c=b.chapters.find(b=>b.id===a.chapterId);if(!c)throw Error("Document chapter not found");let f=e.resolve(a.projectRoot||(0,g.aY)());if(!f)throw Error("No knowledge base project found");let h=(0,g.Qh)(),i=(0,aM.Hh)(f,b,{requirement:a.requirement}),j=(0,aM.W9)(f,b,{requirement:a.requirement}),{kindByPath:k,processingByPath:l}=(0,aM.Hz)(j),m=new Set(i),n=bY(f,i),o=new Map([...k.entries()].map(([a,b])=>[a,(0,aM._W)(b)])),p=new Map([...l.entries()].map(([a,b])=>[a,b])),q=cW(await h.getProject(f),[...m],a.maxEvidencePerChapter),r=[],v=[...m].filter(Boolean).sort(),w=cQ(c,c.queries,[]),x=cR(c,[]);for(let a of w.slice(0,x)){let b=await h.search(f,a,{scope:"project",filters:{filePaths:v},limit:Math.min(q,12),weights:{keyword:.4,vector:.45,rewrite:.75,hybridBonus:.15}});r.push(...b.results.filter(a=>aK(f,a.filePath,m)).map(a=>({chapterId:c.id,filePath:a.filePath,score:a.score,content:a.content,roleId:o.get(a.filePath),processingType:p.get(a.filePath),sectionTitle:a.sectionTitle,source:a.source})))}let y=cP(c,b_(r.filter(a=>aK(f,a.filePath,m)),n),{maxItems:cS(q,c),maxChars:16e3,preservePinned:!0});b1(y,n,`regenerate:${c.id}`);let z=a.currentMarkdown||"",A=new Set(a.existingFacts??[]),B=c.requiredFacts.filter(a=>!A.has(a)&&!y.some(b=>(0,u.Lk)(b,a)));if(0===y.length)throw Error(`${(0,t.GQ)(c.title)} 缺少可支撑正文的项目资料证据`);let C=[`## ${c.title}`,"",a.requirement?`> 生成要求:${a.requirement}`:"",z?`> 当前文档上下文摘要:${z.replace(/\s+/gu," ")}`:"",`本章依据已锁定项目资料围绕“${c.purpose}”重新整理,并与当前文档上下文保持一致。`,"","### 资料依据",...y.map(s.OF)].filter(Boolean).join("\n");return{id:c.id,title:c.title,content:C,evidence:y,missingFacts:B}}},78217:(a,b,c)=>{function d(a,b){return Math.ceil(e(a)/f(b))}function e(a){return a.replace(/<[^>]+>/gu,"").replace(/\s+/gu,"").length}function f(a){let b=Number(String(a&&"typography"in a&&a.typography?.bodySize||"").replace(/[^\d.]/gu,""))||14,c=Number(String(a&&"typography"in a&&a.typography?.lineHeight||"").replace(/[^\d.]/gu,""))||22;return b>=14&&c>=22?900:1050}function g(a){let b=a.trim();if(/^\d+(?:\.\d+)?$/u.test(b))return Number(b);let c={零:0,一:1,二:2,两:2,三:3,四:4,五:5,六:6,七:7,八:8,九:9};if("十"===b)return 10;let d=/^([一二两三四五六七八九])?十([一二三四五六七八九])?$/u.exec(b);if(d)return(d[1]?c[d[1]]:1)*10+(d[2]?c[d[2]]:0)}function h(a="",b=""){let c=`${a}${b}`;return/不少于|至少|不低于|以上|起码/u.test(c)?"minimum":/约|大概|左右|大约|约为|附近/u.test(c)?"approximate":"exact"}function i(a){let b=a.replace(/\s+/gu," "),c=[...b.matchAll(/(不少于|至少|不低于|约为|约|大概|大约|左右|生成|输出|达到|共)?\s*(\d+(?:\.\d+)?|[一二两三四五六七八九十]{1,3})\s*(?:页|頁)\s*(以上|左右|以内|以下)?/gu)],d=[...b.matchAll(/(不少于|至少|不低于|约为|约|大概|大约|左右|生成|输出|达到|共)?\s*(\d+(?:\.\d+)?|[一二两三四五六七八九十]{1,3})\s*(万)?\s*(?:字|字符)\s*(以上|左右|以内|以下)?/gu)],e=c.map(a=>{let b=g(a[2]||"");return Number.isFinite(b)?{value:b,mode:h(a[1],a[3])}:void 0}).filter(a=>!!a).at(-1),f=d.map(a=>{let b=g(a[2]||"");return b?{value:Math.round(b*(a[3]?1e4:1)),mode:h(a[1],a[4])}:void 0}).filter(a=>!!a).at(-1);return{targetPages:e?.value,pageMode:e?.mode,targetChars:f?.value,charMode:f?.mode}}function j(a){let b=a.title+a.purpose;return/方法|技术|质量|安全|进度|资源|保障|措施|部署|方案|流程|执行/u.test(b)?1.3:/概况|结语|附录/u.test(b)?.75:1}function k(a){let b=a.template.generationSettings||a.template.exportSettings,c=f(a.template.exportSettings||a.template.generationSettings),d=i(a.requirement||""),e=i(a.promptTexts||""),g=d.targetChars||d.targetPages?d:e,h=!!(g.targetChars||g.targetPages),k=h?void 0:b?.targetPages?.target||b?.targetPages?.min,l=g.targetPages?g.targetPages*c:void 0,m=g.targetPages||k,n=h?"explicit":k?"template":a.spec?.chapterRules.some(a=>a.minWords)||a.spec?.dynamicChapterRule.minWordsPerChapter?"spec":"default",o=h?Math.max(g.targetChars||0,l||0)||void 0:Math.max((k?k*c:void 0)||0)||void 0,p=g.pageMode||"exact",q=g.charMode||p,r=h&&"approximate"===q,s=h&&"minimum"===q,t=h?m?Math.floor(m*(s?1:.9)):void 0:b?.targetPages?.min||(m?Math.floor(.95*m):void 0),u=h&&m&&!s?Math.ceil(m*(r?1.15:1.08)):b?.targetPages?.max,v=o?Math.floor(o*(s?1:.9)):t?t*c:void 0,w=o&&!s?Math.ceil(o*(r?1.15:1.08)):u?u*c:void 0,x=a.chapters.length>0?a.chapters:a.template.chapters,y=x.reduce((a,b)=>a+j(b),0)||1,z=new Map,A=x.map(a=>({chapter:a,target:o?Math.round(o*j(a)/y):0})),B=x.reduce((b,c)=>b+Math.max(a.spec?.chapterRules.find(a=>a.id===c.id||a.title===c.title)?.minWords||0,a.spec?.dynamicChapterRule.minWordsPerChapter||0,o?Math.min(900,Math.max(450,Math.floor(o/Math.max(1,x.length)*.35))):1200),0),C=o&&B>.92*o?Math.max(.45,.92*o/B):1;for(let{chapter:b,target:c}of A){let d=Math.floor(Math.max(Math.max(a.spec?.chapterRules.find(a=>a.id===b.id||a.title===b.title)?.minWords||0,a.spec?.dynamicChapterRule.minWordsPerChapter||0),o?Math.min(900,Math.max(450,Math.floor(o/Math.max(1,x.length)*.35))):1200)*C);z.set(b.id,Math.max(d,c))}let D=!!(h&&(s||"exact"===q)&&(o||v||0)>=4e4);return{targetPages:m,minPages:t,maxPages:u,targetChars:o,minChars:v,maxChars:w,charsPerPage:c,chapterTargets:z,source:n,mode:q,longformStrict:D}}function l(a,b){let c=a?.targetPages;if(!c?.min&&!c?.target&&!c?.max)return[];let e=d(b,a),f=c.min||c.target,g=c.max||c.target,h=[];return f&&e<f&&h.push({level:"warning",message:`正文篇幅低于目标页数:预计约 ${e} 页,目标不少于 ${f} 页`,suggestion:"建议增加章节正文深度,或根据实际需求调整目标页数。"}),g&&e>g+4&&h.push({level:"warning",message:`正文篇幅可能超过目标页数:预计约 ${e} 页,目标不超过 ${g} 页`,suggestion:"建议检查是否存在重复段落或过度展开。"}),h}function m(a,b){let{currentChars:c,estimatedPages:d}=function(a,b){let c=e(b),d=Math.ceil(c/a.charsPerPage);return{currentChars:c,estimatedPages:d}}(a,b),f=[];return a.minChars&&c<a.minChars&&f.push({level:"warning",message:`正文篇幅低于目标字数:当前 ${c} 字,目标不少于 ${a.minChars} 字`,suggestion:"建议继续扩写缺口章节,或根据实际需求调整目标字数/页数。"}),a.maxChars&&c>Math.ceil(1.12*a.maxChars)?f.push({level:"error",message:`正文篇幅超过目标字数区间:当前 ${c} 字,建议不超过 ${a.maxChars} 字`,suggestion:"请压缩重复段落、过细小节或过度展开内容后再导出。"}):a.maxChars&&c>a.maxChars&&f.push({level:"warning",message:`正文篇幅超过目标字数区间:当前 ${c} 字,建议不超过 ${a.maxChars} 字`,suggestion:"建议减少重复段落、过细小节或过度展开内容。"}),a.minPages&&d<a.minPages&&f.push({level:"warning",message:`正文篇幅低于目标页数:预计约 ${d} 页,目标不少于 ${a.minPages} 页`,suggestion:"建议继续扩写正文,或根据实际导出版式调整目标页数。"}),a.maxPages&&d>a.maxPages&&f.push({level:"warning",message:`正文篇幅超过目标页数区间:预计约 ${d} 页,建议不超过 ${a.maxPages} 页`,suggestion:"建议压缩过度展开内容或调整目标页数。"}),f}c.d(b,{Cv:()=>d,PE:()=>l,V7:()=>e,tF:()=>k,ty:()=>m})},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"]}}};