@customize-agent/server 4.18.12 → 4.19.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/BUILD_ID +1 -1
- package/.next/build-manifest.json +2 -2
- package/.next/prerender-manifest.json +3 -3
- package/.next/server/chunks/1153.js +10 -10
- package/.next/server/chunks/208.js +2 -2
- package/.next/server/chunks/6482.js +1 -1
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/pages/api/jobs/[id].js +2 -2
- package/.next/server/pages/api/jobs.js +2 -2
- package/.next/server/pages/api/kb/categories.js +2 -2
- package/.next/server/pages/api/kb/duplicates.js +2 -2
- package/.next/server/pages/api/kb/evaluate.js +2 -2
- package/.next/server/pages/api/kb/files/detail.js +2 -2
- package/.next/server/pages/api/kb/files/export.js +2 -2
- package/.next/server/pages/api/kb/files/open.js +2 -2
- package/.next/server/pages/api/kb/files/preview-pdf-page.js +2 -2
- package/.next/server/pages/api/kb/files/search.js +2 -2
- package/.next/server/pages/api/kb/files/tree.js +2 -2
- package/.next/server/pages/api/kb/files.js +2 -2
- package/.next/server/pages/api/kb/ignore.js +2 -2
- package/.next/server/pages/api/kb/operations.js +2 -2
- package/.next/server/pages/api/kb/search.js +2 -2
- package/.next/server/pages/api/kb/stats.js +2 -2
- package/.next/server/pages/api/kb/tags.js +2 -2
- package/.next/server/pages/api/kb/upload/progress.js +2 -2
- package/.next/server/pages/asset-library.html +1 -1
- package/.next/server/pages/document-roles.html +1 -1
- package/.next/server/pages/documents.html +1 -1
- package/.next/server/pages/guide.html +1 -1
- package/.next/server/pages/index.html +1 -1
- package/.next/server/pages/knowledge/file-detail.html +1 -1
- package/.next/server/pages/knowledge/files.html +1 -1
- package/.next/server/pages/knowledge/manage.html +1 -1
- package/.next/server/pages/knowledge.html +1 -1
- package/.next/server/pages/models.html +1 -1
- package/.next/server/pages/overview.html +1 -1
- package/.next/server/pages/prompt.html +1 -1
- package/.next/server/pages/settings.html +1 -1
- package/.next/server/pages/system/logs.html +1 -1
- package/.next/server/pages/template-references.html +1 -1
- package/.next/server/pages-manifest.json +30 -30
- package/package.json +2 -2
- /package/.next/static/{XjF8SxGPS8k6WzzUa5ij8 → p00KXPs-pVEuNVrAv2Vky}/_buildManifest.js +0 -0
- /package/.next/static/{XjF8SxGPS8k6WzzUa5ij8 → p00KXPs-pVEuNVrAv2Vky}/_ssgManifest.js +0 -0
|
@@ -17,10 +17,10 @@ ${c}`,{maxTokens:1200,temperature:0,disableThinkingBoost:!0});if(!d)return;retur
|
|
|
17
17
|
章节内容建议:${a.chapterRules.map(a=>`${a.title}${a.generationHint?`:${a.generationHint.replace(/\s+/gu," ")}`:""}`).join(";")||"以当前模板章节为准"}
|
|
18
18
|
质量提醒:${a.gateRules.map(a=>a.name).join("、")}`}},14070:(a,b,c)=>{function d(a){let b=a.split(/[,。;:、\s\d()()《》<>【】"“”'‘’\-/\\|,.:;]+/u).filter(Boolean),c=new Set;for(let a of b){let b=a.trim();if(b.length>=2&&c.add(b),b.length>=3)for(let a=0;a<=b.length-2;a++){let d=b.slice(a,a+2);d.length>=2&&!/^[a-zA-Z0-9]+$/u.test(d)&&c.add(d)}}return[...c]}function e(a,b,c=.3){return function(a,b){let c=new Set(d(a)),e=new Set(d(b));if(0===c.size||0===e.size)return 0;let f=0;for(let a of c)if(e.has(a))f+=1;else if(a.length>=2){for(let b of e)if(b.length>=2&&(b.includes(a)||a.includes(b))){f+=.5;break}}return f/Math.max(c.size,1)}(a,b)>=c}c.d(b,{C1:()=>e})},18274:(a,b,c)=>{c.d(b,{AM:()=>e,LT:()=>i,_W:()=>d,aX:()=>h,s2:()=>j,sv:()=>f,yw:()=>g});let d=/(?:\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,e=/\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,f=/\d|DN|φ|Φ|mm|cm|m²|m3|m³|MPa|kPa|℃|%|GB|JGJ|ISO|IEC|台|套|个|项|批|次|份|人|㎡|日历天|万元|元|型号|规格|数量|单位/iu,g=/\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.-]+|\d+\s*[×xX]\s*\d+/iu,h=/\d+(?:\.\d+)?\s*(?:m³|m3|m²|㎡|mm|cm|m\/s|m|km|MPa|kN|kN\/m²|kPa|℃|%|d|h|min|MΩ|t|次\/天)|[MC]\d{1,3}(?:\.\d+)?|[<>≤≥]\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,i=/\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,j=/\d+(?:\.\d+)?\s*(?:m²|㎡|m3|m³|mm|cm|m|km|kg|t|MPa|kPa|℃|%|日历天|天|层|台|套|个|项|次|份|人|小时)/giu},22157:(a,b,c)=>{c.d(b,{Jb:()=>h,Kd:()=>B,Sw:()=>j,TP:()=>A,Te:()=>z,V:()=>f,W6:()=>l,Ww:()=>w,Xl:()=>r,Z1:()=>g,_R:()=>i,c6:()=>x,dY:()=>o,hh:()=>C,jM:()=>q,jf:()=>E,l$:()=>D,lG:()=>y,wq:()=>m,wx:()=>n});var d=c(77598),e=c(78217);let f=/项目主要施工内容|主要分部分项工程施工方案|主要施工方法/u;function g(a){return!!a&&!!(/→|->|=>/u.test(a)||/按.{0,12}顺序|依次|先后|先.{0,12}(?:后|再|然后|最后)|顺序施工|流水顺序/u.test(a)||(a.match(/(?:^|\n)\s*(?:\d+[.、]|[((]\d+[))]|[一二三四五六七八九十]+[、.]|第[一二三四五六七八九十]+步)/gmu)||[]).length>=2||(a.match(/(?:^|\n)\s*(?:[-*•]|\d+\.)\s+\S/gmu)||[]).length>=2||/[\u4e00-\u9fa5]+(?:-|—|~|~)[\u4e00-\u9fa5]+(?:-|—|~|~)[\u4e00-\u9fa5]+/u.test(a))}function h(a){let b=/(?:施工)?(?:概况|范围)[::]\s*\S|工程量|作业对象|部位/u.test(a),c=/(?:施工)?(?:流程|工序|顺序)[::]\s*\S/u.test(a)||g(a),d=/(?:施工)?方法[::]\s*\S|工艺参数|验收标准|检测|试验|记录/u.test(a);return b&&c&&d}function i(a){return h(a)}function j(a){return a.replace(/^\d+(?:\.\d+)*[..]?\s*/u,"").replace(/[((][^()()]*[))]/gu,"").replace(/[\s::、。,,;;/|—-]/gu,"").replace(/工程$/u,"")}function k(a,b){return a.replace(/工程/gu,"")===b.replace(/工程/gu,"")}function l(a){let b=a.split(/\r?\n/u),c="",d=new Map,e=[];for(let a of b){let b=/^(#{2,6})\s+(.+)$/u.exec(a.trim());if(!b)continue;let f=b[1].length;if(2===f){c="";continue}if(3===f){c=b[2].trim();continue}if(4!==f)continue;let g=`${c}::${j(b[2].trim())}`;if(!g)continue;let h=(d.get(g)||0)+1;d.set(g,h),h>=2&&e.push(b[2].trim())}return e}function m(a){let b=a.split(/\r?\n/u),c=[],d="",e=new Set,f=!1;for(let a of b){let b=/^(#{2,6})\s+(.+)$/u.exec(a.trim());if(b){let g=b[1].length;if(g<=3&&(d=3===g?b[2].trim():"",e.clear()),f=!1,4===g){let g=`${d}::${j(b[2].trim())}`;if(!g){c.push(a);continue}if(e.has(g)){f=!0;continue}e.add(g)}c.push(a);continue}f||c.push(a)}return c.join("\n")}function n(a,b,c,d,e=[]){let f=j(b),g=new Set(c.map(j).filter(Boolean)),h=new Set(d.map(j).filter(Boolean)),i=new Set(e.map(j).filter(Boolean)),l=[];for(let b of a.split(/\r?\n/u)){let a=/^(#{3,4})\s+(.+)$/u.exec(b.trim());if(!a)continue;let c=a[2].trim(),d=j(c);if(d){if(3===a[1].length){d===f||k(d,f)||l.push(c);continue}!h.has(d)&&(g.has(d)||i.has(d))||l.push(c)}}return l}function o(a,b,c,d=[]){let e=j(b),f=new Set(c.map(j).filter(Boolean)),g=new Set(d.map(j).filter(Boolean)),h=[];for(let b of a.split(/\r?\n/u)){let a=/^(#{3,4})\s+(.+)$/u.exec(b.trim());if(a){let c=j(a[2].trim());if(3===a[1].length){(c===e||k(c,e))&&h.push(b);continue}if(c&&!f.has(c)&&!g.has(c))continue}h.push(b)}let i=h.join("\n");return/^###\s+\S+/mu.test(i.trim())?i:`### ${b}
|
|
19
19
|
|
|
20
|
-
${i}`.trim()}let p=new Set(["施工准备","施工要点","质量控制","质量要求","质量保证措施","质量控制措施","质量通病防治","安全措施","安全要求","安全管理措施","安全技术交底","技术交底","注意事项","验收要求","验收标准","成品保护","环境保护","文明施工","进度控制","工期保障","材料管理","机械管理","人员管理","组织管理","应急预案","应急措施","劳动力配置","机械设备配置"]);function q(a){let b=a.split(/\r?\n/u),c=[];for(let a=0;a<b.length;a+=1)/^##\s+/u.test(b[a].trim())&&c.push(a);if(0===c.length)return a;let d=new Set;for(let a=0;a<c.length;a+=1){let e=c[a],f=c[a+1]??b.length,g=new Set,h=[];for(let a=e;a<f;a+=1){let c=/^(#{3,4})\s+(.+)$/u.exec(b[a].trim());if(!c)continue;let d=j(c[2].trim());d&&(3===c[1].length?g.add(d):h.push({line:a,name:d}))}let i=new Map;for(let a of h){let c=i.get(a.name);i.set(a.name,a.line);let e=g.has(a.name),h=p.has(a.name);if(!(e||!h&&void 0!==c))continue;let j=f;for(let c=a.line+1;c<f;c+=1)if(/^#{2,4}\s+/u.test(b[c].trim())){j=c;break}for(let b=a.line;b<j;b+=1)d.add(b)}}return 0===d.size?a:b.filter((a,b)=>!d.has(b)).join("\n")}function r(a,b,c={}){if(!c.fuzzy){let c=s(a,b,/^###\s+(?:\d+(?:\.\d+)*\s+)?/u);return c||s(a,b,/^#{3,4}\s+(?:\d+(?:\.\d+)*\s+)?/u)}return function(a,b){let c=a.split("\n"),d=t(b).replace(/\s+/gu,"").toLowerCase(),g=[],h=-1,i=0,j=!1,k=a=>{if(h<0)return;let b=c.slice(h,a).join("\n").trim();b&&g.push(b),h=-1,i=0,j=!1};for(let a=0;a<c.length;a+=1){if(!/^\s*#{2,4}\s+/u.test(c[a]))continue;let e=/^\s*(#{2,4})\s+/u.exec(c[a])?.[1].length||3;if(h>=0&&(j||3===i)&&4===e)continue;k(a);let g=t(c[a]).replace(/\s+/gu,"").toLowerCase();(g===d||g.includes(d)||v(c[a],b))&&(h=a+1,i=e,j=e<=4&&f.test(c[a]))}return k(c.length),g.sort((a,b)=>(0,e.V7)(b)-(0,e.V7)(a))[0]||""}(a,b)}function s(a,b,c){let d=a.split("\n"),e=d.findIndex(a=>c.test(a.trim())&&a.includes(b));if(e<0)return"";let g=/^(#{2,6})\s+/u.exec(d[e].trim())?.[1].length||3,h=4===g&&f.test(b),i=d.length;for(let a=e+1;a<d.length;a+=1){let b=/^(#{2,6})\s+/u.exec(d[a].trim());if(b&&b[1].length<=g&&!(h&&b[1].length===g)){i=a;break}}return d.slice(e,i).join("\n")}function t(a){return a.replace(/^\s*#{2,4}\s*/u,"").replace(/^\s*(?:\d+(?:\.\d+)*|[一二三四五六七八九十]+)(?:[、..]|\s+)\s*/u,"").trim()}function u(a){return t(a).replace(/\s+/gu,"").toLowerCase().replace(/施工(?=方案|流程|方法)/gu,"").replace(/专项(?=方案)/gu,"").replace(/项目|工程|主要|重点|技术/gu,"").replace(/[、,,;;·..//]+/gu,"").replace(/与|及|和|暨/gu,"")}function v(a,b){let c=u(a),d=u(b);return!!c&&!!d&&!(c.length<4)&&!(d.length<4)&&(c===d||c.includes(d)||d.includes(c))}function w(a,b,c){let d=[...new Set(b.filter(Boolean))];if(0===d.length)return a;let e=3===c?/^\s*###\s+/u:4===c?/^\s*####\s+/u:/^\s*#{3,4}\s+/u,f=new Set;return a.split("\n").map(a=>{if(!e.test(a))return a;let b=t(a);if(!b)return a;let c=d.find(a=>!f.has(a)&&v(b,a));if(!c||c===b)return a;let g=/^(\s*#{3,4}\s+)/u.exec(a)?.[1];return g?(f.add(c),`${g}${c}`):a}).join("\n")}function x(a){return(0,d.createHash)("sha1").update(JSON.stringify(a)).digest("hex")}function y(a){if(null==a)return"";if("string"==typeof a)return a;if("number"==typeof a||"boolean"==typeof a)return String(a);try{return JSON.stringify(a)}catch{return String(a)}}function z(a){if(a?.aborted)throw Error("用户中止")}function A(a){return`【系统约束——仅指导写作,禁止写入正文,禁止复述本句】${a}`}let B=["评标纪律","投标纪律","行贿","打招呼","递条子","廉洁承诺","廉洁自律","串标","围标","弄虚作假","干扰评标","异常低价","评标基准价"];function C(a){return!!(B.some(b=>a.includes(b))||a.includes("廉洁从业"))||/纪律|廉洁/u.test(a)&&/投标|评标|行贿|串标|围标|弄虚作假/u.test(a)}async function D(a,b,c){if(0===a.length)return[];let d=Math.max(1,Math.min(a.length,c.concurrency||Math.max(1,{total:a.length,kind:c.kind,targetWords:c.targetWords,highRisk:c.highRisk}.total))),e=Array(a.length),f=0;return await Promise.all(Array.from({length:d},async()=>{for(;f<a.length;){let c=f;f+=1,e[c]=await b(a[c],c)}})),e}class E{constructor(a){this.queue=[],this.available=Math.max(1,Math.floor(a))}async acquire(){if(this.available>0){this.available-=1;return}await new Promise(a=>{this.queue.push(a)})}release(){let a=this.queue.shift();a?a():this.available+=1}async run(a){await this.acquire();try{return await a()}finally{this.release()}}}},23500:(a,b,c)=>{c.d(b,{bj:()=>B,N6:()=>N,h0:()=>J,bV:()=>K,QJ:()=>D,jG:()=>C,dU:()=>A,Bh:()=>E,zY:()=>Q,xm:()=>F,J5:()=>I,C1:()=>M});var d=c(73024),e=c(76760),f=c(48161),g=c(77598),h=c(44533),i=c(25840),j=c(8753),k=c(6444),l=c(85441),m=c(92808),n=c(56942),o=c(2773),p=c(78217),q=c(5726);function r(){let a=e.join(f.homedir(),".customize-agent");return d.mkdirSync(a,{recursive:!0}),a}function s(){return e.join(r(),"document-templates.json")}function t(a){let{version:b,updatedAt:c,changeLog:d,...e}=a;return(0,g.createHash)("sha256").update(function a(b){return Array.isArray(b)?`[${b.map(a).join(",")}]`:b&&"object"==typeof b?`{${Object.keys(b).sort().map(c=>`${JSON.stringify(c)}:${a(b[c])}`).join(",")}}`:JSON.stringify(b)}(e)).digest("hex")}function u(a){return{...a,id:a.id.replace(/[^a-zA-Z0-9_-]/gu,"-").slice(0,80)||`template-${Date.now()}`,name:a.name||"未命名模板",description:a.description||"",category:a.category||"自定义",outputTitle:a.outputTitle||a.name||"文档",version:Number.isFinite(a.version)&&a.version>0?Math.floor(a.version):1,updatedAt:Number.isFinite(a.updatedAt)?a.updatedAt:Date.now(),changeLog:Array.isArray(a.changeLog)?a.changeLog.filter(a=>a&&"object"==typeof a&&Number.isFinite(a.version)&&"string"==typeof a.summary).slice(0,50):[],projectRoleConfigId:a.projectRoleConfigId||void 0,chapters:Array.isArray(a.chapters)&&a.chapters.length>0?a.chapters.map((a,b)=>({id:(a.id||`chapter-${b+1}`).replace(/[^a-zA-Z0-9_-]/gu,"-").slice(0,80),title:a.title||`第 ${b+1} 章`,purpose:a.purpose||"",queries:Array.isArray(a.queries)?a.queries.filter(Boolean):[],requiredFacts:Array.isArray(a.requiredFacts)?a.requiredFacts.filter(Boolean):[],sections:Array.isArray(a.sections)?a.sections.filter(Boolean):[],tableSections:Array.isArray(a.tableSections)?a.tableSections.filter(Boolean):[],tableRequirements:Array.isArray(a.tableRequirements)?a.tableRequirements.filter(Boolean):[],tablePlans:Array.isArray(a.tablePlans)?a.tablePlans:[],pinnedEvidenceFilePaths:Array.isArray(a.pinnedEvidenceFilePaths)?a.pinnedEvidenceFilePaths.filter(Boolean):[]})):[{id:"document",title:a.outputTitle||a.name||"文档",purpose:a.description||"",queries:[],requiredFacts:[]}],exportSettings:a.exportSettings,generationSettings:a.generationSettings,promptIds:Array.isArray(a.promptIds)?a.promptIds.filter(Boolean):[],projectBindings:Array.isArray(a.projectBindings)?a.projectBindings.filter(a=>a.materialRootPath).map(a=>({materialRootPath:a.materialRootPath.replace(/^\/+|\/+$/gu,"")})):(0,o.qp)(a),promptBindings:Array.isArray(a.promptBindings)?a.promptBindings.filter(a=>a.promptId&&a.roleId):Array.isArray(a.promptIds)?a.promptIds.filter(Boolean).map(a=>({promptId:a,roleId:"chapter_generation"})):[],builtIn:!1}}function v(){try{let a=s();if(!d.existsSync(a))return[];let b=JSON.parse(d.readFileSync(a,"utf-8"));if(!Array.isArray(b))return d.renameSync(a,`${a}.corrupt-${Date.now()}`),[];return b.map(u)}catch{try{let a=s();d.existsSync(a)&&d.renameSync(a,`${a}.corrupt-${Date.now()}`)}catch{}return[]}}function w(a){d.writeFileSync(s(),JSON.stringify(a.map(u),null,2),"utf-8")}function x(a){return(0,g.createHash)("sha256").update(a).digest("hex").slice(0,12)}function y(a){return a.replace(/\s+/gu," ").trim().slice(0,160)}function z(a){let b=function(){try{let a=JSON.parse(d.readFileSync(e.join(r(),"prompts.json"),"utf-8"));return Array.isArray(a.customPrompts)?a.customPrompts:[]}catch{return[]}}();if(a.startsWith("custom:")){let c=b.find(b=>b.id===a);return c?{id:a,name:c.name,content:c.content,source:"custom"}:void 0}if(a.startsWith("file:")){let b=a.slice(5);if(d.existsSync(b))return{id:a,name:e.basename(e.dirname(b))||b,content:d.readFileSync(b,"utf-8"),source:"file"}}}function A(a=[]){if(0===a.length)return[];let b=[];for(let c of a){let a=z(c.promptId);a&&b.push({...a,roleId:c.roleId,contentHash:x(a.content),contentPreview:y(a.content)})}return b}function B(a){let b=O(a),c=(0,i.XB)("prompt"),d=Q(a),e=[],f=[];if(b)for(let a of b.promptRoles){let b=c.find(b=>b.id===a.roleId);if(!b){e.push(a.roleId);continue}0===(b.resourceIds?.length?b.resourceIds:b.resourceId?[b.resourceId]:[]).length&&f.push(a.roleId)}let g=P(d),h=[];for(let a of g){let d=z(a.promptId);if(!d)continue;let e=c.find(b=>b.id===a.roleId),f=b?.promptRoles.find(b=>b.roleId===a.roleId),g=e?.executionType||function(a){var b;return b=a,/extract|extraction|抽取|清单|图纸|品牌/u.test(b)?"fact_extraction":/validation|校验|审查|审核/u.test(b)?"validation":/format|排版/u.test(b)?"formatting":/writer|method|schedule|quality|resource|safety|dangerous|施工|进度|质量|资源|安全|危大/u.test(b)?"chapter_generation":"reference"}(a.roleId),i=function(a,b,c=""){let d=`${a} ${b} ${c}`;return/extract|extraction|抽取|清单|图纸|品牌|识别/u.test(d)?"extraction":/format|排版/u.test(d)?"formatting":/总控|writer|施工组织设计总控|写作主控/u.test(d)?"writer":/chapter_generation|method|schedule|quality|resource|safety|dangerous|施工|进度|质量|资源|安全|危大/u.test(d)?"chapter":"reference"}(a.roleId,g,d.name),j=`projectRole:${b?.id||"unknown"}:${a.roleId}:order=${f?.order??0}`;h.push({...d,roleId:a.roleId,contentHash:x(d.content),contentPreview:y(d.content),executionType:g,category:i,bindingSource:j,roleConfigId:b?.id,roleName:e?.name,order:f?.order})}return{bindings:g,prompts:h,writerPrompts:h.filter(a=>"writer"===a.category),chapterPrompts:h.filter(a=>"chapter"===a.category),extractionPrompts:h.filter(a=>"extraction"===a.category),formattingPrompts:h.filter(a=>"formatting"===a.category),referencePrompts:h.filter(a=>"reference"===a.category),unresolvedRoles:[...new Set(e)],missingResourceRoles:[...new Set(f)]}}function C(){let a=(0,j.V)().templates,b=v().filter(b=>!a.some(a=>a.id===b.id));return[...a,...b]}function D(a){return C().find(b=>b.id===a)}function E(a){let b,c,d=u(a),e=v().find(a=>a.id===d.id),f=Date.now();if(e&&t(e)!==t(d)){b=(e.version||0)+1;let a=d.chapters.map(a=>a.title).join("、");c=[{version:b,timestamp:f,summary:a?`章节结构调整:${a.slice(0,80)}${a.length>80?"…":""}`:"模版内容已更新"},...e.changeLog||[]].slice(0,50)}else e?(b=e.version||1,c=e.changeLog||[]):(b=1,c=[{version:1,timestamp:f,summary:"创建模版"}]);let g={...d,version:b,updatedAt:f,changeLog:c},h=v().filter(a=>a.id!==d.id);return h.push(g),w(h),g}async function F(a,b=(0,h.aY)(),d={}){let f,g,j,r,s=D(a),t=[];if(!s)return{issues:[{level:"error",message:"文档模板不存在或已删除"}],fileDiagnostics:[],promptDiagnostics:[],roleDiagnostics:[],readiness:void 0,strategyPreview:void 0,config:void 0};let u=(0,i.XB)("prompt"),v=N(s),w=O(s);v||t.push({level:"error",message:"模板未绑定项目角色配置,且未匹配到自动专业角色配置"}),v&&!w&&t.push({level:"error",message:`项目角色配置不存在或已删除:${v}`}),s.promptIds?.length&&t.push({level:"warning",message:"模板存在旧 promptIds 字段残留,该字段已不参与生成,请清理模板历史数据。"}),s.promptBindings?.length&&t.push({level:"warning",message:"模板存在旧 promptBindings 字段残留,该字段已不参与生成,请清理模板历史数据。"});let x=Q(s),y=(0,o.qp)(s);w&&0===w.promptRoles.length&&t.push({level:"error",message:"项目角色配置未配置提示词角色。"}),w&&w.promptRoles.length>0&&0===x.length&&t.push({level:"error",message:"项目角色配置中的提示词角色未绑定任何有效提示词资源。"});let z=e.resolve(b),B=(0,h.Yy)(z),C=function(a,b){if(0===a.length)return[];let c=new Set(b.map(a=>a.relativePath)),d=[],e=new Set;for(let f of a){let a=f.materialRootPath.replace(/^\/+|\/+$/gu,"");for(let f of c.has(a)?[a]:b.filter(b=>{var c;return b.relativePath.startsWith(`${a}/`)&&"disk"!==(c=b).status&&"error"!==c.status&&Number(c.indexedAt||0)>0&&Number(c.chunkCount||0)>0}).map(a=>a.relativePath))e.has(f)||(e.add(f),d.push(f))}return d}(y,B);if(0===y.length?t.push({level:"error",message:"模板未绑定项目资料包,请先选择需要参与生成的项目文件夹。"}):0===C.length&&t.push({level:"error",message:"模板绑定的项目资料包不存在或没有可用索引文件,请重新选择项目资料包。"}),s&&(f=(0,l.P)(z,{requirement:d.requirement,boundFilePaths:C}),0===y.length&&!f.source.ambiguous&&f.source.selectedFiles>0)){let a=t.findIndex(a=>"error"===a.level&&"模板未绑定项目资料包,请先选择需要参与生成的项目文件夹。"===a.message);a>=0&&t.splice(a,1)}let E=new Map(B.map(a=>[a.relativePath,a])),G=[],H=C.map(a=>{let b=E.get(a);return b||t.push({level:"error",message:`知识库文件不存在:${a}`}),b&&("disk"===b.status||0===b.indexedAt)&&G.push({level:"warning",message:`知识库文件存在但尚未完成索引:${a}`}),b?.status==="error"&&t.push({level:"warning",message:`知识库文件索引失败:${a}${b.errorMessage?`,${b.errorMessage}`:""}`}),b&&0===b.chunkCount&&t.push({level:"warning",message:`知识库文件暂无可检索内容切片:${a}`}),{filePath:a,roleId:"project_material",roleName:"项目资料包",exists:!!b,indexed:!!(b&&b.indexedAt>0&&"disk"!==b.status),chunkCount:b?.chunkCount??0,vectorReady:!!(b&&b.chunkCount>0)}}),I=H.filter(a=>a.exists).length,J=H.filter(a=>a.exists&&!a.indexed).length;I>0&&J===I?t.push({level:"error",message:`模板绑定的项目资料包(${I} 份文件)均尚未完成解析入库,请等待后台索引完成后再运行模板`}):t.push(...G);let K=A(x),L=new Set(w?.promptRoles.map(a=>a.roleId)||[]);for(let a of w?.promptRoles||[]){let b=u.find(b=>b.id===a.roleId);if(!b){t.push({level:"error",message:`提示词角色不存在:${a.roleId}`});continue}0===(b.resourceIds?.length?b.resourceIds:b.resourceId?[b.resourceId]:[]).length&&t.push({level:"error",message:`提示词角色未绑定资源:${b.name}`})}let M=x.map(a=>{let b=u.find(b=>b.id===a.roleId),c=K.find(b=>b.id===a.promptId);return b||t.push({level:"error",message:`提示词角色不存在:${a.roleId}`}),L.has(a.roleId)||t.push({level:"error",message:`提示词绑定不属于当前项目角色配置:${a.roleId}`}),c||t.push({level:"error",message:`提示词不存在:${a.promptId}`}),c&&!c.content.trim()&&t.push({level:"warning",message:`提示词为空:${c.name}`}),{...a,roleName:b?.name,promptTitle:c?.name,promptSource:c?.source,contentLength:c?.content.length??0,contentHash:c?.contentHash,contentPreview:c?.contentPreview,exists:!!c}}),P=(w?.promptRoles||[]).map(a=>{let b=u.find(b=>b.id===a.roleId),c=b?b.resourceIds?.length?b.resourceIds:b.resourceId?[b.resourceId]:[]:[],d=x.filter(b=>b.roleId===a.roleId).map(a=>a.promptId),e=b?0===c.length?"missing_resource":0===d.length?"missing_prompt":"ok":"role_missing";return{roleId:a.roleId,roleName:b?.name,order:a.order,resourceIds:c,boundPromptIds:d,status:e}});if(K.length>1)try{let{detectPromptRuleConflicts:a}=await c.e(1001).then(c.bind(c,71001));for(let b of a(K.map(a=>({promptId:a.id,name:a.name,roleId:a.roleId,content:a.content}))))t.push({level:b.level,message:`提示词规则冲突:${b.message}`})}catch{}if(s){let a=f||(0,l.P)(z,{requirement:d.requirement,boundFilePaths:C}),b=function(a,b){let c=function(a,b){let c=[a.name,a.category,a.description,a.outputTitle,...a.chapters.flatMap(a=>[a.title,a.purpose])].join("\n"),d=new Set(["project_overview","scope_description"]);return/需求|规则|响应|方案|实施|专项|安全|质量|进度|合规|施工组织|技术标/iu.test(c)&&["requirement_document","structured_data"].forEach(a=>d.add(a)),(/安全|质量|进度|工期|文明|环保|验收/iu.test(c)||b.materialInventory.schedule_quality_safety.length>0)&&d.add("schedule_quality_safety"),(/设计|图纸|平面|立面|剖面|做法/iu.test(c)||b.materialInventory.design_specification.length>0)&&d.add("design_specification"),(/风险|重点|难点|约束|现场|危大/iu.test(c)||b.materialInventory.risk_constraints.length>0)&&d.add("risk_constraints"),d}(a,b);return[...new Set([...function(a){let b=[a.name,a.description,a.outputTitle,...a.chapters.flatMap(a=>[a.title,a.purpose,...a.requiredFacts||[],...a.queries||[]])].join("\n"),c=new Set((0,m.t0)(b,m.hW));return c.add("project_overview"),c.add("scope_description"),[...c]}(a),...c])].map(a=>{let d=b.materialInventory[a]||[],e=c.has(a),f=d.length>0,g=f&&d.length<(e?2:1);return{role:a,required:e,satisfied:f,weak:g,evidenceCount:d.length,filePaths:d.map(a=>a.filePath),reason:f?`已匹配 ${d.length} 个资料文件`:e?"必需资料角色缺失":"可选资料角色缺失"}})}(s,a);for(let c of(g=(0,n.$)({template:s,spec:(0,k.x)(s).spec,summary:a,resolvedRoles:b})).blockingIssues)t.push({level:"error",message:`生成准备度不足:${c}`});for(let a of g.warnings)t.push({level:"warning",message:a})}try{let a=(0,k.x)(s).spec,{effectiveTemplateChapters:b}=await Promise.resolve().then(c.bind(c,70208)),e=b(s,a),f=s.generationSettings||s.exportSettings,g=(0,p.q6)(s.exportSettings||s.generationSettings),h=(0,p.py)(d.requirement||""),i=f?.targetPages?.target||f?.targetPages?.min,l=h.targetChars||(h.targetPages?h.targetPages*g:void 0)||(i?i*g:void 0),m=e.reduce((b,c)=>b+Math.max(a.chapterRules.find(a=>a.id===c.id||a.title===c.title)?.minWords||0,a.dynamicChapterRule.minWordsPerChapter||0),0),n=Math.round(l||m||1200*e.length),o=C.reduce((a,b)=>a+(E.get(b)?.chunkCount??0),0),{previewGenerationBudgetForTemplate:q}=await Promise.all([c.e(1001),c.e(6482),c.e(9227)]).then(c.bind(c,79227));j=q({template:s,chapters:e,requirement:d.requirement,materialFileCount:C.length,evidenceCount:o,targetWords:n,hasVeryLargeExplicitChapter:e.some(a=>(a.sections||[]).filter(Boolean).length>=30),configuredChapterConcurrency:Number(process.env.DOCUMENT_CHAPTER_CONCURRENCY||0)})}catch{}try{r=(0,q.ze)({templateName:s.name,chapterTitles:s.chapters.map(a=>a.title)})}catch{}return{templateId:a,projectRoleConfigId:v,configName:w?.name,fileDiagnostics:H,promptDiagnostics:M,roleDiagnostics:P,readiness:g,issues:t,strategyPreview:j,referenceStructureSuggestion:r}}let G=new Map,H=Math.max(5e3,Number(process.env.DOCUMENT_TEMPLATE_VALIDATION_CACHE_TTL_MS??3e4));async function I(a,b=(0,h.aY)(),c={}){let d=e.resolve(b),f=D(a),g=(0,h.Yy)(d),i=JSON.stringify({templateId:a,templateVersion:f?.version??0,templateUpdatedAt:f?.updatedAt??0,projectRoot:d,requirement:c.requirement??"",fileCount:g.length,lastFileMtime:g.reduce((a,b)=>Math.max(a,b.mtime),0)}),j=G.get(i);if(j&&Date.now()-j.at<H)return j.result;let k=await F(a,d,c);return G.set(i,{at:Date.now(),result:k}),k}function J(a){if(new Set((0,j.V)().templates.map(a=>a.id)).has(a))throw Error("Configured template cannot be deleted");w(v().filter(b=>b.id!==a))}function K(a){let b=D(a);if(!b)throw Error("Document template not found");let c=Date.now(),d=u({...b,id:`${b.id}-copy-${c}`,name:`${b.name} Copy`,builtIn:!1,version:1,updatedAt:c,changeLog:[{version:1,timestamp:c,summary:`从 ${b.id} v${b.version||1} 复制`}]}),e=v();return e.push(d),w(e),d}function L(a,b){try{return RegExp(b,"iu").test(a)}catch{return a.includes(b)}}function M(a,b){return(function(a){let b=`${a.name} ${a.category} ${a.outputTitle} ${a.description}`;return(0,j.V)().chapterTitleFilters.filter(a=>a.templateMatchers.some(a=>L(b,a)))})(b).some(b=>!!b.minLength&&a.length<b.minLength||!!b.maxLength&&a.length>b.maxLength||b.forbiddenPatterns.some(b=>L(a,b)))}function N(a){return a.projectRoleConfigId||void 0}function O(a){let b=N(a);return b?(0,i.Mu)(b):void 0}function P(a){let b=new Set,c=[];for(let d of a){let a=`${d.roleId}:${d.promptId}`;!d.promptId||!d.roleId||b.has(a)||(b.add(a),c.push(d))}return c}function Q(a){let b=O(a);if(!b)return[];let c=(0,i.XB)("prompt"),d=[];for(let a of[...b.promptRoles].sort((a,b)=>a.order-b.order)){let b=c.find(b=>b.id===a.roleId),e=b?b.resourceIds?.length?b.resourceIds:b.resourceId?[b.resourceId]:[]:[];b&&0!==e.length&&d.push(...e.map(a=>({promptId:a,roleId:b.id})))}return P(d)}},28103:(a,b,c)=>{c.d(b,{WT:()=>x,aF:()=>w,cG:()=>e});var d=c(52922);let e=["房建","市政","公路","桥梁与隧道","水利水电","电力","机电安装","装饰装修","园林绿化","铁路","港口与航道","矿山冶金","其他"],f=/(?:\d+(?:\.\d+)?\s*(?:mm|cm|m|㎡|m²|m2|m3|m³|kg|t|MPa|kPa|kN|V|KV|kV|A|天|%)(?![a-zA-Z\u4e00-\u9fa5])|\d+(?:\.\d+)?\s*(?:米|厘米|毫米|吨|千克|公斤|平方米|立方米)(?!\d)|(?:养护|搭接长度|试验压力|间距|偏差|坡度|含水率|压实度|强度等级|标号|厚度|宽度|高度|深度|直径|桩长|桩径))/gu,g=/→|->|=>|按.{0,12}顺序|依次|先后|先.{0,10}后|顺序施工|流水顺序|[\u4e00-\u9fa5]+(?:-|—|~|~)[\u4e00-\u9fa5]+(?:-|—|~|~)[\u4e00-\u9fa5]+/u,h=/^(?:[一二三四五六七八九十\d]+[、..]?\s*)?[\u4e00-\u9fa5()()、,A-Za-z0-9+\-·\s]{2,28}(?:表|清单)(?:[::]|\s*$)/mu,i=/^第([一二三四五六七八九十百千\d]+)[章篇][、..]?\s*(.{2,60})$/mu,j=/^\d+[、..](?!\d)\s*(.{2,20})$/mu,k=/^[一二三四五六七八九十]+[、..]\s*(.{2,20})$/mu,l=/^第[一二三四五六七八九十\d]+[节条][、..]?\s*(.{2,30})$/mu,m=/^(?:[一二三四五六七八九十]+、\s*(.{2,20})|[((][一二三四五六七八九十\d]+[))]\s*(.{2,20})|\d+\.\d+(?:\.\d+)*[、..\s]\s*(.{2,20}))$/mu,n=/\.{4,}|\.{2,}\s*\d{1,3}\s*$|—\d+—|第\s*\d+\s*页|^\d{1,3}$/u,o=/[,、;:]/u,p=/[,。;:?!]/u;function q(a){return a.trim().replace(/^(?:#+\s*)+/u,"").trim()}function r(a){return a.replace(/[\s..·]+\d{1,3}$/u,"").replace(/\s+/gu,"").trim()}function s(a){return a.length>=2&&!o.test(a)&&!/[。,;]$/u.test(a)}function t(a){if(/^\d+$/u.test(a))return Number.parseInt(a,10);let b={零:0,一:1,二:2,三:3,四:4,五:5,六:6,七:7,八:8,九:9},c=0,d=0,e=!1;for(let f of a){if("十"===f){c+=10*(d||1),d=0,e=!0;continue}if("百"===f){c+=100*(d||1),d=0,e=!0;continue}if("千"===f){c+=1e3*(d||1),d=0,e=!0;continue}let a=b[f];if(void 0===a)return Number.MAX_SAFE_INTEGER;d=a,e=!0}return e?c+d:Number.MAX_SAFE_INTEGER}let u=/(?:养护|搭接长度|试验压力|间距|偏差|坡度|含水率|压实度|强度等级|标号|厚度|宽度|高度|深度|直径|桩长|桩径)/gu,v=/(?:\d+(?:\.\d+)?\s*(?:mm|cm|m|㎡|m²|m2|m3|m³|kg|t|MPa|kPa|kN|V|KV|kV|A|天|%)(?![a-zA-Z\u4e00-\u9fa5])|\d+(?:\.\d+)?\s*(?:米|厘米|毫米|吨|千克|公斤|平方米|立方米)(?!\d))/gu;function w(a){let b,c=[["市政",/市政|管网|排水|给水|雨污|污水|燃气/gu],["公路",/公路|路基|路面|沥青/gu],["桥梁与隧道",/桥梁|隧道/gu],["水利水电",/水利|河道|灌溉|防洪/gu],["电力",/电力|供配电|电压|电缆/gu],["机电安装",/机电|暖通|通风|空调|消防|给排水|智能化|电梯/gu],["装饰装修",/装饰|装修|幕墙/gu],["园林绿化",/园林|绿化|景观|苗木/gu],["铁路",/铁路|轨道/gu],["港口与航道",/港口|航道/gu],["矿山冶金",/矿山|冶金/gu],["房建",/房建|建筑|住宅|楼|结构|砌体|基坑|地下室|主体|层高|户型|公共建筑|产业园|厂房/gu]].map(([b,c])=>(c.lastIndex=0,{type:b,count:(a.match(c)||[]).length})).sort((a,b)=>b.count-a.count),d=c[0],e=0,f=0;for(let[c,d]of[["房建",/产业园|标准厂房|安置房|住宅小区|保障房|卫生院|门诊楼|办公楼/gu],["市政",/老旧小区|海绵城市|雨污分流|管网改造|管廊/gu],["桥梁与隧道",/桥梁|隧道|盾构|箱梁|斜拉|悬索|涵洞/gu],["公路",/公路|路基|路面|沥青|桩号|互通|匝道/gu],["水利水电",/堤防|水库|泵站|水闸|疏浚|节制闸|水电站|大坝|围堰/gu],["电力",/变电站|输电线路|配电|GIS设备|电缆|架空线路|铁塔|箱变/gu],["铁路",/铁路|轨道|道床|站台|信号机|接触网/gu],["港口与航道",/港口|码头|航道|护岸|堆场|泊位/gu],["矿山冶金",/矿山|矿井|选矿|冶炼|尾矿|轧钢/gu]]){d.lastIndex=0;let g=(a.match(d)||[]).length;g>=3&&g>e?(f=e,b=c,e=g):g>f&&(f=g)}if(b){if(f>0&&e<2*f&&d&&d.count>e)return d.type;let a=c.find(a=>a.type===b)?.count||0;return d&&d.type!==b&&d.count>2*a&&d.count>=2*e?d.type:b}return d&&d.count>0?d.type:"其他"}async function x(a){let b=a.replace(/\s/gu,"").length,c=a.split(/\n+/u).map(a=>a.replace(/\s+/gu," ").trim()).filter(a=>a.length>=16&&/[\u4e00-\u9fa5]/u.test(a)),e=c.reduce((a,b)=>a+b.replace(/\s/gu,"").length,0),o=(a.match(f)||[]).length,w=c.filter(a=>g.test(a)).length,x=function(a){let b=0,c=a.split(/\n+/u);for(let a=0;a<c.length;a+=1){let d=q(c[a]||"");if(d){if(h.test(d)||/^┌─/u.test(d)){b+=1;continue}if(/^\|.*\|.*\|$/u.test(d)){let d="";for(let b=a-1;b>=0&&b>=a-3;b-=1){let a=q(c[b]||"");if(a){d=a;break}}/^\|.*\|.*\|$/u.test(d)||h.test(d)||(b+=1)}}}return b}(a),{headings:y,useCnAsChapter:z}=function(a){let b,c=new Map,d=[],e=[],f=a.split(/\n+/u);for(let a=0;a<f.length;a+=1){let b=q(f[a]);if(!b||n.test(b))continue;let d=i.exec(b);if(d){let b=r(d[2]||"");b.length>=2&&!p.test(b)&&c.set(d[1],function(a,b,c){if(a.length<20)return a;let d=q(b[c+1]||"");if(d.length<2||d.length>15||!/[\u4e00-\u9fa5]/u.test(d)||n.test(d)||i.test(d)||l.test(d)||m.test(d)||j.test(d)||k.test(d))return a;let e=a+d;return e.length<=60?e:a}(b,f,a));continue}let g=k.exec(b);if(g){let a=r(g[1]||"");s(a)&&e.push(a)}}if(0===c.size)for(let a of f){let b=q(a);if(!b||n.test(b))continue;let c=j.exec(b);if(c){let a=r(c[1]||"");s(a)&&d.push(a)}}let g=!1;return c.size>0?b=[...c.entries()].sort((a,b)=>t(a[0])-t(b[0])).map(([,a])=>a):d.length>=2?b=d:(b=e,g=!0),{headings:[...new Set(b)],useCnAsChapter:g}}(a),A=y.length,{subsectionCount:B,subitemCount:C}=function(a,b){let c=0,d=0;for(let e of a.split(/\n+/u)){let a=q(e);if(!a||n.test(a))continue;let f=l.exec(a);if(f){s(r(f[1]||""))&&(c+=1);continue}let g=m.exec(a);if(g){if(!s(r(g[1]||g[2]||g[3]||""))||b&&void 0!==g[1])continue;d+=1}}return{subsectionCount:c,subitemCount:d}}(a,z),D=new Map;for(let a of c){let b=a.replace(/[\d\s,。、;:""''()()%…—\-·]/gu,"");b.length<8||D.set(b,(D.get(b)||0)+1)}let E=0;for(let a of D.values())a>1&&(E+=a);let F=await (0,d.Pm)(a);return{wordCount:b,effectiveWordCount:e,paramDensity:e>0?1e3*o/e:0,paramCount:o,arrowChainCoverage:c.length>0?w/c.length:0,duplicationRate:c.length>0?E/c.length:0,tableCount:x,sectionCount:A,subsectionCount:B,subitemCount:C,avgSectionWords:A>0?Math.round(e/A):0,headingStructure:y,tableTitles:function(a){let b=[];for(let c of a.split(/\n+/u)){let a=q(c);a&&!(a.length>40)&&!(a.length<3)&&h.test(a)&&b.push(a)}return[...new Set(b)]}(a),paramTokens:function(a){let b=new Map;for(let c of a.match(u)||[])b.set(c,(b.get(c)||0)+1);let c=(a.match(v)||[]).length;return c>0&&b.set("数值参数(数字+单位)",(b.get("数值参数(数字+单位)")||0)+c),[...b.entries()].map(([a,b])=>({token:a,count:b})).sort((a,b)=>b.count-a.count)}(a),segmentCount:c.length,arrowChainSegmentCount:w,duplicatedSegmentCount:E,fiveElementCompleteBlocks:F.completeBlocks}}},29281:(a,b,c)=>{c.d(b,{I:()=>f});var d=c(96770);let e=null;function f(){return e||(e=new d.ConfigStore),e}},37047:(a,b,c)=>{c.d(b,{Bd:()=>k,Eh:()=>g,Mv:()=>n,VN:()=>f});var d=c(19898);let e=null;function f(){return e||(e=new d.LocalTransformersEmbeddingProvider({})),e}let g=.6,h=new Map,i=0,j=0;function k(){return{embedCacheHits:i,embedCacheMisses:j}}async function l(a,b){let c=b?await b(a):await f().embedDocuments(a);if(c.length!==a.length)throw Error(`本地语义模型嵌入数量不一致:期望 ${a.length} 条,实际 ${c.length} 条`);return c}async function m(a,b){if("0"===process.env.DOCUMENT_EMBED_CACHE)return l(a,b);let c=Array(a.length),d=[],e=new Map;for(let b=0;b<a.length;b+=1){let f=a[b];if(f.length<=2e3){let a=h.get(f);if(a){c[b]=a,i+=1,h.delete(f),h.set(f,a);continue}}let g=e.get(f);g?g.push(b):(e.set(f,[b]),d.push(f))}if(0===d.length)return c;let f=await l(d,b),g=function(){let a=Number(process.env.DOCUMENT_EMBED_CACHE_SIZE||4e4);return Number.isFinite(a)&&a>0?a:4e4}();for(let a=0;a<d.length;a+=1){let b=d[a],i=f[a],k=e.get(b);for(let a of k)c[a]=i;if(b.length<=2e3&&(j+=k.length,h.set(b,i),h.size>g)){let a=h.keys().next().value;void 0!==a&&h.delete(a)}}return c}async function n(a,b,c){if(0===a.length||0===b.length)return()=>0;let d=[...a,...b],e=await m(d,c),f=new Map;for(let a=0;a<d.length;a++)f.has(d[a])||f.set(d[a],e[a]);return(a,b)=>{let c=f.get(a),d=f.get(b);if(!c||!d)return 0;let e=Math.min(c.length,d.length),g=0;for(let a=0;a<e;a++)g+=c[a]*d[a];return g}}},41991:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(37047);function e(a,b){let c=Math.min(a.length,b.length),d=0;for(let e=0;e<c;e++)d+=a[e]*b[e];return d}async function f(a){if(0===a.prototypes.length)return async a=>a.map(()=>!1);let b=a.threshold??d.Eh,c=a.negativePrototypes??[],f=[...a.prototypes,...c],g=a.prototypes.length,h=a.embedDocuments?null:(0,d.VN)(),i=a.embedDocuments?await a.embedDocuments(f):await h.embedDocuments(f);if(i.length!==f.length)throw Error(`本地语义模型嵌入数量不一致:期望 ${f.length} 条,实际 ${i.length} 条`);return async d=>{if(0===d.length)return[];let f=d.map(()=>!1),j=d.map((b,c)=>a.lexicalHints&&!a.lexicalHints.test(b)?-1:c).filter(a=>a>=0);if(0===j.length)return f;let k=j.map(a=>d[a]),l=a.embedDocuments?await a.embedDocuments(k):await h.embedDocuments(k);return j.forEach((a,d)=>{let h=l[d];if(!h)return;let j=Math.max(...i.slice(0,g).map(a=>e(h,a))),k=c.length?Math.max(...i.slice(g).map(a=>e(h,a))):0;j>=b&&(0===c.length||j>k)&&(f[a]=!0)}),f}}},44533:(a,b,c)=>{c.d(b,{NW:()=>j,Qh:()=>k,VS:()=>o,Yy:()=>n,a2:()=>i,aY:()=>m});var d=c(19898),e=c(33873),f=c(21820),g=c(29021);let h=null;function i(){return e.join(f.homedir(),".customize-agent")}function j(a){return(0,d.getProjectKbPath)(e.resolve(a))}function k(){return h||(h=new d.MultiProjectManager(i())),h}function l(a){let b=e.resolve(a),c=e.resolve(e.join(f.homedir(),".customize-agent"));return!(g.existsSync(e.join(b,"pnpm-workspace.yaml"))&&g.existsSync(e.join(b,"apps","server")))&&(b===c||b.includes(`${e.sep}.customize-agent${e.sep}`)||b.endsWith(`${e.sep}apps${e.sep}server`)||b.endsWith(`${e.sep}apps${e.sep}cli`))}function m(){let a=process.env.CUSTOMIZE_PROJECT_ROOT??process.env.INIT_CWD;if(a&&g.existsSync(a)&&!l(a))return e.resolve(a);let b=function(){let a=e.join(i(),"projects","registry.db");if(!g.existsSync(a))return[];let b=new((0,d.loadBetterSqlite3)())(a,{readonly:!0});try{return b.prepare("SELECT project_root FROM project_registry ORDER BY last_opened_at DESC").all().map(a=>e.resolve(a.project_root)).filter(a=>!l(a))}finally{b.close()}}();return b.length>0?b[0]:process.env.INIT_CWD&&!l(process.env.INIT_CWD)?process.env.INIT_CWD:e.resolve(process.cwd(),"../..")}function n(a,b={}){let c=new Map;for(let b of function(a){let b=e.join(f.homedir(),".customize-agent","projects",(0,d.computeProjectId)(e.resolve(a)),"kb.db");if(!g.existsSync(b))return[];let c=new d.IndexStateStore(b);try{return c.listRecords().map(a=>({...a,matchedBy:"metadata"}))}finally{c.close()}}(a))c.set(b.relativePath,b);for(let b of function(a){let b=j(a);if(!g.existsSync(b))return[];let c=[],d=a=>{for(let f of g.readdirSync(a,{withFileTypes:!0})){let h=e.join(a,f.name);if(f.isDirectory()){d(h);continue}if(f.name.endsWith(".source.txt"))continue;let i=g.statSync(h),j=e.relative(b,h).split(e.sep).join("/");c.push({relativePath:j,category:j.includes("表格数据/")?"spreadsheet":j.includes("图片素材/")?"image":j.includes("图纸文件/")?"cad":j.includes("文档资料/")?"document":"other",format:e.extname(j).slice(1).toLowerCase()||"text",contentHash:"",fileSize:i.size,mtime:i.mtimeMs,chunkCount:0,collectionName:"",indexedAt:0,lastVerifiedAt:0,status:"disk",matchedBy:"disk"})}};return d(b),c}(a)){let a=c.get(b.relativePath);c.set(b.relativePath,a?{...a,fileSize:b.fileSize,mtime:b.mtime,matchedBy:"metadata"}:b)}return Array.from(c.values()).filter(a=>!b.category||a.category===b.category).sort((a,b)=>b.mtime-a.mtime||a.relativePath.localeCompare(b.relativePath,"zh-CN"))}async function o(a,b={}){let c=(b.query||"").trim(),d=Math.max(1,Math.min(500,b.limit??50)),e=new Map,f=n(a,{category:b.category});for(let a of f)(!c||`${a.relativePath}
|
|
20
|
+
${i}`.trim()}let p=new Set(["施工准备","施工要点","质量控制","质量要求","质量保证措施","质量控制措施","质量通病防治","安全措施","安全要求","安全管理措施","安全技术交底","技术交底","注意事项","验收要求","验收标准","成品保护","环境保护","文明施工","进度控制","工期保障","材料管理","机械管理","人员管理","组织管理","应急预案","应急措施","劳动力配置","机械设备配置"]);function q(a){let b=a.split(/\r?\n/u),c=[];for(let a=0;a<b.length;a+=1)/^##\s+/u.test(b[a].trim())&&c.push(a);if(0===c.length)return a;let d=new Set;for(let a=0;a<c.length;a+=1){let e=c[a],f=c[a+1]??b.length,g=new Set,h=[];for(let a=e;a<f;a+=1){let c=/^(#{3,4})\s+(.+)$/u.exec(b[a].trim());if(!c)continue;let d=j(c[2].trim());d&&(3===c[1].length?g.add(d):h.push({line:a,name:d}))}let i=new Map;for(let a of h){let c=i.get(a.name);i.set(a.name,a.line);let e=g.has(a.name),h=p.has(a.name);if(!(e||!h&&void 0!==c))continue;let j=f;for(let c=a.line+1;c<f;c+=1)if(/^#{2,4}\s+/u.test(b[c].trim())){j=c;break}for(let b=a.line;b<j;b+=1)d.add(b)}}return 0===d.size?a:b.filter((a,b)=>!d.has(b)).join("\n")}function r(a,b,c={}){if(!c.fuzzy){let c=s(a,b,/^###\s+(?:\d+(?:\.\d+)*\s+)?/u);return c||s(a,b,/^#{3,4}\s+(?:\d+(?:\.\d+)*\s+)?/u)}return function(a,b){let c=a.split("\n"),d=t(b).replace(/\s+/gu,"").toLowerCase(),g=[],h=-1,i=0,j=!1,k=a=>{if(h<0)return;let b=c.slice(h,a).join("\n").trim();b&&g.push(b),h=-1,i=0,j=!1};for(let a=0;a<c.length;a+=1){if(!/^\s*#{2,4}\s+/u.test(c[a]))continue;let e=/^\s*(#{2,4})\s+/u.exec(c[a])?.[1].length||3;if(h>=0&&(j||3===i)&&4===e)continue;k(a);let g=t(c[a]).replace(/\s+/gu,"").toLowerCase();(g===d||g.includes(d)||v(c[a],b))&&(h=a+1,i=e,j=e<=4&&f.test(c[a]))}return k(c.length),g.sort((a,b)=>(0,e.V7)(b)-(0,e.V7)(a))[0]||""}(a,b)}function s(a,b,c){let d=a.split("\n"),e=d.findIndex(a=>c.test(a.trim())&&a.includes(b));if(e<0)return"";let g=/^(#{2,6})\s+/u.exec(d[e].trim())?.[1].length||3,h=4===g&&f.test(b),i=d.length;for(let a=e+1;a<d.length;a+=1){let b=/^(#{2,6})\s+/u.exec(d[a].trim());if(b&&b[1].length<=g&&!(h&&b[1].length===g)){i=a;break}}return d.slice(e,i).join("\n")}function t(a){return a.replace(/^\s*#{2,4}\s*/u,"").replace(/^\s*(?:\d+(?:\.\d+)*|[一二三四五六七八九十]+)(?:[、..]|\s+)\s*/u,"").trim()}function u(a){return t(a).replace(/\s+/gu,"").toLowerCase().replace(/施工(?=方案|流程|方法)/gu,"").replace(/专项(?=方案)/gu,"").replace(/项目|工程|主要|重点|技术/gu,"").replace(/[、,,;;·..//]+/gu,"").replace(/与|及|和|暨/gu,"")}function v(a,b){let c=u(a),d=u(b);return!!c&&!!d&&!(c.length<4)&&!(d.length<4)&&(c===d||c.includes(d)||d.includes(c))}function w(a,b,c){let d=[...new Set(b.filter(Boolean))];if(0===d.length)return a;let e=3===c?/^\s*###\s+/u:4===c?/^\s*####\s+/u:/^\s*#{3,4}\s+/u,f=new Set;return a.split("\n").map(a=>{if(!e.test(a))return a;let b=t(a);if(!b)return a;let c=d.find(a=>!f.has(a)&&v(b,a));if(!c||c===b)return a;let g=/^(\s*#{3,4}\s+)/u.exec(a)?.[1];return g?(f.add(c),`${g}${c}`):a}).join("\n")}function x(a){return(0,d.createHash)("sha1").update(JSON.stringify(a)).digest("hex")}function y(a){if(null==a)return"";if("string"==typeof a)return a;if("number"==typeof a||"boolean"==typeof a)return String(a);try{return JSON.stringify(a)}catch{return String(a)}}function z(a){if(a?.aborted)throw Error("用户中止")}function A(a){return`【系统约束——仅指导写作,禁止写入正文,禁止复述本句】${a}`}let B=["评标纪律","投标纪律","行贿","打招呼","递条子","廉洁承诺","廉洁自律","串标","围标","弄虚作假","干扰评标","异常低价","评标基准价"];function C(a){return!!(B.some(b=>a.includes(b))||a.includes("廉洁从业"))||/纪律|廉洁/u.test(a)&&/投标|评标|行贿|串标|围标|弄虚作假/u.test(a)}async function D(a,b,c){if(0===a.length)return[];let d=Math.max(1,Math.min(a.length,c.concurrency||Math.max(1,{total:a.length,kind:c.kind,targetWords:c.targetWords,highRisk:c.highRisk}.total))),e=Array(a.length),f=0;return await Promise.all(Array.from({length:d},async()=>{for(;f<a.length;){let c=f;f+=1,e[c]=await b(a[c],c)}})),e}class E{constructor(a){this.queue=[],this.available=Math.max(1,Math.floor(a))}async acquire(){if(this.available>0){this.available-=1;return}await new Promise(a=>{this.queue.push(a)})}release(){let a=this.queue.shift();a?a():this.available+=1}async run(a){await this.acquire();try{return await a()}finally{this.release()}}}},23500:(a,b,c)=>{c.d(b,{bj:()=>B,N6:()=>N,h0:()=>J,bV:()=>K,QJ:()=>D,jG:()=>C,dU:()=>A,Bh:()=>E,zY:()=>Q,xm:()=>F,J5:()=>I,C1:()=>M});var d=c(73024),e=c(76760),f=c(48161),g=c(77598),h=c(44533),i=c(25840),j=c(8753),k=c(6444),l=c(85441),m=c(92808),n=c(56942),o=c(2773),p=c(78217),q=c(5726);function r(){let a=e.join(f.homedir(),".customize-agent");return d.mkdirSync(a,{recursive:!0}),a}function s(){return e.join(r(),"document-templates.json")}function t(a){let{version:b,updatedAt:c,changeLog:d,...e}=a;return(0,g.createHash)("sha256").update(function a(b){return Array.isArray(b)?`[${b.map(a).join(",")}]`:b&&"object"==typeof b?`{${Object.keys(b).sort().map(c=>`${JSON.stringify(c)}:${a(b[c])}`).join(",")}}`:JSON.stringify(b)}(e)).digest("hex")}function u(a){return{...a,id:a.id.replace(/[^a-zA-Z0-9_-]/gu,"-").slice(0,80)||`template-${Date.now()}`,name:a.name||"未命名模板",description:a.description||"",category:a.category||"自定义",outputTitle:a.outputTitle||a.name||"文档",version:Number.isFinite(a.version)&&a.version>0?Math.floor(a.version):1,updatedAt:Number.isFinite(a.updatedAt)?a.updatedAt:Date.now(),changeLog:Array.isArray(a.changeLog)?a.changeLog.filter(a=>a&&"object"==typeof a&&Number.isFinite(a.version)&&"string"==typeof a.summary).slice(0,50):[],projectRoleConfigId:a.projectRoleConfigId||void 0,chapters:Array.isArray(a.chapters)&&a.chapters.length>0?a.chapters.map((a,b)=>({id:(a.id||`chapter-${b+1}`).replace(/[^a-zA-Z0-9_-]/gu,"-").slice(0,80),title:a.title||`第 ${b+1} 章`,purpose:a.purpose||"",queries:Array.isArray(a.queries)?a.queries.filter(Boolean):[],requiredFacts:Array.isArray(a.requiredFacts)?a.requiredFacts.filter(Boolean):[],sections:Array.isArray(a.sections)?a.sections.filter(Boolean):[],tableSections:Array.isArray(a.tableSections)?a.tableSections.filter(Boolean):[],tableRequirements:Array.isArray(a.tableRequirements)?a.tableRequirements.filter(Boolean):[],tablePlans:Array.isArray(a.tablePlans)?a.tablePlans:[],pinnedEvidenceFilePaths:Array.isArray(a.pinnedEvidenceFilePaths)?a.pinnedEvidenceFilePaths.filter(Boolean):[]})):[{id:"document",title:a.outputTitle||a.name||"文档",purpose:a.description||"",queries:[],requiredFacts:[]}],exportSettings:a.exportSettings,generationSettings:a.generationSettings,promptIds:Array.isArray(a.promptIds)?a.promptIds.filter(Boolean):[],projectBindings:Array.isArray(a.projectBindings)?a.projectBindings.filter(a=>a.materialRootPath).map(a=>({materialRootPath:a.materialRootPath.replace(/^\/+|\/+$/gu,"")})):(0,o.qp)(a),promptBindings:Array.isArray(a.promptBindings)?a.promptBindings.filter(a=>a.promptId&&a.roleId):Array.isArray(a.promptIds)?a.promptIds.filter(Boolean).map(a=>({promptId:a,roleId:"chapter_generation"})):[],builtIn:!1}}function v(){try{let a=s();if(!d.existsSync(a))return[];let b=JSON.parse(d.readFileSync(a,"utf-8"));if(!Array.isArray(b))return d.renameSync(a,`${a}.corrupt-${Date.now()}`),[];return b.map(u)}catch{try{let a=s();d.existsSync(a)&&d.renameSync(a,`${a}.corrupt-${Date.now()}`)}catch{}return[]}}function w(a){d.writeFileSync(s(),JSON.stringify(a.map(u),null,2),"utf-8")}function x(a){return(0,g.createHash)("sha256").update(a).digest("hex").slice(0,12)}function y(a){return a.replace(/\s+/gu," ").trim().slice(0,160)}function z(a){let b=function(){try{let a=JSON.parse(d.readFileSync(e.join(r(),"prompts.json"),"utf-8"));return Array.isArray(a.customPrompts)?a.customPrompts:[]}catch{return[]}}();if(a.startsWith("custom:")){let c=b.find(b=>b.id===a);return c?{id:a,name:c.name,content:c.content,source:"custom"}:void 0}if(a.startsWith("file:")){let b=a.slice(5);if(d.existsSync(b))return{id:a,name:e.basename(e.dirname(b))||b,content:d.readFileSync(b,"utf-8"),source:"file"}}}function A(a=[]){if(0===a.length)return[];let b=[];for(let c of a){let a=z(c.promptId);a&&b.push({...a,roleId:c.roleId,contentHash:x(a.content),contentPreview:y(a.content)})}return b}function B(a){let b=O(a),c=(0,i.XB)("prompt"),d=Q(a),e=[],f=[];if(b)for(let a of b.promptRoles){let b=c.find(b=>b.id===a.roleId);if(!b){e.push(a.roleId);continue}0===(b.resourceIds?.length?b.resourceIds:b.resourceId?[b.resourceId]:[]).length&&f.push(a.roleId)}let g=P(d),h=[];for(let a of g){let d=z(a.promptId);if(!d)continue;let e=c.find(b=>b.id===a.roleId),f=b?.promptRoles.find(b=>b.roleId===a.roleId),g=e?.executionType||function(a){var b;return b=a,/extract|extraction|抽取|清单|图纸|品牌/u.test(b)?"fact_extraction":/validation|校验|审查|审核/u.test(b)?"validation":/format|排版/u.test(b)?"formatting":/writer|method|schedule|quality|resource|safety|dangerous|施工|进度|质量|资源|安全|危大/u.test(b)?"chapter_generation":"reference"}(a.roleId),i=function(a,b,c=""){let d=`${a} ${b} ${c}`;return/extract|extraction|抽取|清单|图纸|品牌|识别/u.test(d)?"extraction":/format|排版/u.test(d)?"formatting":/总控|writer|施工组织设计总控|写作主控/u.test(d)?"writer":/chapter_generation|method|schedule|quality|resource|safety|dangerous|施工|进度|质量|资源|安全|危大/u.test(d)?"chapter":"reference"}(a.roleId,g,d.name),j=`projectRole:${b?.id||"unknown"}:${a.roleId}:order=${f?.order??0}`;h.push({...d,roleId:a.roleId,contentHash:x(d.content),contentPreview:y(d.content),executionType:g,category:i,bindingSource:j,roleConfigId:b?.id,roleName:e?.name,order:f?.order})}return{bindings:g,prompts:h,writerPrompts:h.filter(a=>"writer"===a.category),chapterPrompts:h.filter(a=>"chapter"===a.category),extractionPrompts:h.filter(a=>"extraction"===a.category),formattingPrompts:h.filter(a=>"formatting"===a.category),referencePrompts:h.filter(a=>"reference"===a.category),unresolvedRoles:[...new Set(e)],missingResourceRoles:[...new Set(f)]}}function C(){let a=(0,j.V)().templates,b=v().filter(b=>!a.some(a=>a.id===b.id));return[...a,...b]}function D(a){return C().find(b=>b.id===a)}function E(a){let b,c,d=u(a),e=v().find(a=>a.id===d.id),f=Date.now();if(e&&t(e)!==t(d)){b=(e.version||0)+1;let a=d.chapters.map(a=>a.title).join("、");c=[{version:b,timestamp:f,summary:a?`章节结构调整:${a.slice(0,80)}${a.length>80?"…":""}`:"模版内容已更新"},...e.changeLog||[]].slice(0,50)}else e?(b=e.version||1,c=e.changeLog||[]):(b=1,c=[{version:1,timestamp:f,summary:"创建模版"}]);let g={...d,version:b,updatedAt:f,changeLog:c},h=v().filter(a=>a.id!==d.id);return h.push(g),w(h),g}async function F(a,b=(0,h.aY)(),d={}){let f,g,j,r,s=D(a),t=[];if(!s)return{issues:[{level:"error",message:"文档模板不存在或已删除"}],fileDiagnostics:[],promptDiagnostics:[],roleDiagnostics:[],readiness:void 0,strategyPreview:void 0,config:void 0};let u=(0,i.XB)("prompt"),v=N(s),w=O(s);v||t.push({level:"error",message:"模板未绑定项目角色配置,且未匹配到自动专业角色配置"}),v&&!w&&t.push({level:"error",message:`项目角色配置不存在或已删除:${v}`}),s.promptIds?.length&&t.push({level:"warning",message:"模板存在旧 promptIds 字段残留,该字段已不参与生成,请清理模板历史数据。"}),s.promptBindings?.length&&t.push({level:"warning",message:"模板存在旧 promptBindings 字段残留,该字段已不参与生成,请清理模板历史数据。"});let x=Q(s),y=(0,o.qp)(s);w&&0===w.promptRoles.length&&t.push({level:"error",message:"项目角色配置未配置提示词角色。"}),w&&w.promptRoles.length>0&&0===x.length&&t.push({level:"error",message:"项目角色配置中的提示词角色未绑定任何有效提示词资源。"});let z=e.resolve(b),B=(0,h.Yy)(z),C=function(a,b){if(0===a.length)return[];let c=new Set(b.map(a=>a.relativePath)),d=[],e=new Set;for(let f of a){let a=f.materialRootPath.replace(/^\/+|\/+$/gu,"");for(let f of c.has(a)?[a]:b.filter(b=>{var c;return b.relativePath.startsWith(`${a}/`)&&"disk"!==(c=b).status&&"error"!==c.status&&Number(c.indexedAt||0)>0&&Number(c.chunkCount||0)>0}).map(a=>a.relativePath))e.has(f)||(e.add(f),d.push(f))}return d}(y,B);if(0===y.length?t.push({level:"error",message:"模板未绑定项目资料包,请先选择需要参与生成的项目文件夹。"}):0===C.length&&t.push({level:"error",message:"模板绑定的项目资料包不存在或没有可用索引文件,请重新选择项目资料包。"}),s&&(f=(0,l.P)(z,{requirement:d.requirement,boundFilePaths:C}),0===y.length&&!f.source.ambiguous&&f.source.selectedFiles>0)){let a=t.findIndex(a=>"error"===a.level&&"模板未绑定项目资料包,请先选择需要参与生成的项目文件夹。"===a.message);a>=0&&t.splice(a,1)}let E=new Map(B.map(a=>[a.relativePath,a])),G=[],H=C.map(a=>{let b=E.get(a);return b||t.push({level:"error",message:`知识库文件不存在:${a}`}),b&&("disk"===b.status||0===b.indexedAt)&&G.push({level:"warning",message:`知识库文件存在但尚未完成索引:${a}`}),b?.status==="error"&&t.push({level:"warning",message:`知识库文件索引失败:${a}${b.errorMessage?`,${b.errorMessage}`:""}`}),b&&0===b.chunkCount&&t.push({level:"warning",message:`知识库文件暂无可检索内容切片:${a}`}),{filePath:a,roleId:"project_material",roleName:"项目资料包",exists:!!b,indexed:!!(b&&b.indexedAt>0&&"disk"!==b.status),chunkCount:b?.chunkCount??0,vectorReady:!!(b&&b.chunkCount>0)}}),I=H.filter(a=>a.exists).length,J=H.filter(a=>a.exists&&!a.indexed).length;I>0&&J===I?t.push({level:"error",message:`模板绑定的项目资料包(${I} 份文件)均尚未完成解析入库,请等待后台索引完成后再运行模板`}):t.push(...G);let K=A(x),L=new Set(w?.promptRoles.map(a=>a.roleId)||[]);for(let a of w?.promptRoles||[]){let b=u.find(b=>b.id===a.roleId);if(!b){t.push({level:"error",message:`提示词角色不存在:${a.roleId}`});continue}0===(b.resourceIds?.length?b.resourceIds:b.resourceId?[b.resourceId]:[]).length&&t.push({level:"error",message:`提示词角色未绑定资源:${b.name}`})}let M=x.map(a=>{let b=u.find(b=>b.id===a.roleId),c=K.find(b=>b.id===a.promptId);return b||t.push({level:"error",message:`提示词角色不存在:${a.roleId}`}),L.has(a.roleId)||t.push({level:"error",message:`提示词绑定不属于当前项目角色配置:${a.roleId}`}),c||t.push({level:"error",message:`提示词不存在:${a.promptId}`}),c&&!c.content.trim()&&t.push({level:"warning",message:`提示词为空:${c.name}`}),{...a,roleName:b?.name,promptTitle:c?.name,promptSource:c?.source,contentLength:c?.content.length??0,contentHash:c?.contentHash,contentPreview:c?.contentPreview,exists:!!c}}),P=(w?.promptRoles||[]).map(a=>{let b=u.find(b=>b.id===a.roleId),c=b?b.resourceIds?.length?b.resourceIds:b.resourceId?[b.resourceId]:[]:[],d=x.filter(b=>b.roleId===a.roleId).map(a=>a.promptId),e=b?0===c.length?"missing_resource":0===d.length?"missing_prompt":"ok":"role_missing";return{roleId:a.roleId,roleName:b?.name,order:a.order,resourceIds:c,boundPromptIds:d,status:e}});if(K.length>1)try{let{detectPromptRuleConflicts:a}=await c.e(1001).then(c.bind(c,71001));for(let b of a(K.map(a=>({promptId:a.id,name:a.name,roleId:a.roleId,content:a.content}))))t.push({level:b.level,message:`提示词规则冲突:${b.message}`})}catch{}if(s){let a=f||(0,l.P)(z,{requirement:d.requirement,boundFilePaths:C}),b=function(a,b){let c=function(a,b){let c=[a.name,a.category,a.description,a.outputTitle,...a.chapters.flatMap(a=>[a.title,a.purpose])].join("\n"),d=new Set(["project_overview","scope_description"]);return/需求|规则|响应|方案|实施|专项|安全|质量|进度|合规|施工组织|技术标/iu.test(c)&&["requirement_document","structured_data"].forEach(a=>d.add(a)),(/安全|质量|进度|工期|文明|环保|验收/iu.test(c)||b.materialInventory.schedule_quality_safety.length>0)&&d.add("schedule_quality_safety"),(/设计|图纸|平面|立面|剖面|做法/iu.test(c)||b.materialInventory.design_specification.length>0)&&d.add("design_specification"),(/风险|重点|难点|约束|现场|危大/iu.test(c)||b.materialInventory.risk_constraints.length>0)&&d.add("risk_constraints"),d}(a,b);return[...new Set([...function(a){let b=[a.name,a.description,a.outputTitle,...a.chapters.flatMap(a=>[a.title,a.purpose,...a.requiredFacts||[],...a.queries||[]])].join("\n"),c=new Set((0,m.t0)(b,m.hW));return c.add("project_overview"),c.add("scope_description"),[...c]}(a),...c])].map(a=>{let d=b.materialInventory[a]||[],e=c.has(a),f=d.length>0,g=f&&d.length<(e?2:1);return{role:a,required:e,satisfied:f,weak:g,evidenceCount:d.length,filePaths:d.map(a=>a.filePath),reason:f?`已匹配 ${d.length} 个资料文件`:e?"必需资料角色缺失":"可选资料角色缺失"}})}(s,a);for(let c of(g=(0,n.$)({template:s,spec:(0,k.x)(s).spec,summary:a,resolvedRoles:b})).blockingIssues)t.push({level:"error",message:`生成准备度不足:${c}`});for(let a of g.warnings)t.push({level:"warning",message:a})}try{let a=(0,k.x)(s).spec,{effectiveTemplateChapters:b}=await Promise.resolve().then(c.bind(c,70208)),e=b(s,a),f=s.generationSettings||s.exportSettings,g=(0,p.q6)(s.exportSettings||s.generationSettings),h=(0,p.py)(d.requirement||""),i=f?.targetPages?.target||f?.targetPages?.min,l=h.targetChars||(h.targetPages?h.targetPages*g:void 0)||(i?i*g:void 0),m=e.reduce((b,c)=>b+Math.max(a.chapterRules.find(a=>a.id===c.id||a.title===c.title)?.minWords||0,a.dynamicChapterRule.minWordsPerChapter||0),0),n=Math.round(l||m||1200*e.length),o=C.reduce((a,b)=>a+(E.get(b)?.chunkCount??0),0),{previewGenerationBudgetForTemplate:q}=await Promise.all([c.e(1001),c.e(6482),c.e(9227)]).then(c.bind(c,79227));j=q({template:s,chapters:e,requirement:d.requirement,materialFileCount:C.length,evidenceCount:o,targetWords:n,hasVeryLargeExplicitChapter:e.some(a=>(a.sections||[]).filter(Boolean).length>=30),configuredChapterConcurrency:Number(process.env.DOCUMENT_CHAPTER_CONCURRENCY||0)})}catch{}try{r=(0,q.ze)({templateName:s.name,chapterTitles:s.chapters.map(a=>a.title)})}catch{}return{templateId:a,projectRoleConfigId:v,configName:w?.name,fileDiagnostics:H,promptDiagnostics:M,roleDiagnostics:P,readiness:g,issues:t,strategyPreview:j,referenceStructureSuggestion:r}}let G=new Map,H=Math.max(5e3,Number(process.env.DOCUMENT_TEMPLATE_VALIDATION_CACHE_TTL_MS??3e4));async function I(a,b=(0,h.aY)(),c={}){let d=e.resolve(b),f=D(a),g=(0,h.Yy)(d),i=JSON.stringify({templateId:a,templateVersion:f?.version??0,templateUpdatedAt:f?.updatedAt??0,projectRoot:d,requirement:c.requirement??"",fileCount:g.length,lastFileMtime:g.reduce((a,b)=>Math.max(a,b.mtime),0)}),j=G.get(i);if(j&&Date.now()-j.at<H)return j.result;let k=await F(a,d,c);return G.set(i,{at:Date.now(),result:k}),k}function J(a){if(new Set((0,j.V)().templates.map(a=>a.id)).has(a))throw Error("Configured template cannot be deleted");w(v().filter(b=>b.id!==a))}function K(a){let b=D(a);if(!b)throw Error("Document template not found");let c=Date.now(),d=u({...b,id:`${b.id}-copy-${c}`,name:`${b.name} Copy`,builtIn:!1,version:1,updatedAt:c,changeLog:[{version:1,timestamp:c,summary:`从 ${b.id} v${b.version||1} 复制`}]}),e=v();return e.push(d),w(e),d}function L(a,b){try{return RegExp(b,"iu").test(a)}catch{return a.includes(b)}}function M(a,b){return(function(a){let b=`${a.name} ${a.category} ${a.outputTitle} ${a.description}`;return(0,j.V)().chapterTitleFilters.filter(a=>a.templateMatchers.some(a=>L(b,a)))})(b).some(b=>!!b.minLength&&a.length<b.minLength||!!b.maxLength&&a.length>b.maxLength||b.forbiddenPatterns.some(b=>L(a,b)))}function N(a){return a.projectRoleConfigId||void 0}function O(a){let b=N(a);return b?(0,i.Mu)(b):void 0}function P(a){let b=new Set,c=[];for(let d of a){let a=`${d.roleId}:${d.promptId}`;!d.promptId||!d.roleId||b.has(a)||(b.add(a),c.push(d))}return c}function Q(a){let b=O(a);if(!b)return[];let c=(0,i.XB)("prompt"),d=[];for(let a of[...b.promptRoles].sort((a,b)=>a.order-b.order)){let b=c.find(b=>b.id===a.roleId),e=b?b.resourceIds?.length?b.resourceIds:b.resourceId?[b.resourceId]:[]:[];b&&0!==e.length&&d.push(...e.map(a=>({promptId:a,roleId:b.id})))}return P(d)}},28103:(a,b,c)=>{c.d(b,{WT:()=>x,aF:()=>w,cG:()=>e});var d=c(52922);let e=["房建","市政","公路","桥梁与隧道","水利水电","电力","机电安装","装饰装修","园林绿化","铁路","港口与航道","矿山冶金","其他"],f=/(?:\d+(?:\.\d+)?\s*(?:mm|cm|m|㎡|m²|m2|m3|m³|kg|t|MPa|kPa|kN|V|KV|kV|A|天|%)(?![a-zA-Z\u4e00-\u9fa5])|\d+(?:\.\d+)?\s*(?:米|厘米|毫米|吨|千克|公斤|平方米|立方米)(?!\d)|(?:养护|搭接长度|试验压力|间距|偏差|坡度|含水率|压实度|强度等级|标号|厚度|宽度|高度|深度|直径|桩长|桩径))/gu,g=/→|->|=>|按.{0,12}顺序|依次|先后|先.{0,10}后|顺序施工|流水顺序|[\u4e00-\u9fa5]+(?:-|—|~|~)[\u4e00-\u9fa5]+(?:-|—|~|~)[\u4e00-\u9fa5]+/u,h=/^(?:[一二三四五六七八九十\d]+[、..]?\s*)?[\u4e00-\u9fa5()()、,A-Za-z0-9+\-·\s]{2,28}(?:表|清单)(?:[::]|\s*$)/mu,i=/^第([一二三四五六七八九十百千\d]+)[章篇][、..]?\s*(.{2,60})$/mu,j=/^\d+[、..](?!\d)\s*(.{2,20})$/mu,k=/^[一二三四五六七八九十]+[、..]\s*(.{2,20})$/mu,l=/^第[一二三四五六七八九十\d]+[节条][、..]?\s*(.{2,30})$/mu,m=/^(?:[一二三四五六七八九十]+、\s*(.{2,20})|[((][一二三四五六七八九十\d]+[))]\s*(.{2,20})|\d+\.\d+(?:\.\d+)*[、..\s]\s*(.{2,20}))$/mu,n=/\.{4,}|\.{2,}\s*\d{1,3}\s*$|—\d+—|第\s*\d+\s*页|^\d{1,3}$/u,o=/[,、;:]/u,p=/[,。;:?!]/u;function q(a){return a.trim().replace(/^(?:#+\s*)+/u,"").trim()}function r(a){return a.replace(/[\s..·]+\d{1,3}$/u,"").replace(/\s+/gu,"").trim()}function s(a){return a.length>=2&&!o.test(a)&&!/[。,;]$/u.test(a)}function t(a){if(/^\d+$/u.test(a))return Number.parseInt(a,10);let b={零:0,一:1,二:2,三:3,四:4,五:5,六:6,七:7,八:8,九:9},c=0,d=0,e=!1;for(let f of a){if("十"===f){c+=10*(d||1),d=0,e=!0;continue}if("百"===f){c+=100*(d||1),d=0,e=!0;continue}if("千"===f){c+=1e3*(d||1),d=0,e=!0;continue}let a=b[f];if(void 0===a)return Number.MAX_SAFE_INTEGER;d=a,e=!0}return e?c+d:Number.MAX_SAFE_INTEGER}let u=/(?:养护|搭接长度|试验压力|间距|偏差|坡度|含水率|压实度|强度等级|标号|厚度|宽度|高度|深度|直径|桩长|桩径)/gu,v=/(?:\d+(?:\.\d+)?\s*(?:mm|cm|m|㎡|m²|m2|m3|m³|kg|t|MPa|kPa|kN|V|KV|kV|A|天|%)(?![a-zA-Z\u4e00-\u9fa5])|\d+(?:\.\d+)?\s*(?:米|厘米|毫米|吨|千克|公斤|平方米|立方米)(?!\d))/gu;function w(a){let b,c=[["市政",/市政|管网|排水|给水|雨污|污水|燃气/gu],["公路",/公路|路基|路面|沥青/gu],["桥梁与隧道",/桥梁|隧道/gu],["水利水电",/水利|河道|灌溉|防洪/gu],["电力",/电力|供配电|电压|电缆/gu],["机电安装",/机电|暖通|通风|空调|消防|给排水|智能化|电梯/gu],["装饰装修",/装饰|装修|幕墙/gu],["园林绿化",/园林|绿化|景观|苗木/gu],["铁路",/铁路|轨道/gu],["港口与航道",/港口|航道/gu],["矿山冶金",/矿山|冶金/gu],["房建",/房建|建筑|住宅|楼|结构|砌体|基坑|地下室|主体|层高|户型|公共建筑|产业园|厂房/gu]].map(([b,c])=>(c.lastIndex=0,{type:b,count:(a.match(c)||[]).length})).sort((a,b)=>b.count-a.count),d=c[0],e=0,f=0;for(let[c,d]of[["房建",/产业园|标准厂房|安置房|住宅小区|保障房|卫生院|门诊楼|办公楼/gu],["市政",/老旧小区|海绵城市|雨污分流|管网改造|管廊/gu],["桥梁与隧道",/桥梁|隧道|盾构|箱梁|斜拉|悬索|涵洞/gu],["公路",/公路|路基|路面|沥青|桩号|互通|匝道/gu],["水利水电",/堤防|水库|泵站|水闸|疏浚|节制闸|水电站|大坝|围堰/gu],["电力",/变电站|输电线路|配电|GIS设备|电缆|架空线路|铁塔|箱变/gu],["铁路",/铁路|轨道|道床|站台|信号机|接触网/gu],["港口与航道",/港口|码头|航道|护岸|堆场|泊位/gu],["矿山冶金",/矿山|矿井|选矿|冶炼|尾矿|轧钢/gu]]){d.lastIndex=0;let g=(a.match(d)||[]).length;g>=3&&g>e?(f=e,b=c,e=g):g>f&&(f=g)}if(b){if(f>0&&e<2*f&&d&&d.count>e)return d.type;let a=c.find(a=>a.type===b)?.count||0;return d&&d.type!==b&&d.count>2*a&&d.count>=2*e?d.type:b}return d&&d.count>0?d.type:"其他"}async function x(a){let b=a.replace(/\s/gu,"").length,c=a.split(/\n+/u).map(a=>a.replace(/\s+/gu," ").trim()).filter(a=>a.length>=16&&/[\u4e00-\u9fa5]/u.test(a)),e=c.reduce((a,b)=>a+b.replace(/\s/gu,"").length,0),o=(a.match(f)||[]).length,w=c.filter(a=>g.test(a)).length,x=function(a){let b=0,c=a.split(/\n+/u);for(let a=0;a<c.length;a+=1){let d=q(c[a]||"");if(d){if(h.test(d)||/^┌─/u.test(d)){b+=1;continue}if(/^\|.*\|.*\|$/u.test(d)){let d="";for(let b=a-1;b>=0&&b>=a-3;b-=1){let a=q(c[b]||"");if(a){d=a;break}}/^\|.*\|.*\|$/u.test(d)||h.test(d)||(b+=1)}}}return b}(a),{headings:y,useCnAsChapter:z}=function(a){let b,c=new Map,d=[],e=[],f=a.split(/\n+/u);for(let a=0;a<f.length;a+=1){let b=q(f[a]);if(!b||n.test(b))continue;let d=i.exec(b);if(d){let b=r(d[2]||"");b.length>=2&&!p.test(b)&&c.set(d[1],function(a,b,c){if(a.length<20)return a;let d=q(b[c+1]||"");if(d.length<2||d.length>15||!/[\u4e00-\u9fa5]/u.test(d)||n.test(d)||i.test(d)||l.test(d)||m.test(d)||j.test(d)||k.test(d))return a;let e=a+d;return e.length<=60?e:a}(b,f,a));continue}let g=k.exec(b);if(g){let a=r(g[1]||"");s(a)&&e.push(a)}}if(0===c.size)for(let a of f){let b=q(a);if(!b||n.test(b))continue;let c=j.exec(b);if(c){let a=r(c[1]||"");s(a)&&d.push(a)}}let g=!1;return c.size>0?b=[...c.entries()].sort((a,b)=>t(a[0])-t(b[0])).map(([,a])=>a):d.length>=2?b=d:(b=e,g=!0),{headings:[...new Set(b)],useCnAsChapter:g}}(a),A=y.length,{subsectionCount:B,subitemCount:C}=function(a,b){let c=0,d=0;for(let e of a.split(/\n+/u)){let a=q(e);if(!a||n.test(a))continue;let f=l.exec(a);if(f){s(r(f[1]||""))&&(c+=1);continue}let g=m.exec(a);if(g){if(!s(r(g[1]||g[2]||g[3]||""))||b&&void 0!==g[1])continue;d+=1}}return{subsectionCount:c,subitemCount:d}}(a,z),D=new Map;for(let a of c){let b=a.replace(/[\d\s,。、;:""''()()%…—\-·]/gu,"");b.length<8||D.set(b,(D.get(b)||0)+1)}let E=0;for(let a of D.values())a>1&&(E+=a);let F=await (0,d.Pm)(a);return{wordCount:b,effectiveWordCount:e,paramDensity:e>0?1e3*o/e:0,paramCount:o,arrowChainCoverage:c.length>0?w/c.length:0,duplicationRate:c.length>0?E/c.length:0,tableCount:x,sectionCount:A,subsectionCount:B,subitemCount:C,avgSectionWords:A>0?Math.round(e/A):0,headingStructure:y,tableTitles:function(a){let b=[];for(let c of a.split(/\n+/u)){let a=q(c);a&&!(a.length>40)&&!(a.length<3)&&h.test(a)&&b.push(a)}return[...new Set(b)]}(a),paramTokens:function(a){let b=new Map;for(let c of a.match(u)||[])b.set(c,(b.get(c)||0)+1);let c=(a.match(v)||[]).length;return c>0&&b.set("数值参数(数字+单位)",(b.get("数值参数(数字+单位)")||0)+c),[...b.entries()].map(([a,b])=>({token:a,count:b})).sort((a,b)=>b.count-a.count)}(a),segmentCount:c.length,arrowChainSegmentCount:w,duplicatedSegmentCount:E,fiveElementCompleteBlocks:F.completeBlocks}}},29281:(a,b,c)=>{c.d(b,{I:()=>f});var d=c(96770);let e=null;function f(){return e||(e=new d.ConfigStore),e}},37047:(a,b,c)=>{c.d(b,{Bd:()=>k,Eh:()=>g,Mv:()=>n,VN:()=>f});var d=c(19898);let e=null;function f(){return e||(e=new d.LocalTransformersEmbeddingProvider({})),e}let g=.6,h=new Map,i=0,j=0;function k(){return{embedCacheHits:i,embedCacheMisses:j}}async function l(a,b){let c=b?await b(a):await f().embedDocuments(a);if(c.length!==a.length)throw Error(`本地语义模型嵌入数量不一致:期望 ${a.length} 条,实际 ${c.length} 条`);return c}async function m(a,b){if("0"===process.env.DOCUMENT_EMBED_CACHE)return l(a,b);let c=Array(a.length),d=[],e=new Map;for(let b=0;b<a.length;b+=1){let f=a[b];if(f.length<=2e3){let a=h.get(f);if(a){c[b]=a,i+=1,h.delete(f),h.set(f,a);continue}}let g=e.get(f);g?g.push(b):(e.set(f,[b]),d.push(f))}if(0===d.length)return c;let f=await l(d,b),g=function(){let a=Number(process.env.DOCUMENT_EMBED_CACHE_SIZE||4e4);return Number.isFinite(a)&&a>0?a:4e4}();for(let a=0;a<d.length;a+=1){let b=d[a],i=f[a],k=e.get(b);for(let a of k)c[a]=i;if(b.length<=2e3&&(j+=k.length,h.set(b,i),h.size>g)){let a=h.keys().next().value;void 0!==a&&h.delete(a)}}return c}async function n(a,b,c){if(0===a.length||0===b.length)return()=>0;let d=[...a,...b],e=await m(d,c),f=new Map;for(let a=0;a<d.length;a++)f.has(d[a])||f.set(d[a],e[a]);return(a,b)=>{let c=f.get(a),d=f.get(b);if(!c||!d)return 0;let e=Math.min(c.length,d.length),g=0;for(let a=0;a<e;a++)g+=c[a]*d[a];return g}}},41991:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(37047);function e(a,b){let c=Math.min(a.length,b.length),d=0;for(let e=0;e<c;e++)d+=a[e]*b[e];return d}async function f(a){if(0===a.prototypes.length)return async a=>a.map(()=>!1);let b=a.threshold??d.Eh,c=a.negativePrototypes??[],f=[...a.prototypes,...c],g=a.prototypes.length,h=a.embedDocuments?null:(0,d.VN)(),i=a.embedDocuments?await a.embedDocuments(f):await h.embedDocuments(f);if(i.length!==f.length)throw Error(`本地语义模型嵌入数量不一致:期望 ${f.length} 条,实际 ${i.length} 条`);return async d=>{if(0===d.length)return[];let f=d.map(()=>!1),j=d.map((b,c)=>a.lexicalHints&&!a.lexicalHints.test(b)?-1:c).filter(a=>a>=0);if(0===j.length)return f;let k=j.map(a=>d[a]),l=a.embedDocuments?await a.embedDocuments(k):await h.embedDocuments(k);return j.forEach((a,d)=>{let h=l[d];if(!h)return;let j=Math.max(...i.slice(0,g).map(a=>e(h,a))),k=c.length?Math.max(...i.slice(g).map(a=>e(h,a))):0;j>=b&&(0===c.length||j>k)&&(f[a]=!0)}),f}}},44533:(a,b,c)=>{c.d(b,{NW:()=>j,Qh:()=>k,VS:()=>o,Yy:()=>n,a2:()=>i,aY:()=>m,q1:()=>p});var d=c(19898),e=c(33873),f=c(21820),g=c(29021);let h=null;function i(){return e.join(f.homedir(),".customize-agent")}function j(a){return(0,d.getProjectKbPath)(e.resolve(a))}function k(){return h||(h=new d.MultiProjectManager(i())),h}function l(a){let b=e.resolve(a),c=e.resolve(e.join(f.homedir(),".customize-agent"));return!(g.existsSync(e.join(b,"pnpm-workspace.yaml"))&&g.existsSync(e.join(b,"apps","server")))&&(b===c||b.includes(`${e.sep}.customize-agent${e.sep}`)||b.endsWith(`${e.sep}apps${e.sep}server`)||b.endsWith(`${e.sep}apps${e.sep}cli`))}function m(){let a=process.env.CUSTOMIZE_PROJECT_ROOT??process.env.INIT_CWD;if(a&&g.existsSync(a)&&!l(a))return e.resolve(a);let b=function(){let a=e.join(i(),"projects","registry.db");if(!g.existsSync(a))return[];let b=new((0,d.loadBetterSqlite3)())(a,{readonly:!0});try{return b.prepare("SELECT project_root FROM project_registry ORDER BY last_opened_at DESC").all().map(a=>e.resolve(a.project_root)).filter(a=>!l(a))}finally{b.close()}}();return b.length>0?b[0]:process.env.INIT_CWD&&!l(process.env.INIT_CWD)?process.env.INIT_CWD:e.resolve(process.cwd(),"../..")}function n(a,b={}){let c=new Map;for(let b of function(a){let b=e.join(f.homedir(),".customize-agent","projects",(0,d.computeProjectId)(e.resolve(a)),"kb.db");if(!g.existsSync(b))return[];let c=new d.IndexStateStore(b);try{return c.listRecords().map(a=>({...a,matchedBy:"metadata"}))}finally{c.close()}}(a))c.set(b.relativePath,b);for(let b of function(a){let b=j(a);if(!g.existsSync(b))return[];let c=[],d=a=>{for(let f of g.readdirSync(a,{withFileTypes:!0})){let h=e.join(a,f.name);if(f.isDirectory()){d(h);continue}if(f.name.endsWith(".source.txt"))continue;let i=g.statSync(h),j=e.relative(b,h).split(e.sep).join("/");c.push({relativePath:j,category:j.includes("表格数据/")?"spreadsheet":j.includes("图片素材/")?"image":j.includes("图纸文件/")?"cad":j.includes("文档资料/")?"document":"other",format:e.extname(j).slice(1).toLowerCase()||"text",contentHash:"",fileSize:i.size,mtime:i.mtimeMs,chunkCount:0,collectionName:"",indexedAt:0,lastVerifiedAt:0,status:"disk",matchedBy:"disk"})}};return d(b),c}(a)){let a=c.get(b.relativePath);c.set(b.relativePath,a?{...a,fileSize:b.fileSize,mtime:b.mtime,matchedBy:"metadata"}:b)}return Array.from(c.values()).filter(a=>!b.category||a.category===b.category).sort((a,b)=>b.mtime-a.mtime||a.relativePath.localeCompare(b.relativePath,"zh-CN"))}async function o(a,b={}){let c=(b.query||"").trim(),d=Math.max(1,Math.min(500,b.limit??50)),e=new Map,f=n(a,{category:b.category});for(let a of f)(!c||`${a.relativePath}
|
|
21
21
|
${a.category}
|
|
22
22
|
${a.format}
|
|
23
|
-
${a.status}`.toLowerCase().includes(c.toLowerCase()))&&e.set(a.relativePath,{...a,matchedBy:c?"path":a.matchedBy});if(c&&!1!==b.includeContent)try{for(let b of(await k().search(a,c,{limit:Math.max(20,d)})).results){let a=b.filePath,c=e.get(a)||f.find(b=>b.relativePath===a);e.set(a,{...c||{relativePath:a,category:"content",format:"knowledge",fileSize:0,mtime:0,chunkCount:0,indexedAt:0,lastVerifiedAt:0,status:"active"},matchedBy:"content",score:b.score})}}catch{}let g=Array.from(e.values()).sort((a,b)=>{let c=a=>"content"===a.matchedBy?3:"path"===a.matchedBy?2:+("metadata"===a.matchedBy);return c(b)-c(a)||(b.score??0)-(a.score??0)||b.mtime-a.mtime||a.relativePath.localeCompare(b.relativePath,"zh-CN")});return{files:g.slice(0,d),total:g.length}}},51144:(a,b,c)=>{function d(a,b,c,e="items"){let f=c.maxItems??Number.MAX_SAFE_INTEGER,g=c.maxChars??Number.MAX_SAFE_INTEGER,h=c.charFn??(a=>JSON.stringify(a).length),i=a.map(a=>({item:a,score:b(a)}));i.sort((a,b)=>b.score-a.score);let j=[],k=[],l=0;for(let{item:a}of i){let b=h(a);j.length<f&&l+b<=g?(j.push(a),l+=b):k.push(a)}let m=[];if(k.length>0){for(let a of(m.push(`[selection] ${e}: 预算 ${f}项/${g}字符 → 选中 ${j.length}项(${l}字符),丢弃 ${k.length}项`),k.slice(0,10))){let b="string"==typeof a?a.slice(0,80):JSON.stringify(a).slice(0,80);m.push(` - 丢弃: ${b}`)}k.length>10&&m.push(` ... 及其他 ${k.length-10} 项`)}return{selected:j,dropped:k,droppedLog:m}}function e(a){let b=0,c=a.length;return 0===c?0:(b+=3*(a.match(/\d+(?:\.\d+)?/gu)||[]).length,/m[23²³]?|mm|cm|km|t|kg|台|套|个|项|批|次|份|人|日历天|天|月|万元|元|%|MPa|kPa|kN|℃/iu.test(a)&&(b+=2),/GB|JGJ|ISO|CJJ|CECS|DL|YB|SH|HG|SY|NB/iu.test(a)&&(b+=3),/验收|质量|安全|工期|进度|成本|风险|危大|重点|难点|关键|控制|标准|规范|设计|施工|材料|设备/u.test(a)&&(b+=1),c<20&&(b-=1),/项目名称|工程名称|招标人|建设地点|计划工期|质量标准|合同估算/u.test(a)&&(b+=2),b)}c.d(b,{Cr:()=>d,Ox:()=>e})},52922:(a,b,c)=>{c.d(b,{Bt:()=>m,JD:()=>A,J_:()=>j,Pm:()=>o,T4:()=>w,Ye:()=>k,bH:()=>D,gE:()=>r,nY:()=>F,vm:()=>l});var d=c(37047),e=c(41991);let f=["基本满足","大致符合","力争","原则上","大概","左右","尽可能","尽量满足"],g=/基本|大致|力争|原则上|大概|左右|尽可能|尽量/u,h=["基本满足招标文件要求","大致符合相关规范标准","力争达到优良质量标准","原则上按照规范执行","尽可能保证工程质量","尽量满足工期要求"],i=["结构构件左右对称布置","平面布置左右对称合理","力争上游的企业精神"];async function j(a){return(0,e.A)({prototypes:[...h],negativePrototypes:[...i],lexicalHints:g,embedDocuments:a})}function k(a){return f.filter(b=>a.includes(b)).map(b=>({phrase:b,count:a.split(b).length-1}))}let l=["精心组织、科学管理,确保工程质量","严格执行相关规范和设计要求","根据实际情况适当调整施工安排","建立健全管理体系,加强过程管理","全力保障项目顺利推进"];async function m(a,b){let c=a.split(/\n+/u).filter(a=>a.trim()&&!/^\s*(#{1,6}\s+|\||[-*+]\s|>)/u.test(a)).flatMap(a=>a.split(/[。;;]/u)).map(a=>a.trim()).filter(a=>a.length>=12),e=await (0,d.Mv)(c,[...l],b),f=await j(b),h=await f(c),i=c.filter(a=>g.test(a)).length,k=h.filter(Boolean).length,m=c.map((a,b)=>l.some(b=>e(a,b)>=d.Eh)||h[b]),n=m.filter(Boolean).length,o=[...new Set(c.filter((a,b)=>m[b]))].slice(0,40),p=c.length?n/c.length:0;return{totalSentences:c.length,fillerSentences:n,ratio:p,level:p>=.4?"heavy":p>=.2?"medium":"light",vagueCandidateSentences:i,vagueSemanticSentences:k,fillerSentenceDetails:o}}let n={plan:"制定专项施工方案与管理制度,明确技术措施",process:"施工工序流程与工艺步骤顺序",role:"由项目经理、技术负责人等岗位人员分工负责",frequency:"每日、每周等检查频次与时间节点安排",acceptance:"经检查验收合格后整改销项闭环"};async function o(a,b){let c=a.split(/\n{2,}/u).filter(a=>a.trim().length>=30),e=Object.values(n),f=await (0,d.Mv)(c,e,b),g=/项目经理|技术负责人|施工员|质检员|安全员|材料员|资料员|测量员|劳资员|班组长|监理工程师|试验员/u,h=/每日|每天|每周|每月|每季度|每批|不少于\s*\d+\s*次|至少\s*\d+\s*次|每周\s*\d+\s*次|每日\s*\d+\s*次|每\s*\d+\s*日/u,i=/整改|复查|销项|复验|闭环|返工/u,j=/专项施工方案|专项方案|施工方案|施工组织设计|技术措施|管理制度|技术交底|作业指导书|操作规程/u,k=/施工工序|工艺流程|施工流程|作业流程|施工顺序|施工步骤|工艺步骤|流水段|流水作业|依次施工|工序/u,l=(a,b)=>{let c=(b!==n.plan||!!j.test(a))&&(!!(b===n.plan&&j.test(a))||(b!==n.process||!!k.test(a))&&(!!(b===n.process&&k.test(a))||(b!==n.role||!!g.test(a))&&(!!(b===n.role&&g.test(a))||(b!==n.frequency||!!h.test(a))&&(!!(b===n.frequency&&h.test(a))||(b!==n.acceptance||!!i.test(a))&&(!!(b===n.acceptance&&i.test(a))||void 0)))));return void 0!==c?c:f(a,b)>=d.Eh},m=0,o=0,p=0;for(let a of c)e.filter(b=>l(a,b)).length>=4?m+=1:l(a,n.role)&&l(a,n.frequency)||(o+=1),l(a,n.role)&&l(a,n.frequency)&&l(a,n.acceptance)&&(p+=1);return{blocks:c.length,completeBlocks:m,incompleteBlocks:o,closedLoopBlocks:p}}let p="分析该工程难点的成因与风险来源",q=/\d+(?:\.\d+)?\s*(?:mm|cm|m|米|℃|%|kN|MPa|次|天|小时|h|Hz|m³)/u;async function r(a,b){let c=(function(a){let b=a.match(/#{2,3}\s*[^\n]*(?:重难点|重点难点|工程难点|难点分析)[^\n]*\n/u);if(!b||void 0===b.index)return"";let c=b.index+b[0].length,d=a.slice(c),e=d.search(/^#{2,3}\s+/mu);return e>=0?d.slice(0,e):d})(a).split(/\n{2,}/u).filter(a=>a.trim().length>=20),e=await (0,d.Mv)(c,[p],b),f=0,g=0,h=0,i=[];for(let a of c){let b=e(a,p)>=d.Eh,c=q.test(a);b&&(f+=1),c&&(g+=1),b&&c&&(h+=1),i.push({text:a,attributed:b,quantified:c})}let j=c.length?h/c.length:0;return{countermeasures:c.length,attributed:f,quantified:g,bothCount:h,ratio:j,heavyTemplated:c.length>0&&j<.5,entries:i.slice(0,24)}}let s=/建筑业10项新技术|10项新技术|安徽省住房城乡建设领域新技术推广目录|新技术推广目录|建设领域推广/u,t=/替代|取代|淘汰.{0,10}(?:工艺|技术|做法)|(?:较|比).{0,10}(?:传统|常规|普通)/u,u=/(?:提升|提高|节省|节约|降低|缩短|减少).{0,10}(?:效率|工期|成本|损耗|能耗|人工|周期)|升级价值|效益显著/u,v=["BIM","铝模","附着式升降脚手架","跳仓法","直螺纹","装配式","灌浆套筒","自动化监测","智慧工地","再生利用","非开挖","CCTV","碳纤维","薄贴法","干法施工","液压提升","预制","光伏一体化","BIPV","模块化"];function w(a){let b=v.filter(b=>a.includes(b)),c=s.test(a),d=t.test(a),e=u.test(a),f=[c,d,e].filter(Boolean).length;return{found:[...b],catalogCited:c,replaceClaimed:d,upgradeClaimed:e,effective:b.length>0&&f>=2}}let x=[/基坑|沟槽/u,/模板支撑|高支模/u,/脚手架|悬挑|附着式/u,/起重吊装|吊装/u,/幕墙/u,/人工挖孔桩/u,/装配式|钢结构安装/u,/拆除工程/u,/顶管|盾构|暗挖/u,/有限空间|水下作业/u,/吊篮/u,/塔吊|施工电梯|升降机/u,/沉井/u],y=/超危大|超规模|专家论证|一般危大/u,z=/(?:深度|高度|跨度|开挖).{0,8}\d+(?:\.\d+)?\s*(?:m|米)|(?:重量|吊装).{0,8}\d+(?:\.\d+)?\s*(?:kN|千牛)/u;function A(a){let b=x.filter(b=>b.test(a)).map(a=>a.source.replace(/\\u\w*|\\|\(|\||\)/gu,"")),c=y.test(a),d=z.test(a);return{categories:b,graded:c,paramMatched:d,twoStepComplete:b.length>0&&c&&d}}let B=[{name:"总则",pattern:/总则/u},{name:"组织机构及职责",pattern:/应急(?:组织|领导)|组织机构|应急指挥部|应急小组/u},{name:"风险分析与危险源辨识",pattern:/风险分析|危险源辨识|风险辨识/u},{name:"应急物资设备通讯保障",pattern:/应急物资|物资.{0,8}(?:保障|储备)|通讯保障|通信保障/u},{name:"专项应急预案",pattern:/专项应急预案|专项预案/u},{name:"应急响应流程",pattern:/应急响应|响应流程|响应程序/u},{name:"后期处置",pattern:/后期处置|善后|事故调查/u},{name:"培训演练",pattern:/(?:应急)?演练|培训.{0,6}演练/u}],C=["高处坠落","物体打击","坍塌","触电","火灾","起重","防汛","防台风","中暑","中毒窒息","管线破坏"];function D(a){let b=B.filter(b=>b.pattern.test(a)).map(a=>a.name),c=B.filter(b=>!b.pattern.test(a)).map(a=>a.name),d=C.filter(b=>a.includes(b));return{coveredParts:[...b],missingParts:[...c],coverage:b.length/B.length,planHits:[...d]}}let E=[/其他项目/u,/其他标段/u,/其他城市/u,/本公司(?:其他|承建)/u,/某(?:市|县|区|项目)(?:的)?/u,/他项目/u,/兄弟项目/u];function F(a){let b=a.replace(/及其他项目/gu,"及〔清单列举项〕");return E.filter(a=>a.test(b)).map(a=>a.source.replace(/\\u/gu,""))}},56942:(a,b,c)=>{c.d(b,{$:()=>g,R:()=>h});var d=c(92808);function e(a){return[...new Set(a.filter(Boolean))]}function f(a){let b=(0,d.t0)(a,d.hW);return b.length>0?b:["project_overview"]}function g(a){var b,c,d;let g=a.resolvedRoles.filter(a=>a.required&&!a.satisfied).map(a=>a.role),h=a.resolvedRoles.filter(a=>a.weak).map(a=>a.role),i=(b=a.template,c=a.spec,d=a.summary,b.chapters.map(a=>{let b=function(a,b){let c=b.chapterRules.find(b=>b.id===a.id||b.title===a.title),d=(c?.requiredFactIds||[]).map(a=>b.factFields.find(b=>b.id===a)?.name).filter(Boolean);return e([...a.requiredFacts||[],...d])}(a,c),g=e([...f([a.title,a.purpose,...a.queries||[],...a.sections||[]].join("\n")),...b.flatMap(a=>f(a))]),h=g.filter(a=>(d.materialInventory[a]||[]).length>0),i=h.reduce((a,b)=>a+(d.materialInventory[b]||[]).length,0),j=b.filter(a=>f(a).some(a=>h.includes(a))),k=b.filter(a=>!j.includes(a));return{chapterId:a.id,title:a.title,requiredFacts:b,coveredFacts:j,missingFacts:k,requiredRoles:g,satisfiedRoles:h,evidenceCount:i}})),j=[],k=[];0===a.template.chapters.length&&k.push("模板未配置章节,建议通过模板章节或显式 OUTLINE 提供文档结构"),a.template.chapters.some(a=>!a.purpose&&(!a.queries||0===a.queries.length)&&(!a.requiredFacts||0===a.requiredFacts.length))&&k.push("部分模板章节缺少 purpose、queries 或 requiredFacts,生成质量可能不稳定"),a.summary.source.ambiguous&&j.push(a.summary.source.selectionReason),a.summary.fingerprint.confidence<.34&&k.push("材料指纹置信度较低,建议绑定明确的材料文件"),0===a.summary.source.selectedFiles&&j.push("未绑定可用项目资料文件,无法支撑文档生成"),g.length>0&&0===a.summary.source.selectedFiles&&k.push("模板未绑定可用项目资料文件,请先绑定参与生成的资料"),h.length>0&&0===a.summary.source.selectedFiles&&k.push("绑定资料证据较弱,请确认资料已完成索引");let l=i.filter(a=>0===a.evidenceCount);l.length>0&&k.push(`章节级证据覆盖较弱:${l.slice(0,5).map(a=>a.title).join("、")}`);let m=a.summary.coverage.satisfiedRoles,n=a.resolvedRoles.filter(a=>!a.required&&!a.satisfied).map(a=>a.role),o=[`资料范围:${a.summary.source.selectionReason},可用文件 ${a.summary.source.selectedFiles}/${a.summary.source.totalFiles} 份`,`已识别资料类型:${m.join("、")||"无"}`,a.summary.coverage.missingRoles.length?`待补充必需资料类型:${a.summary.coverage.missingRoles.join("、")}`:"必需资料类型已满足",g.length?`模板强相关资料角色缺失:${g.join("、")}`:"模板强相关资料角色已满足",n.length?`可选资料角色未识别:${n.join("、")}`:"",h.length?`证据较弱资料角色:${h.join("、")}`:""].filter(Boolean);return{ready:0===j.length,missingRoles:g,weakRoles:h,diagnostics:o,chapterDiagnostics:i,blockingIssues:j,warnings:k}}function h(a,b={}){let c=a.chapterDiagnostics.filter(a=>0===a.evidenceCount||a.missingFacts.length>0).slice(0,8).map(a=>`${a.title}:证据 ${a.evidenceCount} 条${a.missingFacts.length?`,缺失 ${a.missingFacts.slice(0,6).join("、")}`:""}`);return b.publicSafe?["## 生成事实使用边界",c.length?`章节证据风险:
|
|
23
|
+
${a.status}`.toLowerCase().includes(c.toLowerCase()))&&e.set(a.relativePath,{...a,matchedBy:c?"path":a.matchedBy});if(c&&!1!==b.includeContent)try{for(let b of(await k().search(a,c,{limit:Math.max(20,d)})).results){let a=b.filePath,c=e.get(a)||f.find(b=>b.relativePath===a);e.set(a,{...c||{relativePath:a,category:"content",format:"knowledge",fileSize:0,mtime:0,chunkCount:0,indexedAt:0,lastVerifiedAt:0,status:"active"},matchedBy:"content",score:b.score})}}catch{}let g=Array.from(e.values()).sort((a,b)=>{let c=a=>"content"===a.matchedBy?3:"path"===a.matchedBy?2:+("metadata"===a.matchedBy);return c(b)-c(a)||(b.score??0)-(a.score??0)||b.mtime-a.mtime||a.relativePath.localeCompare(b.relativePath,"zh-CN")});return{files:g.slice(0,d),total:g.length}}async function p(a,b){let c=new Set;for(let a of b){let b=a.replace(/\\/gu,"/").split("/").filter(Boolean)[0];b&&c.add(b)}return 0===c.size?{deletedChunks:0,deletedFiles:0}:(await k().getProject(a)).syncIndexWithBoundGroups([...c])}},51144:(a,b,c)=>{function d(a,b,c,e="items"){let f=c.maxItems??Number.MAX_SAFE_INTEGER,g=c.maxChars??Number.MAX_SAFE_INTEGER,h=c.charFn??(a=>JSON.stringify(a).length),i=a.map(a=>({item:a,score:b(a)}));i.sort((a,b)=>b.score-a.score);let j=[],k=[],l=0;for(let{item:a}of i){let b=h(a);j.length<f&&l+b<=g?(j.push(a),l+=b):k.push(a)}let m=[];if(k.length>0){for(let a of(m.push(`[selection] ${e}: 预算 ${f}项/${g}字符 → 选中 ${j.length}项(${l}字符),丢弃 ${k.length}项`),k.slice(0,10))){let b="string"==typeof a?a.slice(0,80):JSON.stringify(a).slice(0,80);m.push(` - 丢弃: ${b}`)}k.length>10&&m.push(` ... 及其他 ${k.length-10} 项`)}return{selected:j,dropped:k,droppedLog:m}}function e(a){let b=0,c=a.length;return 0===c?0:(b+=3*(a.match(/\d+(?:\.\d+)?/gu)||[]).length,/m[23²³]?|mm|cm|km|t|kg|台|套|个|项|批|次|份|人|日历天|天|月|万元|元|%|MPa|kPa|kN|℃/iu.test(a)&&(b+=2),/GB|JGJ|ISO|CJJ|CECS|DL|YB|SH|HG|SY|NB/iu.test(a)&&(b+=3),/验收|质量|安全|工期|进度|成本|风险|危大|重点|难点|关键|控制|标准|规范|设计|施工|材料|设备/u.test(a)&&(b+=1),c<20&&(b-=1),/项目名称|工程名称|招标人|建设地点|计划工期|质量标准|合同估算/u.test(a)&&(b+=2),b)}c.d(b,{Cr:()=>d,Ox:()=>e})},52922:(a,b,c)=>{c.d(b,{Bt:()=>m,JD:()=>A,J_:()=>j,Pm:()=>o,T4:()=>w,Ye:()=>k,bH:()=>D,gE:()=>r,nY:()=>F,vm:()=>l});var d=c(37047),e=c(41991);let f=["基本满足","大致符合","力争","原则上","大概","左右","尽可能","尽量满足"],g=/基本|大致|力争|原则上|大概|左右|尽可能|尽量/u,h=["基本满足招标文件要求","大致符合相关规范标准","力争达到优良质量标准","原则上按照规范执行","尽可能保证工程质量","尽量满足工期要求"],i=["结构构件左右对称布置","平面布置左右对称合理","力争上游的企业精神"];async function j(a){return(0,e.A)({prototypes:[...h],negativePrototypes:[...i],lexicalHints:g,embedDocuments:a})}function k(a){return f.filter(b=>a.includes(b)).map(b=>({phrase:b,count:a.split(b).length-1}))}let l=["精心组织、科学管理,确保工程质量","严格执行相关规范和设计要求","根据实际情况适当调整施工安排","建立健全管理体系,加强过程管理","全力保障项目顺利推进"];async function m(a,b){let c=a.split(/\n+/u).filter(a=>a.trim()&&!/^\s*(#{1,6}\s+|\||[-*+]\s|>)/u.test(a)).flatMap(a=>a.split(/[。;;]/u)).map(a=>a.trim()).filter(a=>a.length>=12),e=await (0,d.Mv)(c,[...l],b),f=await j(b),h=await f(c),i=c.filter(a=>g.test(a)).length,k=h.filter(Boolean).length,m=c.map((a,b)=>l.some(b=>e(a,b)>=d.Eh)||h[b]),n=m.filter(Boolean).length,o=[...new Set(c.filter((a,b)=>m[b]))].slice(0,40),p=c.length?n/c.length:0;return{totalSentences:c.length,fillerSentences:n,ratio:p,level:p>=.4?"heavy":p>=.2?"medium":"light",vagueCandidateSentences:i,vagueSemanticSentences:k,fillerSentenceDetails:o}}let n={plan:"制定专项施工方案与管理制度,明确技术措施",process:"施工工序流程与工艺步骤顺序",role:"由项目经理、技术负责人等岗位人员分工负责",frequency:"每日、每周等检查频次与时间节点安排",acceptance:"经检查验收合格后整改销项闭环"};async function o(a,b){let c=a.split(/\n{2,}/u).filter(a=>a.trim().length>=30),e=Object.values(n),f=await (0,d.Mv)(c,e,b),g=/项目经理|技术负责人|施工员|质检员|安全员|材料员|资料员|测量员|劳资员|班组长|监理工程师|试验员/u,h=/每日|每天|每周|每月|每季度|每批|不少于\s*\d+\s*次|至少\s*\d+\s*次|每周\s*\d+\s*次|每日\s*\d+\s*次|每\s*\d+\s*日/u,i=/整改|复查|销项|复验|闭环|返工/u,j=/专项施工方案|专项方案|施工方案|施工组织设计|技术措施|管理制度|技术交底|作业指导书|操作规程/u,k=/施工工序|工艺流程|施工流程|作业流程|施工顺序|施工步骤|工艺步骤|流水段|流水作业|依次施工|工序/u,l=(a,b)=>{let c=(b!==n.plan||!!j.test(a))&&(!!(b===n.plan&&j.test(a))||(b!==n.process||!!k.test(a))&&(!!(b===n.process&&k.test(a))||(b!==n.role||!!g.test(a))&&(!!(b===n.role&&g.test(a))||(b!==n.frequency||!!h.test(a))&&(!!(b===n.frequency&&h.test(a))||(b!==n.acceptance||!!i.test(a))&&(!!(b===n.acceptance&&i.test(a))||void 0)))));return void 0!==c?c:f(a,b)>=d.Eh},m=0,o=0,p=0;for(let a of c)e.filter(b=>l(a,b)).length>=4?m+=1:l(a,n.role)&&l(a,n.frequency)||(o+=1),l(a,n.role)&&l(a,n.frequency)&&l(a,n.acceptance)&&(p+=1);return{blocks:c.length,completeBlocks:m,incompleteBlocks:o,closedLoopBlocks:p}}let p="分析该工程难点的成因与风险来源",q=/\d+(?:\.\d+)?\s*(?:mm|cm|m|米|℃|%|kN|MPa|次|天|小时|h|Hz|m³)/u;async function r(a,b){let c=(function(a){let b=a.match(/#{2,3}\s*[^\n]*(?:重难点|重点难点|工程难点|难点分析)[^\n]*\n/u);if(!b||void 0===b.index)return"";let c=b.index+b[0].length,d=a.slice(c),e=d.search(/^#{2,3}\s+/mu);return e>=0?d.slice(0,e):d})(a).split(/\n{2,}/u).filter(a=>a.trim().length>=20),e=await (0,d.Mv)(c,[p],b),f=0,g=0,h=0,i=[];for(let a of c){let b=e(a,p)>=d.Eh,c=q.test(a);b&&(f+=1),c&&(g+=1),b&&c&&(h+=1),i.push({text:a,attributed:b,quantified:c})}let j=c.length?h/c.length:0;return{countermeasures:c.length,attributed:f,quantified:g,bothCount:h,ratio:j,heavyTemplated:c.length>0&&j<.5,entries:i.slice(0,24)}}let s=/建筑业10项新技术|10项新技术|安徽省住房城乡建设领域新技术推广目录|新技术推广目录|建设领域推广/u,t=/替代|取代|淘汰.{0,10}(?:工艺|技术|做法)|(?:较|比).{0,10}(?:传统|常规|普通)/u,u=/(?:提升|提高|节省|节约|降低|缩短|减少).{0,10}(?:效率|工期|成本|损耗|能耗|人工|周期)|升级价值|效益显著/u,v=["BIM","铝模","附着式升降脚手架","跳仓法","直螺纹","装配式","灌浆套筒","自动化监测","智慧工地","再生利用","非开挖","CCTV","碳纤维","薄贴法","干法施工","液压提升","预制","光伏一体化","BIPV","模块化"];function w(a){let b=v.filter(b=>a.includes(b)),c=s.test(a),d=t.test(a),e=u.test(a),f=[c,d,e].filter(Boolean).length;return{found:[...b],catalogCited:c,replaceClaimed:d,upgradeClaimed:e,effective:b.length>0&&f>=2}}let x=[/基坑|沟槽/u,/模板支撑|高支模/u,/脚手架|悬挑|附着式/u,/起重吊装|吊装/u,/幕墙/u,/人工挖孔桩/u,/装配式|钢结构安装/u,/拆除工程/u,/顶管|盾构|暗挖/u,/有限空间|水下作业/u,/吊篮/u,/塔吊|施工电梯|升降机/u,/沉井/u],y=/超危大|超规模|专家论证|一般危大/u,z=/(?:深度|高度|跨度|开挖).{0,8}\d+(?:\.\d+)?\s*(?:m|米)|(?:重量|吊装).{0,8}\d+(?:\.\d+)?\s*(?:kN|千牛)/u;function A(a){let b=x.filter(b=>b.test(a)).map(a=>a.source.replace(/\\u\w*|\\|\(|\||\)/gu,"")),c=y.test(a),d=z.test(a);return{categories:b,graded:c,paramMatched:d,twoStepComplete:b.length>0&&c&&d}}let B=[{name:"总则",pattern:/总则/u},{name:"组织机构及职责",pattern:/应急(?:组织|领导)|组织机构|应急指挥部|应急小组/u},{name:"风险分析与危险源辨识",pattern:/风险分析|危险源辨识|风险辨识/u},{name:"应急物资设备通讯保障",pattern:/应急物资|物资.{0,8}(?:保障|储备)|通讯保障|通信保障/u},{name:"专项应急预案",pattern:/专项应急预案|专项预案/u},{name:"应急响应流程",pattern:/应急响应|响应流程|响应程序/u},{name:"后期处置",pattern:/后期处置|善后|事故调查/u},{name:"培训演练",pattern:/(?:应急)?演练|培训.{0,6}演练/u}],C=["高处坠落","物体打击","坍塌","触电","火灾","起重","防汛","防台风","中暑","中毒窒息","管线破坏"];function D(a){let b=B.filter(b=>b.pattern.test(a)).map(a=>a.name),c=B.filter(b=>!b.pattern.test(a)).map(a=>a.name),d=C.filter(b=>a.includes(b));return{coveredParts:[...b],missingParts:[...c],coverage:b.length/B.length,planHits:[...d]}}let E=[/其他项目/u,/其他标段/u,/其他城市/u,/本公司(?:其他|承建)/u,/某(?:市|县|区|项目)(?:的)?/u,/他项目/u,/兄弟项目/u];function F(a){let b=a.replace(/及其他项目/gu,"及〔清单列举项〕");return E.filter(a=>a.test(b)).map(a=>a.source.replace(/\\u/gu,""))}},56942:(a,b,c)=>{c.d(b,{$:()=>g,R:()=>h});var d=c(92808);function e(a){return[...new Set(a.filter(Boolean))]}function f(a){let b=(0,d.t0)(a,d.hW);return b.length>0?b:["project_overview"]}function g(a){var b,c,d;let g=a.resolvedRoles.filter(a=>a.required&&!a.satisfied).map(a=>a.role),h=a.resolvedRoles.filter(a=>a.weak).map(a=>a.role),i=(b=a.template,c=a.spec,d=a.summary,b.chapters.map(a=>{let b=function(a,b){let c=b.chapterRules.find(b=>b.id===a.id||b.title===a.title),d=(c?.requiredFactIds||[]).map(a=>b.factFields.find(b=>b.id===a)?.name).filter(Boolean);return e([...a.requiredFacts||[],...d])}(a,c),g=e([...f([a.title,a.purpose,...a.queries||[],...a.sections||[]].join("\n")),...b.flatMap(a=>f(a))]),h=g.filter(a=>(d.materialInventory[a]||[]).length>0),i=h.reduce((a,b)=>a+(d.materialInventory[b]||[]).length,0),j=b.filter(a=>f(a).some(a=>h.includes(a))),k=b.filter(a=>!j.includes(a));return{chapterId:a.id,title:a.title,requiredFacts:b,coveredFacts:j,missingFacts:k,requiredRoles:g,satisfiedRoles:h,evidenceCount:i}})),j=[],k=[];0===a.template.chapters.length&&k.push("模板未配置章节,建议通过模板章节或显式 OUTLINE 提供文档结构"),a.template.chapters.some(a=>!a.purpose&&(!a.queries||0===a.queries.length)&&(!a.requiredFacts||0===a.requiredFacts.length))&&k.push("部分模板章节缺少 purpose、queries 或 requiredFacts,生成质量可能不稳定"),a.summary.source.ambiguous&&j.push(a.summary.source.selectionReason),a.summary.fingerprint.confidence<.34&&k.push("材料指纹置信度较低,建议绑定明确的材料文件"),0===a.summary.source.selectedFiles&&j.push("未绑定可用项目资料文件,无法支撑文档生成"),g.length>0&&0===a.summary.source.selectedFiles&&k.push("模板未绑定可用项目资料文件,请先绑定参与生成的资料"),h.length>0&&0===a.summary.source.selectedFiles&&k.push("绑定资料证据较弱,请确认资料已完成索引");let l=i.filter(a=>0===a.evidenceCount);l.length>0&&k.push(`章节级证据覆盖较弱:${l.slice(0,5).map(a=>a.title).join("、")}`);let m=a.summary.coverage.satisfiedRoles,n=a.resolvedRoles.filter(a=>!a.required&&!a.satisfied).map(a=>a.role),o=[`资料范围:${a.summary.source.selectionReason},可用文件 ${a.summary.source.selectedFiles}/${a.summary.source.totalFiles} 份`,`已识别资料类型:${m.join("、")||"无"}`,a.summary.coverage.missingRoles.length?`待补充必需资料类型:${a.summary.coverage.missingRoles.join("、")}`:"必需资料类型已满足",g.length?`模板强相关资料角色缺失:${g.join("、")}`:"模板强相关资料角色已满足",n.length?`可选资料角色未识别:${n.join("、")}`:"",h.length?`证据较弱资料角色:${h.join("、")}`:""].filter(Boolean);return{ready:0===j.length,missingRoles:g,weakRoles:h,diagnostics:o,chapterDiagnostics:i,blockingIssues:j,warnings:k}}function h(a,b={}){let c=a.chapterDiagnostics.filter(a=>0===a.evidenceCount||a.missingFacts.length>0).slice(0,8).map(a=>`${a.title}:证据 ${a.evidenceCount} 条${a.missingFacts.length?`,缺失 ${a.missingFacts.slice(0,6).join("、")}`:""}`);return b.publicSafe?["## 生成事实使用边界",c.length?`章节证据风险:
|
|
24
24
|
${c.join("\n")}`:"","资料不足的事实不得编造;仅施工组织、计划安排、资源配置类数据可在文档要求允许时进行计划推导并标注。"].filter(Boolean).join("\n"):["## 后台生成准备度",`可生成:${a.ready?"是":"否"}`,a.missingRoles.length?`资料诊断:部分模板期望资料类型未从绑定文件中明确识别,生成时仅使用已绑定资料中的事实`:"",a.weakRoles.length?`资料诊断:部分资料类型证据较弱,生成时不得补写资料未明确的事实`:"",c.length?`章节级证据风险:
|
|
25
25
|
${c.join("\n")}`:""].filter(Boolean).join("\n")}},58965:(a,b,c)=>{c.d(b,{$m:()=>f,VX:()=>d,tK:()=>e});let d=/\b(?:TDbPipe|TDbPipeValve|TDbPipeFitting|TDbWellh|AcDb\w+|Dwg\w+|Polyline|Hatch|Layer|BlockReference)\b/giu,e=/[\w\u4e00-\u9fa5()()\-—_+\s]+\.(?:pdf|dwg|docx?|xlsx?|xls|csv|png|jpe?g|webp)\b/giu,f="[零〇一二三四五六七八九十百千万两]+"},61373:(a,b,c)=>{c.d(b,{rd:()=>M,KX:()=>N,kt:()=>C,K7:()=>E,V3:()=>aq,cf:()=>W,p8:()=>X,y4:()=>R,r4:()=>Y,rs:()=>ap,BJ:()=>K,Re:()=>x,z1:()=>B,wi:()=>s,bR:()=>Z,UG:()=>an,CK:()=>al,Ed:()=>am,Bl:()=>U,FD:()=>h,kT:()=>L,nP:()=>J,uv:()=>I,bx:()=>F,dh:()=>$,b_:()=>Q});var d=c(58965),e=c(22157),f=c(70208),g=c(41991);function h(a,b){return b?a.replace(/^!\[[^\]]*(?:图纸|drawing|cad|地图|平面|剖面|立面)[^\]]*\]\([^)]*\)\s*$/gimu,"").replace(/\n{3,}/gu,"\n\n"):a}let i=/^.*(?:知识库证据|知识库已确认事实|资料类型|提示词角色|后台自动规范|规范包|事实字段|资料未提供|未检索到|待确认事项|证据来源|来源清单|校验结果|修复任务包|修复类型|修复对象|输出要求|当前项目绑定资料|已召回证据|证据边界|可审查草稿|Reviewer|Repairer).*$(?:\s)?|^.*本节围绕.+确保各项措施与本工程实施条件相匹配。?\s*$(?:\s)?|^.*建立施工准备、过程控制、检查验收和资料归档要求.*$(?:\s)?|^.*形成责任明确、过程可控、资料完整的管理闭环。?\s*$(?:\s)?|^.*确保现场管理要求与施工进度、资源组织和验收节点同步推进。?\s*$(?:\s)?|^\s*(?:管理闭环|责任明确、过程可控、资料完整|与本工程实施条件相匹配)[。;;]?\s*$(?:\s)?/gmu,j=/^\s*(?:#{1,6}\s*)?(?:PDF\s*第\s*\d+\s*页|rule\b|文件[::]|片段[::]|来源[::]).*$/gimu,k=/^\s*(?:[│┃┆┊┌┐└┘├┤┬┴┼─━╭╮╰╯]|[↓↑→←⇒⇨➡])+\s*$/gmu,l=/^#{2,6}\s+(?:\d+(?:\.\d+)*\s*)?(?:[-—–]\s*)?(?:判断|判定|识别|确认)?是否(?:涉及|涉|需要|适用)|^#{2,6}\s+(?:\d+(?:\.\d+)*\s*)?(?:[-—–]\s*)?(?:如|若|如果)(?:涉及|不涉及|适用|不适用)|^#{2,6}\s+.*(?:根据|结合).{0,12}(?:实际情况|项目情况|资料情况).{0,8}(?:判断|确定|编写|生成)|^#{2,6}\s+.*(?:按需(?:生成|编写)|视情况|判断后|生成要求|编写要求|说明要求|注意事项)\s*$/gmu,m=/^(?:\d+(?:\.\d+)*\s*)?(?:[-—–]\s*)?(?:(?:判断|判定|识别|确认)?是否(?:涉及|涉|需要|适用).*|(?:如|若|如果)(?:涉及|不涉及|适用|不适用).*|.*(?:根据|结合).{0,12}(?:实际情况|项目情况|资料情况).{0,8}(?:判断|确定|编写|生成).*|.*(?:按需(?:生成|编写)|视情况|判断后|生成要求|编写要求|说明要求|注意事项))\s*$/u,n=/注意事项|如何|怎么写|按需|视情况|是否/u,o=["如何编写施工方案的写作说明标题","根据项目情况判断的注意事项标题","按需生成的编写要求与说明标题"],p=["危大工程专项施工方案与安全措施","质量验收标准与检测要求","成品保护与移交管理措施"];async function q(a){return(0,g.A)({prototypes:[...o],negativePrototypes:[...p],embedDocuments:a})}function r(a){let b=a.replace(/^#{1,6}\s+/u,"").replace(/^\s*\d+(?:\.\d+)*(?:[..、]|\s)+/u,"").replace(/^第[一二三四五六七八九十百千万\d]+[章节篇部分]\s*/u,"").trim(),c=(0,f.GQ)(b);return m.test(b)||m.test(c)||(0,f.mq)(b)||(0,f.mq)(c)}function s(a){return a.replace(/PDF\s*第\s*\d+(?:\s*[-—至到~~]\s*\d+)?\s*页/giu,"相关资料").replace(/PDF\s*第(?![ \t]*[0-90-9])/giu,"").replace(/第\s*\d+\s*页\s*(?:\/|共)\s*\d+\s*页/gu,"").replace(/第\s*\d+\s*(?:[-—至到~~]\s*\d+)?\s*页/gu,"相关资料").replace(/(装饰工程|土建工程|加固工程|给排水工程|电气工程|智能化工程|消防工程|弱电智能化工程|室外道排工程|建筑结构加固工程)\s*(?:(?:施工)?图纸|资料|文件)?\s*[((]?\s*(?:(?:共|多达|约|合计)\s*)?\d+\s*页\s*[))]?/gu,"$1施工图纸").replace(/\d+\s*页\s*(装饰|土建|加固|给排水|电气|智能化|消防|弱电智能化|室外道排|建筑结构加固)\s*(?:专业)?\s*(?:(?:施工)?图纸)?/gu,"$1专业图纸").replace(/(装饰|土建|加固|给排水|电气|智能化|消防|弱电智能化|室外道排|建筑结构加固)\s*(?:专业)?\s*(?:[((]\s*)?\d+\s*页\s*(?:(?:施工)?图纸)?\s*[))]?/gu,"$1专业图纸").replace(/([\u4e00-\u9fa5A-Za-z0-9、及与和]{2,24})\s*(?:共|多达|约|合计)\s*\d+\s*页/gu,"$1相关专业图纸").replace(/([\u4e00-\u9fa5A-Za-z0-9()()、·-]{2,24}工程)\s*(?:图纸|资料|文件)?\s*[((]?\s*(?:(?:共|多达|约|合计)\s*)?\d+\s*页\s*[))]?/gu,"$1施工图纸").replace(/([\u4e00-\u9fa5A-Za-z0-9()()、·-]{2,24})(?<!施工)\s*(?:施工)?图纸\s*[((]?\s*(?:(?:共|多达|约|合计)\s*)?\d+\s*页\s*[))]?/gu,"$1施工图纸").replace(/(给排水|电气|智能化|消防|暖通|人防)\s*[((]\s*\d+\s*页\s*[))]/gu,"$1专业图纸").replace(/(?:依据|按照|结合)?\s*图纸\s*[((]\s*\d+\s*页\s*[))]/gu,"依据相关专业图纸").replace(/(?:依据|按照|结合)?\s*清单\s*[((]?\s*\d+\s*页\s*[))]?/gu,"依据工程量清单").replace(/资料\s*[((]?\s*\d+\s*页\s*[))]?/gu,"项目资料").replace(/[((]?[\u4e00-\u9fa5A-Za-z0-9、及与和]*(?:图纸|清单|资料|文件|工程)?[\u4e00-\u9fa5A-Za-z0-9、及与和]*(?:(?:共|多达|约|合计)\s*)?\d+\s*页[\u4e00-\u9fa5A-Za-z0-9、及与和]*(?:图纸|清单|资料|文件)?[))]?/gu,a=>/图纸|工程|装饰|土建|加固|给排水|电气|智能化|消防/u.test(a)?"相关专业图纸":/清单/u.test(a)?"工程量清单":"相关资料").replace(/(?:位于|详见|见|参见|依据|按照|结合)?\s*相关资料(?:\s*相关资料)+/gu,"相关资料")}let t=String.raw`(?:\d+[.、](?=\s|\*\*)\s*|[((]\d+[))]\s*|[-*+]\s+)`;function u(a){return/^\s*\|/u.test(a)||/^\s*\|?\s*:?-{3,}:?/u.test(a)?a:a.replace(/([。;;])\s*(?=(?:\d+[.、](?=\s|\*\*)\s*|[((]\d+[))]\s*|[-*+]\s+)\S)/gu,"$1\n").replace(/([^\n])\s+(?=(?:\d+[.、](?=\s|\*\*)\s*|[((]\d+[))]\s*|[-*+]\s+)\*\*)/gu,"$1\n")}RegExp(String.raw`\S.+(?:\s|[。;;])${t}\S.+(?:\s|[。;;])${t}\S`,"u");let v=RegExp(`\r?
|
|
26
26
|
`,"u"),w=RegExp(`
|
|
@@ -19,7 +19,7 @@ ${d}`,"写作要求:必须严格按“主题块→H4 要点”两层结构输
|
|
|
19
19
|
|]{0,10}?)(\\d{3,})(\\s*mm)`,"gu"),group:2},{re:RegExp(`(\\d{3,})(\\s*mm厚?[^。;;
|
|
20
20
|
|]{0,18}(?:${aj}))`,"gu"),group:1}])for(let f of[...b.matchAll(a)].filter(a=>Number(a[e])>=100)){let a=Number(f[e]),g=String(Math.round(a/10));b=b.replace(f[0],f[0].replace(f[e]??"",g)),c+=1,d.push(`${a}mm→${g}mm`)}return{markdown:b,fixedCount:c,details:d}}function al(a){let b=[...a.matchAll(/高峰期总人数(\d+)人|劳动力总人数(\d+)人|总人数(\d+)人/gu)],c=[...a.matchAll(/高峰(?:期)?人数(\d+)人|峰值(?:需求|人数)?[为约]?(\d+)人/gu)];if(0===b.length||0===c.length)return{markdown:a,fixedCount:0,details:[]};let d=a=>Number(a[1]||a[2]||a[3]),e=new Map;for(let a of b){let b=d(a);b>0&&e.set(b,(e.get(b)||0)+1)}let f=new Map;for(let a of c){let b=d(a);b>0&&f.set(b,(f.get(b)||0)+1)}let g=a=>[...a.entries()].sort((a,b)=>b[1]-a[1])[0],[h,i]=g(e),[j,k]=g(f);if(h===j)return{markdown:a,fixedCount:0,details:[]};let l=k>=i?j:h,m=k>=i?h:j,n=a,o=0,p=[],q=RegExp(`(高峰期总人数|劳动力总人数|总人数)(\\d+)人`,"gu"),r=RegExp(`(高峰(?:期)?人数)(\\d+)人`,"gu");return(n=k>=i?n.replace(q,(a,b,c)=>Number(c)===m?`${b}${l}人`:a):n.replace(r,(a,b,c)=>Number(c)===m?`${b}${l}人`:a))!==a&&(o=1,p.push(`劳动力峰值统一:${m}人→${l}人(${k>=i?"高峰口径":"总人数口径"}胜出)`)),{markdown:n,fixedCount:o,details:p}}let am=/暂列金额|暂估价|报价明细|综合单价|清单合价|预留金|投标报价|异常低价|评标基准价/u,an=/(?:税率|增值税)[^。;;\n]{0,12}\d/u,ao=/合同估算价|合同估算价格|投资估算|估算价格|工程估算价|最高投标限价|招标控制价/u,ap=/材料价格|商务报价|投标总价|合同总价|工程总价/u,aq=["暂列金额与暂估价的报价明细","综合单价与清单合价的商务数据","投标报价与费率标准的商务条款"],ar=["合同估算价与投资估算的项目信息","最高投标限价与招标控制价的公开信息","商务数据不得写入施工组织设计正文的约束说明"];async function as(a){return(0,h.A)({prototypes:[...aq],negativePrototypes:[...ar],embedDocuments:a})}async function at(a,b){let c=[],d=await as(b),e=[];for(let b of a.split(/\r?\n/u)){let a=b.trim();if(!(/^#{1,6}\s/u.test(a)||/^\s*\|/u.test(a))&&(am.test(b)||an.test(b)||ap.test(b)))for(let a of(an.test(b)&&c.push("税率/增值税"),b.split(/(?<=[。;;])\s*/u))){let b=a.match(am)||[],d=ao.test(a),f=ap.test(a);!(b.length>0)||d||f?(b.length>0&&(d||f)||f&&0===b.length)&&e.push(a):c.push(...b)}}if(e.length>0){let a=await d(e);e.forEach((b,d)=>{if(!a[d])return;let e=b.match(am)||[],f=b.match(ap)||[];c.push(...e.length>0?e:f)})}let f=[...new Set(c)].slice(0,4);return 0===f.length?[]:[{level:"error",severity:"blocker",category:"style",owner:"llm",repairability:"llm_repairable",message:`正文出现商务条款数据:${f.join("、")}`,suggestion:"商务数据(暂列金额/暂估价/综合单价/税率等)不得写入施组正文:删除该句或改写为定性表述(如“按合同约定执行”),商务口径仅保留在项目信息表中。"}]}function au(a){return a.split(/\r?\n/u).map(a=>{let b=a.trim();return/^#{1,6}\s/u.test(b)||/^\s*\|/u.test(b)||!am.test(a)&&!an.test(a)?a:a.split(/(?<=[。;;])\s*/u).filter(a=>!(am.test(a)||an.test(a))).join("")}).join("\n")}let av=[{key:"excavation",label:"基坑支护及土方外运",re:/基坑支护/u},{key:"zero",label:"地下结构出正负零",re:/正负零|地下室结构/u},{key:"topping",label:"主体结构封顶",re:/主体(?:结构)?封顶/u},{key:"decoration",label:"装饰装修及幕墙",re:/装饰装修/u},{key:"mep",label:"机电安装及智能化调试",re:/机电安装/u},{key:"completion",label:"室外工程及竣工验收",re:/竣工验收/u}];function aw(a){let b=[],c=(a,c,d)=>{let e=av.find(b=>b.re.test(a))?.key;void 0!==e&&Number.isFinite(c)&&c>=1&&c<=3e3&&b.push({key:e,day:c,raw:d})};for(let b of a.matchAll(/第(\d{2,3})日[^。;;\n]{0,14}?完成[^。;;\n,、]{0,12}?(基坑支护及土方外运|装饰装修及幕墙|机电安装及智能化调试|室外工程及竣工验收|地下结构出正负零|主体结构封顶|正负零|封顶)/gu))c(b[2],Number(b[1]),b[0].slice(0,40));for(let b of a.matchAll(/(基坑支护|正负零|封顶|装饰装修|机电安装|竣工验收)(?:(?!(?:第\d{2,3}[日天]|,|、)).){0,8}?完成[^。;;\n]{0,10}?第(\d{2,3})[日天]/gu))c(b[1],Number(b[2]),b[0].slice(0,40));for(let b of a.matchAll(/(主体(?:结构)?封顶)(?!后)(?:(?!(?:第\d{2,3}[日天]|,|、|完成|\||[。;;\n])).){0,20}?第(\d{2,3})日/gu))c(b[1],Number(b[2]),b[0].slice(0,40));for(let b of av){let d=RegExp(`^\\s*\\|\\s*[^|]*${b.re.source}[^|]*\\s*\\|\\s*开工(?:令下发)?后第(\\d{2,3})日\\s*\\|`,"gum");for(let b of a.matchAll(d))c(b[0],Number(b[1]),b[0].slice(0,40))}let d=new Set;return b.filter(a=>{let b=`${a.key}:${a.raw}`;return!d.has(b)&&(d.add(b),!0)})}function ax(a){let b=[],c=new Map;for(let b of aw(a)){let a=c.get(b.key)||[];a.push(b),c.set(b.key,a)}for(let a of av){let d=c.get(a.key);if(!d||d.length<2)continue;let e=[...new Set(d.map(a=>a.day))];if(e.length<2||Math.max(...e)-Math.min(...e)<5)continue;let f=[...new Set(d.map(a=>a.raw))].slice(0,4).join("、");b.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`节点工期口径矛盾:“${a.label}”节点出现 ${e.map(a=>`${a}日`).join(" 与 ")} 两套口径:${f}`,suggestion:`关键节点完成时间必须全文唯一:以总进度计划表为准统一“${a.label}”节点日期,删除正文/其他表中矛盾的“第N日”表述。`})}return b.slice(0,4)}let ay=[{key:"xps",label:"挤塑聚苯板(XPS)厚度",unit:"mm",kind:"number",patterns:[/(?:挤塑聚苯|XPS)(?:(?!(?:宽度|拼缝|不大于|不超过|小于|≤|采用|使用|选用|铺设|粘贴)).){0,40}?(\d+(?:\.\d+)?)\s*mm/gu,/(\d+(?:\.\d+)?)\s*mm[^。;;\n|]{0,10}?(?:挤塑聚苯|XPS)/gu]},{key:"cushion",label:"垫层混凝土强度等级",unit:"C标号",kind:"code",patterns:[/(?<!混凝土)垫层[^。;;\n|]{0,20}?(C\d{2})/gu]},{key:"transformer",label:"箱式变压器容量",unit:"kVA",kind:"number",patterns:[/(\d+)\s*kVA[^。;;\n|]{0,12}?变压器/gu,/变压器[^。;;\n|]{0,12}?(\d+)\s*kVA/gu]},{key:"formwork",label:"模板周转次数",unit:"次",kind:"number",patterns:[/模板周转(?:次数|使用)?[^。;;\n|]{0,15}?(\d+)\s*次/gu]},{key:"block",label:"蒸压加气混凝土砌块强度等级",unit:"A标号",kind:"code",patterns:[/(?:蒸压加气混凝土|加气混凝土)?砌块[^。;;\n]{0,24}?(A\d+(?:\.\d+)?)/gu]},{key:"extinguisher",label:"干粉灭火器数量",unit:"具",kind:"number",patterns:[/灭火器[^。;;\n]{0,24}?(\d+)\s*具/gu]},{key:"pump",label:"潜水泵(提升泵)数量",unit:"台",kind:"number",patterns:[/(?:潜水泵|提升泵)[^。;;\n]{0,24}?(\d+)\s*台/gu]},{key:"firstaid",label:"急救箱数量",unit:"套/个",kind:"number",patterns:[/急救箱[^。;;\n|]{0,24}?(\d+)\s*(?:套|个)/gu]},{key:"scheduleDays",label:"计划总工期",unit:"日历天",kind:"number",patterns:[/^\s*\|\s*计划工期\s*\|\s*(\d{1,4})\s*个?\s*日历天\s*\|/gum,/(?:计划工期|合同工期|工期总日历天数|工期控制|工期目标|总工期)[^。;;\n|]{0,12}?(\d{1,4})\s*个?\s*日历天/gu,/(\d{1,4})\s*个?\s*日历天[^。;;\n|]{0,8}?(?:总工期|倒排|分解|为唯一|完成)/gu]},{key:"prefabRatio",label:"装配率",unit:"%",kind:"number",patterns:[/装配率[^。;;\n|]{0,14}?(\d+(?:\.\d+)?)\s*%/gu,/装配率[^。;;\n|]{0,44}?计算为(\d+(?:\.\d+)?)\s*%/gu,/(\d+(?:\.\d+)?)\s*%(?:(?![,,。;;\n|]).){0,10}?装配率/gu]},{key:"projectCode",label:"项目编号",unit:"",kind:"code",patterns:[/(?:招标项目编号|项目编号)[^。;;\n|]{0,8}?(20\d{2}[A-Z]{1,8}\d{2,10})/gu]},{key:"towerCrane",label:"塔式起重机(塔吊)数量",unit:"台",kind:"number",patterns:[/(?:塔式起重机|塔吊)[^。;;\n|、,]{0,30}?(\d+)\s*台/gu,/(\d+)\s*台[A-Za-z0-9/\-–—~~]{0,16}\s{0,2}(?:塔式起重机|塔吊)/gu]},{key:"hoist",label:"施工升降机(施工电梯)数量",unit:"台",kind:"number",patterns:[/(?:施工升降机|施工电梯)[^。;;\n|、,]{0,30}?(\d+)\s*台/gu,/(\d+)\s*台[A-Za-z0-9/\-–—~~]{0,16}\s{0,2}(?:施工升降机|施工电梯)/gu]},{key:"truckCrane",label:"汽车起重机(汽车吊)数量",unit:"台",kind:"number",patterns:[/(?:汽车起重机|汽车吊)[^。;;\n|、,]{0,30}?(\d+)\s*台/gu,/(\d+)\s*台[A-Za-z0-9/\-–—~~]{0,16}\s{0,2}(?:汽车起重机|汽车吊)/gu]},{key:"rebarCutter",label:"钢筋切断机数量",unit:"台",kind:"number",patterns:[/钢筋切断机[^。;;\n|]{0,24}?(\d+)\s*台/gu]},{key:"rebarBender",label:"钢筋弯曲机数量",unit:"台",kind:"number",patterns:[/钢筋弯曲机[^。;;\n|]{0,24}?(\d+)\s*台/gu]},{key:"slackDays",label:"机动工期(工序衔接与验收缓冲)",unit:"天",kind:"number",patterns:[/(?:机动工期|缓冲)[^。;;\n|]{0,16}?(\d{1,3})\s*天/gu,/预留[^。;;\n|]{0,8}?(\d{1,3})\s*天[^。;;\n|]{0,10}?(?:机动|缓冲)/gu]},{key:"villageCount",label:"自然村数量",unit:"个自然村",kind:"number",patterns:[/(\d+)\s*个(?:美丽宜居)?自然村(?!分组)/gu]},{key:"circularSaw",label:"圆盘锯数量",unit:"台",kind:"number",patterns:[/圆盘锯[^。;;\n|]{0,24}?(\d+)\s*台/gu]}],az={零:0,一:1,二:2,两:2,三:3,四:4,五:5,六:6,七:7,八:8,九:9};function aA(a){return/^\d+$/.test(a)?Number(a):"十"===a?10:a.startsWith("十")&&2===a.length?10+(az[a[1]??""]??0):a.endsWith("十")&&2===a.length?(az[a[0]??""]??0)*10:1===a.length&&void 0!==az[a]?az[a]:void 0}function aB(a,b){let c=function(a){let b=/养护[^。;;|]{0,10}?([一二两三四五六七八九十]+|\d{1,2})\s*年/u;for(let c of[...a?.bills??[],...a?.billItemFacts??[],...a?.preciseFacts??[],...a?.project??[]]){let a=`${c.key||""}${c.fieldName||""}${c.fieldId||""}`,d=(0,f.lG)(c.value),e=b.exec(d)||b.exec(a);if(!e)continue;let g=aA(e[1]??"");if(void 0!==g&&g>0&&g<=20)return g}}(b);if(void 0===c)return[];let d=new Set;for(let b of a.matchAll(/养护[^。;;\n|]{0,16}?([一二两三四五六七八九十]+|\d{1,2})\s*年/gu)){let c=a.lastIndexOf("\n",b.index)+1,e=a.indexOf("\n",b.index);if(-1===e&&(e=a.length),aE.test(a.slice(c,e)))continue;let f=aA(b[1]??"");void 0!==f&&f>0&&d.add(f)}if(0===d.size)return[];let e=[...d].filter(a=>Math.abs(a-c)>.2*c);return 0===e.length?[]:[{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`绿化养护期清单红线:正文出现养护期 ${e.map(a=>`${a}年`).join("、")},与工程量清单锁定口径「养护 ${c} 年」矛盾`,suggestion:`绿化养护期必须与工程量清单一致(清单锁定「养护 ${c} 年」):将正文所有养护期表述统一为 ${c} 年并删除矛盾口径;养护期属清单实质性条款,不得以常规值替代。`}]}function aC(a,b){let c=function(a){let b=a=>/路灯/u.test(`${a.key||""}${a.fieldName||""}${a.fieldId||""}`),c=(a?.billItemFacts??[]).filter(b),d=c.length>0?c:[...a?.bills??[],...a?.preciseFacts??[]].filter(b),e=new Set,g=0;for(let a of d){if(e.has(a))continue;e.add(a);let b=(0,f.lG)(a.value);for(let a of(b.split("|工程量:")[1]??b).matchAll(/(\d+)\s*(?:套|盏|杆)/gu)){let b=Number(a[1]);Number.isFinite(b)&&b>0&&(g+=b)}}return g>0?g:void 0}(b);if(void 0===c)return[];let d=[];for(let b of a.matchAll(/路灯[^。;;\n|]{0,28}?(\d+)\s*(?:套|盏|杆)/gu)){if(/批/u.test(b[0]))continue;let c=a.lastIndexOf("\n",b.index)+1,e=a.indexOf("\n",b.index);if(-1===e&&(e=a.length),aE.test(a.slice(c,e)))continue;let f=Number(b[1]);Number.isFinite(f)&&f>0&&d.push(f)}if(0===d.length)return[];let e=d.length>=2?d.reduce((a,b)=>a+b,0):d[0]??0;return Math.abs(e-c)<=.2*c?[]:[{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`路灯数量口径矛盾:正文路灯配置合计约 ${e} 套,与工程量清单锁定口径 ${c} 套不一致(相差 ${Math.round(Math.abs(e-c)/c*100)}%)`,suggestion:`路灯数量必须以工程量清单为准(清单锁定 ${c} 套):按清单核定各型号路灯数量并统一正文全部表述,删除与清单矛盾的套数口径。`}]}let aD=/\d+(?:\.\d+)?\s*(?:mm|kVA|次|具|台|套|个)\s*[//]\s*\d+/u,aE=/不再出现|不得出现|严禁出现|避免出现|不采用|未采用|予以删除|已删除|取消|纠正为|更正为/u,aF="女儿墙|外墙|内墙|隔墙|地梁|圈梁|构造柱|过梁|垫层|承台|筏板|底板|基础|主体|梁|柱|墙|楼板|屋面|地面|楼面|顶板|楼梯|阳台|雨篷|台阶|散水|坡道|找坡|找平|保护层|防水层|保温层|隔汽层|地坪|办公区|生活区|库房|加工区|堆放区|驻地|周转场|停放区|仓库|材料库",aG=/每[台辆架套部][一-龥A-Za-z0-9]{1,8}/gu,aH=/项目部|总协调|工人生活|施工办公|办公|生活|临时|总部|标段|片区/u;function aI(a,b,c){let d=b.slice(Math.max(0,c-8),c),e=d.match(aH);if(!e||void 0===e.index)return a;let f=d.slice((e.index??0)+e[0].length);return/^[的施工区域现场]{0,3}$/u.test(f)?`${e[0]}${a}`:a}function aJ(a,b,c,d){let e=a.indexOf("\n",b),f=a.slice(d,-1===e?a.length:e);if(/^\s*\|/u.test(f)&&/\|\s*$/u.test(f.trim())){let a=f.replace(/[\u4e00-\u9fa5]{2,6}阶段/gu,""),b=[...a.matchAll(RegExp(aF,"gu"))],c=b[b.length-1];return c?aI(c[0],a,c.index??0):""}let g=Math.max(d,b-16),h=a.slice(g,b),i=Math.max(h.lastIndexOf(","),h.lastIndexOf("、"),h.lastIndexOf(","),h.lastIndexOf(";"),h.lastIndexOf(";"),h.lastIndexOf("。")),j=a.slice(i>=0?g+i+1:g,b+c.length).replace(/[\u4e00-\u9fa5]{2,6}阶段/gu,""),k=[...j.matchAll(aG)];if(k.length>0)return k[k.length-1]?.[0]??"";let l=[...j.matchAll(RegExp(aF,"gu"))],m=l[l.length-1];return m?aI(m[0],j,m.index??0):""}function aK(a){let b=[];for(let c of ay){let d=new Map,e=new Map;for(let b of c.patterns)for(let c of a.matchAll(b)){let b=c[0].slice(0,40);if(aD.test(b)||/按不少于|不少于/u.test(b))continue;let f=a.lastIndexOf("\n",c.index)+1,g=a.indexOf("\n",c.index);if(-1===g&&(g=a.length),aE.test(a.slice(f,g)))continue;let h=aJ(a,c.index||0,b,f),i=d.get(h)||new Set;i.add(c[1]),d.set(h,i);let j=e.get(h)||[];j.push(b),e.set(h,j)}let f=d.get("")||new Set,g=[...d.keys()].filter(a=>""!==a);if(f.size>0&&1===g.length){let a=d.get(g[0]||"");if(a){for(let b of f)a.add(b);let b=e.get(g[0]||"")||[];b.push(...e.get("")||[]),e.set(g[0]||"",b),d.delete(""),e.delete("")}}for(let[a,f]of d){if(f.size<2)continue;let d=e.get(a)||[];if("code"===c.kind)b.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`材料参数口径矛盾:“${c.label}”${a?`在部位「${a}」`:"在未标注部位语境下"}出现 ${[...f].map(a=>`${a}${c.unit}`).join(" 与 ")} 两套口径:${[...new Set(d)].slice(0,3).join("、")}`,suggestion:`同一材料同一部位只允许一个口径:以设计图纸/工程量清单为准统一“${c.label}”${a?`在部位「${a}」的取值`:""},删除矛盾表述;不同部位允许不同规格,不得全文归一为一种。`});else{let e=[...f].map(Number).filter(Number.isFinite);if(e.length<2)continue;let g=Math.max(...e);if(g-Math.min(...e)<=.2*g)continue;b.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`材料/设备数量口径矛盾:“${c.label}”${a?`在部位「${a}」`:"在未标注部位语境下"}出现 ${e.map(a=>`${a}${c.unit}`).join(" 与 ")} 两套口径:${[...new Set(d)].slice(0,3).join("、")}`,suggestion:`同一设备/材料同一部位只允许一个口径:以应急物资清单/施工部署为准统一“${c.label}”${a?`在部位「${a}」的取值`:""},删除矛盾表述;总量与分区配置属不同口径,不得互相归一。`})}}}return b.slice(0,8)}function aL(a,b){let c=[];if(!b)return c;for(let e of Object.values(b)){var d;if(e.length<2)continue;let b=(d=e[0]?.spec||"",/^C\d{2,3}$/.test(d)?/C\d{2,3}/u:/^M\d/.test(d)?/M\d+(?:\.\d+)?/u:/^P\d{1,2}$/.test(d)?/P\d{1,2}/u:/^A\d+(?:\.\d+)?$/.test(d)?/A\d+(?:\.\d+)?/u:/^B\d+(?:\.\d+)?$/.test(d)?/B\d+(?:\.\d+)?/u:/^HRB/.test(d)||/^HPB/.test(d)?/HRB\d{3,4}|HPB\d{3}/u:/mm$/.test(d)?/\d+(?:\.\d+)?\s*mm/u:null);if(b)for(let d of e){let{location:f,spec:g}=d;if(!f||!g||f.length<2)continue;let h=new Set(e.filter(a=>a.location===f).map(a=>a.spec)),i=RegExp(`${f.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&")}[^。;;
|
|
21
21
|
|]{0,40}?(${b.source})`,"gu");for(let b of a.matchAll(i)){let d=b[1]||"",e=a.slice((b.index||0)+b[0].length,(b.index||0)+b[0].length+6);if(/范围内|范围/u.test(e))continue;let g=a.slice(Math.max(0,b.index||0),(b.index||0)+b[0].length);if(!/(?:标高|高程|平整度|轴线|垂直度)[^。;;\n|]{0,10}(?:偏差|误差|不超过|不得大于|不大于)/u.test(g.slice(-28))&&!h.has(d)&&(c.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`规格错位:“${f}”使用的规格 ${d} 与工程量清单权威(${[...h].join("/")})不一致`,suggestion:`按工程量清单将“${f}”的规格统一为 ${[...h].join("/")};同一材料不同部位允许不同规格,但同一部位不得混用其他部位的规格。`}),c.length>=8))return c}}}return c.slice(0,8)}let aM=/桩基|灌注桩|钻孔桩|打桩|成桩|桩机/u;function aN(a){let b=function(a){let b=[];for(let c of[...a.matchAll(/^#{3,4}\s+[^\n]*(?:地基与基础)[^\n]*$/gmu)]){let d=(c.index||0)+c[0].length,e=a.slice(d).search(/^#{2,4}\s+/mu),f=a.slice(d,e>=0?d+e:a.length);b.push(f)}return b}(a);if(0===b.length||b.some(a=>aM.test(a)))return[];let c=[];for(let b of a.split(/\r?\n/u)){let a=b.trim();!(!a||/^#{1,6}\s/u.test(a))&&aM.test(b)&&c.push(a.slice(0,48))}let d=[...new Set(c)].slice(0,5);return d.length<2?[]:[{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`桩基表述残留:地基与基础章节施工流程为筏板/独立基础(无桩基工序),但全文另有 ${d.length} 处桩基表述:${d.join("、")}`,suggestion:"本项目基础形式不含桩基:删除全文所有桩基/桩机表述,进度计划表关键线路工序、质量验收划分表、隐蔽验收表均改为本项目实际基础工序(垫层/底板钢筋/混凝土)。"}]}let aO=/^\s*\|\s*计划工期\s*\|([^|\n]*)\|/u,aP=/工期延误|延误|违约|切除|赔偿|罚款|解除|扣减/u;function aQ(a){let b=[];for(let c of a.split(/\r?\n/u)){let a=aO.exec(c);if(!a)continue;let d=(a[1]??"").trim();d&&aP.test(d)&&b.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`基本信息表「计划工期」字段错填违约条款文字:“${d.slice(0,40)}”`,suggestion:"「计划工期」字段应填日历天数值(与招标文件前附表一致);工期延误违约条款文字应放在工期风险管控章节,不得占用基本信息表字段。"})}return b.slice(0,2)}let aR=/基础|支护|围护|桩|结构|开挖|放坡|喷锚|排桩|连续墙|土钉|锚杆|标高|深度|形式|体系/u;function aS(a){let b=a.replace(/\s+/gu,""),c=new Set;for(let a of b.matchAll(/([一-龥]{2,8})\/([一-龥]{2,8})/gu)){if(!aR.test(a[1])&&!aR.test(a[2]))continue;let d=Math.max(0,(a.index||0)-12),e=Math.min(b.length,(a.index||0)+a[0].length+12),f=b.slice(d,e);!/管线|管道|电缆|给水|排水/u.test(f)&&/采用|形式|方式|方案|选用|拟用|拟采用|为/u.test(f)&&c.add(`“${a[1]}/${a[2]}”`)}for(let a of b.matchAll(/[((]\s*或[^))]{1,48}[))]/gu)){let d=a[0].slice(1,-1);if(!/按图纸|按实|按图|待定|另行|视[^,。;]{0,8}而定|根据实际/u.test(d))continue;let e=Math.max(0,(a.index||0)-20),f=b.slice(e,(a.index||0)+a[0].length);aR.test(f)&&c.add(a[0].slice(0,30))}for(let a of b.matchAll(/([一-龥]{2,8})或([一-龥]{2,8})/gu)){if(!aR.test(a[1])&&!aR.test(a[2]))continue;let d=Math.max(0,(a.index||0)-12),e=b.slice(d,(a.index||0)+a[1].length);if(/管线|管道|电缆|给水|排水/u.test(e)||!/按|采用|选用|拟用|拟采用|方案|为/u.test(e))continue;let f=a[1].replace(/^.*(地下连续墙|钢板桩|灌注桩|支护桩|土钉墙|基础|支护|围护|结构|开挖|放坡|喷锚|排桩|连续墙|土钉|锚杆|形式|体系)/u,"$1");c.add(`${f}或${a[2]}`)}return 0===c.size?[]:[{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`关键设计决策两可表述:${[...c].join("、")} 以并列/悬置形态表述,基础形式、支护形式等关键决策必须在正文中唯一确定`,suggestion:"以设计图纸/勘察报告/工程量清单为准锁定唯一决策并删除两可表述:明确写出本项目基础形式与支护形式的具体做法(如「基础形式为筏板基础」「基坑支护采用放坡+喷锚」),禁止「或…按图纸实施」类悬置话术。"}]}function aT(a){let b=a.replace(/\s+/gu,"");if((b.match(/基坑|开挖|支护/gu)||[]).length<3)return[];for(let a of b.matchAll(/(?:深度|标高)[^。;,,]{0,12}-?\d+(?:\.\d+)?[^。;,,]{0,6}/gu)){let b=a[0];if(!/(?:超过|大于|小于|不[大低小]于|不低于|低于|高于|按|倍|依据|详见|参考|示意|每|以上|以下|偏差|±0|0\.000)/u.test(b)&&!/\d+(?:\.\d+)?\s*(?:h|小时|天|日|min|周|月|昼夜)/u.test(b))return[]}return[{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:"基坑深度数值未锁定:正文已有基坑支护/开挖成稿内容,但全文未出现「深度/标高+数值」的确定性表述(比较式阈值如「超过3m」不视为锁定),危大工程分级判定失去依据",suggestion:"从绑定资料(地质勘察报告/基坑支护设计图/基础平面图)锁定基坑开挖深度数值写入基坑支护小节;深度 ≥5m 的深基坑须同步标注危大工程分级与专家论证要求,禁止以「按图纸确定」回避深度数值。"}]}function aU(a){let b=a.canonical?.byKey.excavation_depth?.value,c=[...(a.drawings||[]).map(a=>`${a.fieldName||a.key||""} ${(0,f.lG)(a.value)}`),...(a.project||[]).map(a=>`${a.fieldName||a.key||""} ${(0,f.lG)(a.value)}`),...(a.preciseFacts||[]).map(a=>`${a.fieldName||a.key||""} ${(0,f.lG)(a.value)}`)].filter(Boolean),d=a=>[...a.matchAll(/-?(\d+(?:\.\d+)?)\s*(?:m|米)/gu)].filter(b=>{let c=Math.max(0,(b.index??0)-6),d=Math.min(a.length,(b.index??0)+b[0].length+6);return!/(?:超过|大于|小于|不[大低小]于|不低于|及以上|及以下|以上|以下)/u.test(a.slice(c,d))}).map(a=>Math.abs(Number(a[1]))),e=[...b?d(b):[],...c.flatMap(a=>/基坑开挖深度|基坑深度|开挖深度|坡底线|坑底标高/u.test(a)?d(a):[])].filter(a=>Number.isFinite(a)&&a>=1&&a<50);return e.length>0?Math.max(...e):void 0}function aV(a,b){let c=aU(b);if(void 0===c||c<3)return[];let d=[];return c>=3&&!/危大工程/u.test(a)&&d.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`危大工程判定缺失:资料基坑开挖深度 ${c}m(≥3m),正文必须出现危大工程判定标注`,suggestion:`依据住建部令第37号,开挖深度≥3m 属危大工程:在基坑支护/危大工程清单小节写明本工程实际深度 ${c}m 与危大工程判定结论,不得只写判定规则不落地本项目。`}),c>=5&&!/超过一定规模/u.test(a)&&d.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`超危大工程判定缺失:资料基坑开挖深度 ${c}m(≥5m),正文必须出现「超过一定规模」判定与专家论证要求`,suggestion:`开挖深度≥5m 属超过一定规模的危大工程:写明本工程深度 ${c}m 对应分级结论,专项施工方案必须经专家论证,不得只写判定规则不落地分级。`}),d}function aW(a,b){let c=[b.canonical?.byKey.foundation_support_form?.value,...(b.drawings||[]).map(a=>`${a.fieldName||a.key||""} ${(0,f.lG)(a.value)}`),...(b.project||[]).map(a=>`${a.fieldName||a.key||""} ${(0,f.lG)(a.value)}`),...(b.preciseFacts||[]).map(a=>`${a.fieldName||a.key||""} ${(0,f.lG)(a.value)}`)].filter(Boolean).filter(a=>/基坑支护形式|基坑支护方式|支护形式|支护方式|土钉|放坡|喷锚|护坡/u.test(a)&&!/监测|监测频次|闭环|基坑开挖深度/u.test(a));if(0===c.length)return[];let d=[];for(let a of c)for(let b of["土钉墙","放坡","喷锚","挂网喷浆","排桩","灌注桩","地下连续墙","内支撑","锚杆","锚索"])a.includes(b)&&d.push(b);let e=[],g=/不采用|未采用|不设置|未设置|不使用|不宜采用|不得采用|不再出现|不得出现|严禁出现|避免出现|已删除|取消/u,h=["支护桩","冠梁","钻孔灌注桩","灌注桩","地下连续墙","排桩","咬合桩","内支撑"].filter(b=>(b=>{let c=RegExp(b,"gu");for(let b of a.matchAll(c)){let c=a.lastIndexOf("\n",b.index)+1,d=a.indexOf("\n",b.index);-1===d&&(d=a.length);let e=a.slice(c,d).slice(Math.max(0,b.index-c-12),b.index-c);if(!g.test(e))return!0}return!1})(b)&&!d.includes(b));return h.length>0&&e.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`支护形式与资料矛盾:正文出现资料中不存在的支护体系词 ${h.join("、")}`,suggestion:`资料基坑支护形式为「${d.join("、")||c[0]?.slice(0,60)}」:删除编造的支护桩/冠梁/灌注桩类表述与对应参数(垂直度偏差/冠梁顶面标高等),按资料支护形式改写。`}),0===d.filter(b=>RegExp(b,"u").test(a)).length&&/基坑|支护/u.test(a)&&e.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`支护形式未落地:资料基坑支护形式「${d.join("、")||c[0]?.slice(0,60)}」未在正文中出现`,suggestion:`在基坑支护小节写明本工程实际支护形式(${d.join("、")})及对应工艺参数(土钉长度/间距/坡度等),不得以泛化表述回避。`}),e}let aX=["塔式起重机","施工升降机","施工电梯","汽车起重机","汽车吊","混凝土泵车","混凝土泵","挖掘机","装载机","推土机","压路机","平地机","空压机","注浆机","锚杆钻机","混凝土喷射机","喷射机","吊篮","钢筋加工设备","塔吊"],aY=/挖掘机|空压机|注浆机|锚杆钻机|混凝土喷射机|喷射机|推土机/u;function aZ(a,b){let c=function(a){let b=[];for(let c of a.matchAll(/第(\d{2,3})日[^。;;\n|]{0,8}?(?:进场|投入使用|安装|调试)/gu)){let d=a.slice(Math.max(0,(c.index||0)-24),c.index||0),e=aX.find(a=>d.includes(a));e&&b.push({equipment:e,day:Number(c[1]),raw:`${d.slice(-18)}${c[0].slice(0,20)}`})}let c=new Set;return b.filter(a=>{let b=`${a.equipment}:${a.raw}`;return!c.has(b)&&(c.add(b),!0)})}(a);if(0===c.length)return[];let d=[],e=function(a,b){for(let c of[a,...(b.schedule||[]).map(a=>`${a.key||""}${(0,f.lG)(a.value)}`)]){let a=/(?:计划工期|合同工期|总工期|工期总日历天数)[^\d。;;\n|]{0,12}(\d{1,4})\s*个?\s*日历天/u.exec(c);if(a){let b=Number(a[1]);if(Number.isFinite(b)&&b>=30&&b<=3e3)return b}}}(a,b);if(void 0!==e){let a=c.filter(a=>a.day>=.8*e);a.length>0&&d.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`设备进场时间荒谬:${a.slice(0,3).map(a=>`「${a.equipment} 第${a.day}日进场」`).join("、")} 已过总工期(${e}日历天)的 80%,尾期进场无法覆盖主体施工`,suggestion:`以总进度计划为准核对设备进场计划:大型施工设备应在工程早期(总工期前 30% 内)进场,${a.map(a=>a.equipment).join("、")} 的进场日应提前至基础/主体施工开始前,删除矛盾的尾期进场表述。`})}let g=aw(a).filter(a=>"excavation"===a.key).map(a=>a.day);if(g.length>0){let a=Math.min(...g),b=c.filter(b=>aY.test(b.equipment)&&b.day>a);b.length>0&&d.push({level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`设备进场工序倒挂:${b.slice(0,3).map(a=>`「${a.equipment} 第${a.day}日进场」`).join("、")} 晚于基坑支护及土方外运完成节点(第${a}日),基坑阶段设备未在工序开始前进场`,suggestion:`基坑阶段专用设备必须在基坑开挖/支护开始前完成进场与报验:将 ${b.map(a=>a.equipment).join("、")} 的进场日调整为早于基坑支护完成节点(第${a}日)的日期,删除工序倒挂表述。`})}return d.slice(0,3)}let a$=/[\u4e00-\u9fa5]{2,10}(?:杯|奖)(?![励金惩罚项])/gu,a_=/优质工程|文明工地|样板|标准化|观摩|示范|精品工程|结构优质|省优|市优/u;function a0(a){let b=a;for(;;){let a=b.replace(/^(?:争创|争取|力争|争获|确保|获得|创建|力创|评为|荣获|标为|目标为|承诺|为)/u,"");if(a===b||!a)break;b=a}return b}let a1=/^\s*\|[\s:|-]+\|/u;function a2(a){let b=a.split(/\r?\n/u),c=[],d=a=>a.trim().replace(/^\|/u,"").replace(/\|$/u,"").split("|").map(a=>a.trim()),e=a=>a1.test(a),f=0;for(;f<b.length;){let a;if(!/^\s*\|/u.test(b[f])){f+=1;continue}let g=f;for(;g<b.length&&/^\s*\|/u.test(b[g]);)g+=1;let h=b.slice(f,g),i=0,j=0,k=0,l=b=>{if(!a)return;let e=h.slice(j,b);0!==e.length&&c.push({startLine:f+i,endLine:f+b-1,header:a,firstCol:e.map(a=>d(a)[0]?.replace(/[*_`]/gu,"").trim()||"").filter(Boolean),dataCells:e.flatMap(a=>d(a).map(a=>a.replace(/[*_`]/gu,"").trim())).filter(Boolean),bodyChars:e.join("").length,raw:h.slice(i,b)})};for(;k<h.length;){if(k+1<h.length&&e(h[k+1]||"")){l(k),a=d(h[k]).map(a=>a.replace(/[*_`]/gu,"").trim()),i=k,j=k+2,k+=2;continue}if(a&&k>j){let b=d(h[k]).map(a=>a.replace(/[*_`]/gu,"").trim()).filter(Boolean);if(a3(b,a)>=.6&&k+1<h.length&&!e(h[k+1]||"")){l(k),a=b,i=k,j=k+1,k+=1;continue}}k+=1}l(h.length),f=g}return c}function a3(a,b){if(0===a.length||0===b.length)return 0;let c=new Set(a),d=new Set(b);return[...c].filter(a=>d.has(a)).length/new Set([...c,...d]).size}function a4(a,b){if(0===a.length)return 0;let c=[...b],d=0;for(let b of a){let a=c.indexOf(b);a>=0&&(c.splice(a,1),d+=1)}return d/a.length}let a5=/^[\d,,.]+\s*(?:人|个|台|具|套|处|支|辆|班|组|项)?$/u,a6=a=>a.filter(a=>!a5.test(a));function a7(a){let b=[],c=a2(a);if(c.length<2)return b;for(let a=0;a<c.length;a+=1)for(let d=a+1;d<c.length;d+=1){let e=c[a],f=c[d],g=e.header.length>0&&e.header.length===f.header.length&&e.header.every((a,b)=>a===f.header[b]),h=a3(e.header,f.header),i=a3(e.firstCol,f.firstCol),j=a3(e.dataCells,f.dataCells),k=Math.max(a4(a6(e.dataCells),a6(f.dataCells)),a4(a6(f.dataCells),a6(e.dataCells)));(g&&j>=.6||h>=.7&&i>=.6||i>=.6&&k>=.6)&&b.push({level:"error",severity:"blocker",category:"style",owner:"llm",repairability:"llm_repairable",message:`表格重复:第 ${e.startLine+1}~${e.endLine+1} 行表格(表头:${e.header.slice(0,3).join("|")})与第 ${f.startLine+1}~${f.endLine+1} 行表格高度重复(表头重合 ${Math.round(100*h)}%、数据重合 ${Math.round(100*j)}%、首列重合 ${Math.round(100*i)}%)`,suggestion:"同一文档内同主题表格只保留信息最全的一张:删除重复表格(保留字段与数据行更多的那张),删除后核对章节表格计划仍被覆盖。"})}return b.sort((a,b)=>{let c=a=>Number(a.match(/数据重合\s*(\d+)%/u)?.[1]??0);return c(b.message)-c(a.message)}).slice(0,5)}function a8(a){let b=a2(a);if(b.length<2)return{markdown:a,removedCount:0};let c=a.split(/\r?\n/u),d=new Set;for(let a=0;a<b.length;a+=1)for(let c=a+1;c<b.length;c+=1){let e=b[a],f=b[c];if(d.has(e.startLine)||d.has(f.startLine))continue;let g=e.header.length>0&&e.header.length===f.header.length&&e.header.every((a,b)=>a===f.header[b]),h=a3(e.header,f.header),i=a3(e.firstCol,f.firstCol),j=a3(e.dataCells,f.dataCells),k=Math.max(a4(a6(e.dataCells),a6(f.dataCells)),a4(a6(f.dataCells),a6(e.dataCells)));if(!(g&&j>=.6)&&!(h>=.7&&i>=.6)&&!(i>=.6&&k>=.6))continue;let[l,m]=e.bodyChars>=f.bodyChars?[e,f]:[f,e];for(let a=m.startLine;a<=m.endLine;a+=1)d.add(a)}return 0===d.size?{markdown:a,removedCount:0}:{markdown:c.filter((a,b)=>!d.has(b)).join("\n"),removedCount:d.size,removedLineNumbers:[...d].sort((a,b)=>a-b)}}function a9(a){let b=a8(a.map(a=>a.content).join("\n\n"));if(0===b.removedCount)return{removedCount:0,chapterFixed:0};let c=new Set(b.removedLineNumbers||[]),d=0,e=0,f=0;for(let b of a){let a=b.content.split("\n"),g=new Set;for(let b=0;b<a.length;b+=1)c.has(d+b)&&g.add(b);g.size>0&&(b.content=a.filter((a,b)=>!g.has(b)).join("\n"),e+=g.size,f+=1),d+=a.length+2}return{removedCount:e,chapterFixed:f}}function ba(a){let b=a.replace(/\s+/gu,"");return b.length>=40?b:void 0}function bb(a){let b=[],c=a.split(/\r?\n/u),d=new Map,e=[],f=()=>{let a=ba(e.join(""));if(a){let b=(d.get(a)||0)+1;d.set(a,b)}e=[]};for(let a of c){let b=a.trim();if(!b||/^#{1,6}\s/u.test(b)||/^\s*\|/u.test(b)){f();continue}if(/^[-*•]\s/u.test(b)){f(),e.push(b),f();continue}e.push(b)}for(let[a,c]of(f(),[...d.entries()].filter(([,a])=>a>=2).slice(0,3)))b.push({level:"error",severity:"blocker",category:"style",owner:"llm",repairability:"llm_repairable",message:`段落完全重复 ${c} 次:“${a.slice(0,40)}…”`,suggestion:"同一段落正文只保留首次出现处,删除其余重复段落;确需前后呼应时改写为差异化表述并压缩篇幅。"});return b}function bc(a){let b=a.split(/\r?\n/u),c=new Set,d=new Set,e=[],f=[],g=()=>{let a=ba(e.join(""));a&&(c.has(a)?f.forEach(a=>d.add(a)):c.add(a)),e=[],f=[]};return(b.forEach((a,b)=>{let c=a.trim();if(!c||/^#{1,6}\s/u.test(c)||/^\s*\|/u.test(c))return void g();if(/^[-*•]\s/u.test(c)){g(),e=[c],f=[b],g();return}e.push(c),f.push(b)}),g(),0===d.size)?{markdown:a,removedCount:0}:{markdown:b.filter((a,b)=>!d.has(b)).join("\n"),removedCount:d.size}}function bd(a,b,c){let d=new Set;for(let a of[...b.quality,...b.project,...b.schedule])for(let b of(0,f.lG)(a.value).matchAll(a$))d.add(a0(b[0]));if(c?.extracted)for(let a of[...c.awardObjectives||[],...c.specialQualityStandards||[],...c.awardClauses||[]])for(let b of(a.text||"").matchAll(a$))d.add(a0(b[0]));if(0===d.size)return[];let e=new Set;for(let b of a.matchAll(a$)){let a=a0(b[0]);!d.has(a)&&(a_.test(a)||e.add(a))}return 0===e.size?[]:[{level:"error",severity:"blocker",category:"fact_consistency",owner:"llm",repairability:"llm_repairable",message:`奖项表述与招标文件白名单不符:正文出现 ${[...e].join("、")},均未出现在招标文件评分项要求或绑定资料中`,suggestion:"创优目标必须以招标文件原文为准逐字落位(如「确保黄山杯」),禁止自行编造或替换为其他奖项名称;白名单外的奖项表述一律删除或替换为招标原文奖项。"}]}function be(a){let b=a.split(/\r?\n/u),c=new Set;for(let a of b){let b=/^(#{2,4})\s+(.+)$/u.exec(a.trim());if(!b)continue;let d=b[2].trim();(0,i.Xp)(d)&&c.add(d)}if(0===c.size)return[];let d=[...c];return[{level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"llm_repairable",message:`正文出现投标人资格内容小节:${d.slice(0,3).map(a=>`“${a}”`).join("、")}${d.length>3?" 等":""}(资格审查内容不属于施工组织设计,属资格文件/商务文件范畴)`,suggestion:"删除资格内容小节(标题与正文整体删除),不得以改写、合并、降级方式保留;正文如需提及安全生产许可证等证照,只能以施工管理口径表述(如“按规定持证上岗”),不得成节铺陈资格核验内容。"}]}let bf=/人[、,,]材[、,,]机/u,bg=/(?:确保\s*)?([人材机])(?:员|力|料|械|工)?\s*的保障体系与措施/u;function bh(a){let b=a.match(bg)?.[1];return b||(/劳动力|人员|作业人员|劳务/u.test(a)?"人":/材料|物资|周转/u.test(a)?"材":/机械|设备|机具|塔吊|起重机/u.test(a)?"机":void 0)}function bi(a){let b=[],c=a.split(/\r?\n/u);for(let a=0;a<c.length;a+=1){let d,e=/^##\s+(.+)$/u.exec(c[a].trim());if(!e||!bf.test(e[1]))continue;let f=c.length;for(let b=a+1;b<c.length;b+=1)if(/^##\s+/u.test(c[b].trim())){f=b;break}let g=[];for(let e=a+1;e<f;e+=1){let a=/^###\s+(.+)$/u.exec(c[e].trim()),f=/^####\s+(.+)$/u.exec(c[e].trim());if(a){d={subject:bh(a[1]),title:a[1].trim()},g.push(d);continue}if(f&&d?.subject){let a=bh(f[1]);a&&a!==d.subject&&b.push({level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"llm_repairable",message:`人材机章层级错位:小节“${f[1].trim()}”挂在“${d.title}”之下(${"人"===a?"人":"材"===a?"材":"机"}的保障体系应独立成二级小节,不得并入${"人"===d.subject?"人":"材"===d.subject?"材":"机"}的保障体系)`,suggestion:`将“${f[1].trim()}”提升为独立二级小节,或将其内容合并到对应主题的二级小节。`})}}let h=new Set(g.map(a=>a.subject).filter(Boolean)),i=["人","材","机"].every(a=>h.has(a));(g.length<3||!i)&&b.push({level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"llm_repairable",message:`人材机章结构不完整:“${e[1].trim()}”仅 ${g.length} 个二级小节(人/材/机的保障体系未全部独立成节)`,suggestion:"拆分为“确保人的保障体系与措施”“确保材的保障体系与措施”“确保机的保障体系与措施”三个二级小节。"})}return b}function bj(a,b){if(0===b.length)return{markdown:a,fixedCount:0,details:[]};let c=[...b].sort((a,b)=>a.start-b.start||a.end-b.end),d="",e=0,f=0,g=[];for(let b of c)b.start<e||b.end<=b.start||(d+=a.slice(e,b.start)+b.replacement,e=b.end,f+=1,g.push(b.detail));return{markdown:d+=a.slice(e),fixedCount:f,details:[...new Set(g)].slice(0,8)}}function bk(a){let b=a=>{let b=a.match(/(\d{1,4})\s*个?\s*日历天/u);if(!b)return;let c=Number(b[1]);return Number.isFinite(c)&&c>0?c:void 0};for(let c of a?.schedule??[]){let a=`${c.key||""}${c.fieldName||""}${c.fieldId||""}`;if(!/工期|周期/u.test(a))continue;let d=b((0,f.lG)(c.value));if(void 0!==d)return d}for(let c of Object.values(a?.canonical?.schedule??{})){let a=Array.isArray(c)?c[0]:c;if(!a||!/工期|周期/u.test(a.label))continue;let d=b(a.value);if(void 0!==d)return d}}function bl(a){let b=a=>{let b=a.match(/(\d+(?:\.\d+)?)\s*%/u);if(!b)return;let c=Number(b[1]);return Number.isFinite(c)&&c>0&&c<=100?c:void 0};for(let c of[...a?.project??[],...a?.bills??[],...a?.preciseFacts??[]]){let a=`${c.key||""}${c.fieldName||""}${c.fieldId||""}`;if(!/装配率|assembly/u.test(a))continue;let d=b((0,f.lG)(c.value));if(void 0!==d)return d}let c=a?.tenderRequirements?.assemblyRate?.text;if(c)return b(c)}function bm(a){let b,c=[],d=a?.project??[];for(let a of d){let c=`${a.key||""}${a.fieldName||""}`;if(!/单体建筑面积|建设规模/u.test(c))continue;let d=(0,f.lG)(a.value).match(/(\d+(?:\.\d+)?)\s*(?:平方(?:米)?|㎡|m²)/u);if(d&&Number.isFinite(Number(d[1]))){b=Number(d[1]);break}}void 0!==b&&c.push(`建筑面积${b}平方米`);let e=JSON.stringify({project:d,drawings:a?.drawings??[],tables:a?.tables??[]}),g=e.match(/地上\s*(\d+)\s*层/u)?.[1],h=e.match(/地下\s*(\d+)\s*层/u)?.[1];return void 0!==g&&c.push(`地上${g}层`),void 0!==h&&c.push(`地下${h}层`),c.length>0?c.join("、"):void 0}function bn(a,b){let c=a,d=0,e=[],f={};for(let a of(b?.scheduleAuthority!==void 0&&b.scheduleAuthority>0&&(f.scheduleDays=b.scheduleAuthority),b?.assemblyRateAuthority!==void 0&&b.assemblyRateAuthority>0&&(f.prefabRatio=b.assemblyRateAuthority),b?.villageCountAuthority!==void 0&&b.villageCountAuthority>0&&(f.villageCount=b.villageCountAuthority),b?.slackDaysAuthority!==void 0&&b.slackDaysAuthority>0&&(f.slackDays=b.slackDaysAuthority),b?.machineAuthorities!==void 0&&Object.assign(f,b.machineAuthorities),[a=>(function(a,b){let c=void 0!==b&&b>0?b:A(a);if(void 0===c)return{markdown:a,fixedCount:0,details:[]};let d=[],e=b=>{for(let e of a.matchAll(b)){let b=Number(e[1].replace(/[,,]/gu,""));if(!Number.isFinite(b)||b<=0)continue;let f=e.index+e[0].indexOf(e[1]),g=a.lastIndexOf("\n",e.index)+1,h=a.indexOf("\n",e.index);-1===h&&(h=a.length),!(/^\s*\|.*\|\s*$/u.test(a.slice(g,h))||"peak"!==x(a,f,g).group||y(a,f))&&(Math.abs(b-c)/Math.max(b,c)<=.3||d.push({start:f,end:f+e[1].length,replacement:String(c),detail:`劳动力峰值 ${b}人→${c}人(以分阶段投入明细表为准)`}))}};for(let b of(e(r),e(t),a.matchAll(/(?:高峰期|高峰|峰值)[^。;;\n]{0,16}?控制(?:在|为|到)?(?:约)?\s*([\d,]+)\s*人(?:以内|以下|之内)?/gu))){let a=Number(b[1].replace(/[,,]/gu,""));if(!Number.isFinite(a)||a<=0||a>=c)continue;let e=b.index+b[0].indexOf(b[1]);d.push({start:e,end:e+b[1].length,replacement:String(c),detail:`劳动力控制上限 ${a}人→${c}人(与分阶段投入明细表峰值自洽)`})}return bj(a,d)})(a,b?.laborPeakAuthority),a=>(function(a,b){let c=a,d=[],e=b?.scheduleAuthority;if(void 0!==e&&e>0){let a=[...c.matchAll(/(?:开工令下发后|开工后)第(\d{1,3})[日天]/gu)].map(a=>Number(a[1])),b=a.length>0?Math.max(...a):0;if(b>0&&b<.9*e){let a=e/b,f=[];for(let b of c.matchAll(/(?:开工令下发后|开工后)第(\d{1,3})[日天]/gu)){let c=Math.max(1,Math.round(Number(b[1])*a)),d=b.index+b[0].indexOf(b[1]);f.push({start:d,end:d+b[1].length,replacement:String(c),detail:`节点日期 ${b[1]}日→${c}日(总工期${e}日历天体系缩放)`})}for(let b of c.matchAll(/第(\d{2,3})日(?=[^。;;\n]{0,8}竣工验收)/gu)){let c=Math.max(1,Math.round(Number(b[1])*a));f.push({start:b.index,end:b.index+b[0].length,replacement:`第${c}日`,detail:`竣工验收节点 ${b[1]}日→${c}日(总工期${e}日历天体系缩放)`})}for(let b of c.matchAll(/(竣工验收(?:合格)?[^。;;\n]{0,8}?[((])第(\d{2,3})日([))])/gu)){let c=Math.max(1,Math.round(Number(b[2])*a));f.push({start:b.index,end:b.index+b[0].length,replacement:`${b[1]}第${c}日${b[3]}`,detail:`竣工验收节点 ${b[2]}日→${c}日(总工期${e}日历天体系缩放)`})}if(f.length>0){let a=bj(c,f);c=a.markdown,d.push(...a.details.slice(0,8));let b=/^(\|[^|]*\|)\s*开工令下发后第(\d+)日\s*\|\s*开工令下发后第(\d+)日\s*\|\s*(\d+)\s*日\s*(\|.*)$/u,e=c.split(/\r?\n/u),g=0,h=0;for(let a=0;a<e.length;a+=1){let c=e[a].match(b);if(!c){g=0;continue}let d=Number(c[3]),f=g>0?g+1:Number(c[2]),i=Math.max(d,f+1),j=i-f+1;(f!==Number(c[2])||i!==d||j!==Number(c[4]))&&(e[a]=`${c[1]} 开工令下发后第${f}日 | 开工令下发后第${i}日 | ${j}日 ${c[5]}`,h+=1),g=i}h>0&&(c=e.join("\n"),d.push(`三列进度表链式重算 ${h} 行(开始/持续列与缩放后结束列自洽)`))}}}let f=c.split(/\r?\n/u),g=/^\|.+\|$/u,h=[],i=0;for(let a of f)h.push({start:i,end:i+a.length}),i+=a.length+1;let j=a=>{let b=[];return/清理|预验收|收尾/u.test(a)&&b.push("cleanup"),/竣工验收/u.test(a)&&b.push("completion"),/装饰|幕墙/u.test(a)&&b.push("decoration"),/机电/u.test(a)&&b.push("mep"),/二次|ALC|墙板|砌体/u.test(a)&&b.push("secondary"),/主体|封顶/u.test(a)&&b.push("topping"),/土方|基坑|基础|支护/u.test(a)&&b.push("excavation"),b},k=a=>(a.split("|")[1]||"").trim(),l=a=>{let b;for(let c of a.matchAll(/第(\d{1,3})[日天]/gu)){let d=a.slice(Math.max(0,(c.index??0)-8),c.index??0);/(?:合格|封顶|移交|完成|进场|退场)后$/u.test(d)||(b={value:Number(c[1]),start:(c.index??0)+c[0].indexOf(c[1]),end:(c.index??0)+c[0].lastIndexOf(c[1])+c[1].length})}return b},m=new Map,n=[];for(let a=0;a<f.length;a+=1){if(!g.test(f[a].trim()))continue;let b=a;for(;a<f.length&&g.test(f[a].trim());)a+=1;let c=a,d=f.slice(Math.max(0,b-6),b).join("\n");if(/总进度计划|施工总进度|总进度安排|总工期控制|总工期/u.test(d)){for(let a=b;a<c;a+=1){let b=k(f[a]),c=l(f[a]);if(!(!c||/---/u.test(b)))for(let a of j(b)){let b=m.get(a);(void 0===b||c.value>b)&&m.set(a,c.value)}}n.push({start:h[b].start,end:h[c-1].end})}}for(let a of b?.nodeAuthorities??[]){let b=a.offset.match(/第(\d{1,3})[日天]/u);if(!b)continue;let c=Number(b[1]);if(!Number.isFinite(c)||c<1||c>3e3)continue;let d=av.find(b=>b.re.test(a.node))?.key;if(void 0===d)continue;let e=m.get(d);void 0!==e&&Math.abs(e-c)>=5&&(n.length=0),m.set(d,c)}if(0===m.size)return{markdown:c,fixedCount:+(d.length>0),details:d};let o=[],p=a=>!n.some(b=>a>=b.start&&a<=b.end);for(let a=0;a<f.length;a+=1){if(!g.test(f[a].trim())||!p(h[a].start))continue;let b=k(f[a]),c=l(f[a]);if(!c||/---/u.test(b))continue;let d=j(b).map(a=>m.get(a)).find(a=>void 0!==a);if(void 0===d||5>Math.abs(c.value-d))continue;let e=av.find(a=>j(b).includes(a.key))?.label||b.slice(0,12);o.push({start:h[a].start+c.start,end:h[a].start+c.end,replacement:String(d),detail:`表格节点“${e}”${c.value}日→${d}日(以总进度计划/总工期控制表为准)`})}let q=(a,b,c,d,e)=>{let f=av.find(b=>b.re.test(a))?.key;if(void 0===f||!Number.isFinite(b)||b<1||b>3e3)return;let g=m.get(f);!(void 0===g||5>Math.abs(b-g))&&p(c)&&o.push({start:c,end:d,replacement:String(g),detail:`节点“${av.find(a=>a.key===f)?.label||f}”工期 ${b}日→${g}日(以总进度计划表为准)`})};for(let a of c.matchAll(/第(\d{2,3})日(?:(?![))→。;;\n,、]).){0,14}?完成(?:(?![((→。;;\n,、]).){0,12}?(基坑支护及土方外运|装饰装修及幕墙|机电安装及智能化调试|室外工程及竣工验收|地下结构出正负零|主体结构封顶|正负零|封顶)/gu)){let b=a.index+a[0].indexOf(a[1]);q(a[2],Number(a[1]),b,b+a[1].length,a[0].slice(0,40))}for(let a of c.matchAll(/(竣工验收)(?:(?!(?:后|第\d{2,3}[日天]|,|、|→)).){0,10}?第(\d{2,3})[日天]/gu)){let b=a.index+a[0].indexOf(a[2]);q(a[1],Number(a[2]),b,b+a[2].length,a[0].slice(0,40))}for(let a of c.matchAll(/(基坑支护|正负零|封顶|装饰装修|机电安装|竣工验收)(?:(?!(?:第\d{2,3}[日天]|,|、)).){0,8}?完成[^。;;\n]{0,10}?第(\d{2,3})[日天]/gu)){let b=a.index+a[0].indexOf(a[2]);q(a[1],Number(a[2]),b,b+a[2].length,a[0].slice(0,40))}for(let a of c.matchAll(/(主体(?:结构)?封顶)(?!后)(?:(?!(?:第\d{2,3}[日天]|,|、|完成|\||[。;;\n])).){0,20}?第(\d{2,3})日/gu)){let b=a.index+a[0].indexOf(a[2]);q(a[1],Number(a[2]),b,b+a[2].length,a[0].slice(0,40))}let r=bj(c,o);return{markdown:r.markdown,fixedCount:r.fixedCount+ +(d.length>0),details:[...d,...r.details].slice(0,12)}})(a,{scheduleAuthority:b?.scheduleAuthority,nodeAuthorities:b?.nodeAuthorities}),a=>(function(a,b,c){let d=[];for(let c of ay){if("number"!==c.kind)continue;let e=new Set,f=[],g=[];for(let b of c.patterns)for(let c of a.matchAll(b)){let b=c[0].slice(0,40);if(aD.test(b))continue;let d=a.lastIndexOf("\n",c.index)+1,h=a.indexOf("\n",c.index);-1===h&&(h=a.length);let i=a.slice(d,h);if(aE.test(i))continue;let j=Number(c[1]);if(!Number.isFinite(j)||j<=0)continue;let k=aJ(a,c.index||0,b,d);/^\s*\|/u.test(i)?(e.add(j),g.push({value:j,group:k})):f.push({value:j,group:k})}let h=b?.[c.key],i=void 0===h&&"towerCrane"===c.key&&e.size>1,j=[...g,...f].filter(a=>""===a.group).map(a=>a.value),k=j.length>=2&&Math.max(...j)-Math.min(...j)>.2*Math.max(...j),l=void 0===h&&!i&&e.size>1&&k?function(a){let b,c=new Map;for(let b of a)c.set(b,(c.get(b)??0)+1);let d=0;for(let[a,e]of c)(e>d||e===d&&void 0!==b&&a>b)&&(b=a,d=e);return b}(j):void 0,m=void 0!==h&&h>0?h:1===e.size?[...e][0]:i?Math.min(...e):l;if(void 0!==m&&[...f.filter(a=>""===a.group),...void 0!==h||i?g:void 0!==l?g.filter(a=>""===a.group):[]].some(a=>Math.abs(a.value-m)>.2*m))for(let b of c.patterns)for(let e of a.matchAll(b)){let b=e[0].slice(0,40);if(aD.test(b))continue;let f=a.lastIndexOf("\n",e.index)+1,g=a.indexOf("\n",e.index);-1===g&&(g=a.length);let j=a.slice(f,g);if(aE.test(j)||/^\s*\|/u.test(j)&&void 0===h&&!i&&void 0===l)continue;let k=Number(e[1]);if(!Number.isFinite(k)||k<=0||!/^\s*\|/u.test(j)&&""!==aJ(a,e.index||0,b,f)||/^\s*\|/u.test(j)&&void 0!==l&&""!==aJ(a,e.index||0,b,f)||Math.abs(k-m)<=.2*m)continue;let n=e.index+e[0].indexOf(e[1]),o=void 0!==h&&h>0?"scheduleDays"===c.key?"以绑定资料计划工期为准":"以绑定资料锁定口径为准":void 0!==l?"以未标注部位主流口径为准":"以表格口径为准";d.push({start:n,end:n+e[1].length,replacement:String(m),detail:`${c.label} ${k}${c.unit}→${m}${c.unit}(${o})`})}}for(let b of ay){if("code"!==b.kind)continue;let e=c?.[b.key];if(!e)continue;let f=[];for(let c of b.patterns)for(let b of a.matchAll(c)){let c=b[0].slice(0,40);if(aD.test(c))continue;let d=a.lastIndexOf("\n",b.index)+1,g=a.indexOf("\n",b.index);-1===g&&(g=a.length);let h=a.slice(d,g);if(aE.test(h)||!/^\s*\|/u.test(h)&&""!==aJ(a,b.index||0,"",d)||b[1]===e)continue;let i=b.index+b[0].indexOf(b[1]);f.push({start:i,end:i+b[1].length,raw:c})}for(let c of f)d.push({start:c.start,end:c.end,replacement:e,detail:`${b.label} ${a.slice(c.start,c.end)}→${e}(以工程量清单锁定口径为准)`})}return bj(a,d)})(a,f,b?.codeAuthorities),a=>(function(a,b){if("slope"!==b)return{markdown:a,fixedCount:0,details:[]};let c=0,d=0,e=a.split(/\r?\n/u).map(a=>{let b=a.trim();return/^#{1,6}\s/u.test(b)||/^\s*\|/u.test(b)||!E.test(a)?a:a.split(/(?<=[。;;])/u).map(a=>{if(!E.test(a))return a;if(!F.test(a))return c+=1,"";let b=/([。;;])$/u.exec(a)?.[1],e=a.split(/[,、]/u).filter(a=>!J.test(a)).join(",");for(let[a,c]of(void 0===b||/[。;;]$/u.test(e)||(e+=b),I))e=e.replace(a,c);return d+=1,e}).join("")});return 0===c&&0===d?{markdown:a,fixedCount:0,details:[]}:{markdown:e.join("\n"),fixedCount:c+d,details:[`支护体系确定性裁决(图纸/地质槽位:放坡喷锚类):删除桩族句 ${c} 句、改写混句 ${d} 句`]}})(a,b?.supportAuthority)])){let b=a(c);b.markdown!==c&&(c=b.markdown,d+=b.fixedCount,e.push(...b.details))}return{markdown:c,fixedCount:d,details:e.slice(0,12)}}function bo(a){let b=a.split(/(?<=[。!?;\n])/u),c=[],d=0;return{markdown:b.map(a=>{let b=a.trimStart();if(/^[|#]/.test(b))return a;let e=a,f=!0,g=0;for(;f&&g<20;){f=!1,g+=1;for(let a=16;a>=4;a-=1){for(let b=0;b+2*a<=e.length;b+=1){let g=e.slice(b,b+a);if((/[0-9]/.test(g)||/[\u4e00-\u9fa5]/.test(g))&&e.slice(b+a,b+2*a)===g){e=e.slice(0,b+a)+e.slice(b+2*a),f=!0,d+=1,c.push(`相邻重复短语折叠:“${g.slice(0,24)}”`);break}}if(f)break}if(f)continue;for(let a=20;a>=9;a-=1){for(let b=0;b+a<=e.length;b+=1){let g=e.slice(b,b+a);if(!/[\u4e00-\u9fa5]/.test(g[0]||""))continue;let h=/[0-9]/.test(g);if(!h&&a<12||h&&(/\d$/.test(g)||/[|→\-—]/.test(g)))continue;let i=e.indexOf(g);if(i!==b||-1===e.indexOf(g,i+1))continue;let j=0,k=e.indexOf(g,i+1);for(;-1!==k;)e=e.slice(0,k)+e.slice(k+a),j+=1,k=e.indexOf(g,k);if(j>0){f=!0,d+=j,c.push(`隔位重复短语折叠:“${g.slice(0,24)}”\xd7${j}`);break}}if(f)break}if(f)continue;let a="kW|kVA|MPa|㎡|m\xb2|m\xb3|mm|cm|%",b=RegExp(`(\\d+(?:\\.\\d+)?)(?:${a})(?=\\s*\\d+(?:\\.\\d+)?(?:${a}))`,"gu").exec(e);if(b){let g=b.index+b[0].length,h=e.slice(g).match(RegExp(`^\\s*(\\d+(?:\\.\\d+)?)(?:${a})`));h&&(e=e.slice(0,g)+e.slice(g+h[0].length),f=!0,d+=1,c.push(`数值单位粘连折叠:“${b[0]}${h[0].trim()}”→“${b[0]}”`))}if(f)continue;let h=e;(e=e.replace(/[,,]{2,}/gu,",").replace(/[。;!?]{2,}/gu,a=>a[0]).replace(/,(?=[。;!?])/gu,""))!==h&&(f=!0,c.push("残留重复标点归一"))}return e}).join(""),fixedCount:d,details:c.slice(0,8)}}function bp(a,b){let c=[];if(b?.areaSummary)for(let d of a.matchAll(/\|\s*按施工图设计文件确定\s*\|/gu))c.push({start:d.index+1,end:d.index+d[0].length-1,replacement:` ${b.areaSummary} `,detail:`工程概况一览表建设规模套话→“${b.areaSummary}”`});if(b?.scheduleDays!==void 0&&b.scheduleDays>0)for(let d of a.matchAll(/\|\s*按合同约定工期执行\s*\|/gu))c.push({start:d.index+1,end:d.index+d[0].length-1,replacement:` ${b.scheduleDays}个日历天 `,detail:`工程概况一览表工期套话→“${b.scheduleDays}个日历天”`});if(0===c.length)return{markdown:a,fixedCount:0,details:[]};let d=bj(a,c);return{markdown:d.markdown,fixedCount:d.fixedCount,details:d.details}}function bq(a){let b=a.match(/(### 6\.1\s+施工部署与施工流水组织[\s\S]*?)(?=### 6\.2|## 第[六七]章|$)/u);if(!b)return{markdown:a,fixedCount:0,details:[]};let c=b[0],d=["三检","样板引路","隐蔽验收","见证取样","试块养护","分部分项报验"],e=d.filter(a=>c.includes(a)).length;if(e>=3)return{markdown:a,fixedCount:0,details:[]};let f=`
|
|
22
|
-
质量保障体系与安全文明管理同频运行:项目部实行“三检制”(自检、互检、交接检),每道工序经班组自检、质量员复检合格后报监理单位验收;推行样板引路制度,主体结构、装配式构件安装、ALC墙板安装、幕墙安装等主要分项工程在大面积施工前先做样板,经建设、监理单位验收确认后方可展开;隐蔽工程(钢筋、防水、管线预埋等)覆盖前由质量员组织隐蔽验收并留存影像记录;原材料进场按见证取样要求送检,混凝土试块按规范留置并落实标养与同条件养护;分部分项工程验收严格执行报验程序,验收资料与工程进度同步归档,确保“合格”质量标准与“确保黄山杯”创优目标逐级落实。`,g=(b.index??0)+c.length;return{markdown:a.slice(0,g)+f+a.slice(g),fixedCount:1,details:[`6.1 施工部署块补全质量保障协同段(核心术语 ${d.length-e}/${d.length} 缺失)`]}}function br(a){let b=a.replace(/\s+/gu,"");return b.length?(b.match(/[0-9A-Za-z%℃°±×÷≥≤.]/gu)||[]).length/b.length:0}async function bs(a){if("0"===process.env.DOCUMENT_CROSS_CHAPTER_DEDUP)return[];let b=function(a){let b=[];return a.forEach((a,c)=>{(a.content||"").split(/\n\s*\n/u).forEach((a,d)=>{let e=a.trim();if(!e||/^#{1,6}\s/um.test(e)||/^\s*\|/um.test(e)||/^[-*•]\s/um.test(e))return;let f=e.replace(/\s+/gu,"");f.length<60||b.push({chapterIndex:c,paragraphIndex:d,text:e,normalized:f})})}),b}(a);if(b.length<2)return[];let c=await (0,g.Mv)(b.map(a=>a.normalized),b.map(a=>a.normalized)),d=[],e=new Set;for(let a=0;a<b.length;a+=1)for(let f=a+1;f<b.length;f+=1){let g=b[a],h=b[f];if(g.chapterIndex===h.chapterIndex||g.normalized===h.normalized)continue;let i=c(g.normalized,h.normalized);if(i<.82)continue;let j=br(g.text),k=br(h.text),l=j>k||j===k&&g.chapterIndex<=h.chapterIndex,m=l?g:h,n=l?h:g,o=`${n.chapterIndex}:${n.paragraphIndex}`;e.has(o)||(e.add(o),d.push({keep:{chapterIndex:m.chapterIndex,paragraphIndex:m.paragraphIndex},drop:{chapterIndex:n.chapterIndex,paragraphIndex:n.paragraphIndex},similarity:i,paragraphPreview:n.normalized.slice(0,40)}))}return d}async function bt(a){return(await bs(a)).map(b=>({level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"llm_repairable",chapterId:a[b.drop.chapterIndex]?.id,message:`跨章语义重复:「${a[b.keep.chapterIndex]?.title||"?"}」与「${a[b.drop.chapterIndex]?.title||"?"}」存在内容高度雷同段落(相似度 ${b.similarity.toFixed(2)}):“${b.paragraphPreview}…”`,suggestion:"同一内容全文只保留一处(保留信息密度高者);删除或改写本章的雷同段落,与本章主题相关的独有信息归并后,不得与他章段落语义重复。"}))}async function bu(a){let b=0;for(let c=0;c<5;c+=1){let c=await bs(a);if(0===c.length)break;let d=0;for(let b of[...c].sort((a,b)=>a.drop.chapterIndex-b.drop.chapterIndex||b.drop.paragraphIndex-a.drop.paragraphIndex)){let c=a[b.drop.chapterIndex];if(!c)continue;let e=(c.content||"").split(/\n\s*\n/u);!(b.drop.paragraphIndex>=e.length)&&(e[b.drop.paragraphIndex].trim().replace(/\s+/gu,"").length<60||(e.splice(b.drop.paragraphIndex,1),c.content=e.join("\n\n"),d+=1))}if(0===d)break;b+=d}return b}function bv(a){let b=a,c=0,d=[];for(let a of[{from:/施工过程中如涉及危险性较大的分部分项工程[^。;;\n]*?(?:未经审批不得实施|后方可实施|方可实施)/gu,to:"危险性较大的分部分项工程按住房和城乡建设部令第37号与建办质〔2018〕31号规定逐项辨识、分级管控:凡达到危大工程判定线的分项,施工前编制专项施工方案,由技术负责人审核签字后报监理审批;超过一定规模的危大工程专项方案组织专家论证,未经审批不得实施",detail:"危大「如涉及」假设表述改写为逐项辨识分级管控"},{from:/发现[^。;;\n]{0,18}?(?:缺项|矛盾|缺失|遗漏)[^。;;\n]{0,24}?(?:时|后)在?\d+小时(?:内)?[^。;;\n]{0,10}?(?:补测|补正|补救|补录|补记)/gu,to:"记录经复核确认完整、数据准确后归档保存",detail:"踏勘补测类负面假设改写为复核确认归档"},{from:/确保[^。;;\n]{0,20}?与(?:本)?施工组织设计的?一致性/gu,to:"确认现场条件与施工组织设计相符",detail:"现场条件一致性两可暗示改写为确认相符"},{from:/本工程不允许分包[^。;;\n]{0,40}?组织实施/gu,to:"本工程全部施工任务由我公司项目部自行组织实施,严禁违法分包、转包及挂靠行为",detail:"「不允许分包」短板暗示改写为自主组织正向表述"},{from:/针对踏勘中发现的与设计图纸不一致或设计未明确的事项[^。;;\n]{0,60}?按以下[口经]径处理/gu,to:"项目部对照施工图与现场条件逐项复核,按以下程序处理",detail:"「设计图纸不一致」负面假设改写为对照复核程序"},{from:/杜绝施工过程中以工程量组价缺失为由提出变更申请/gu,to:"开工前完成工程量与清单核对,施工过程中严格按合同约定计量计价",detail:"「组价缺失」短板暴露改写为开工前核对闭环"},{from:/涉及危险性较大的分部分项工程,我公司将依据([^。;;\n]{0,80}?),在施工前单独编制专项施工方案并履行审批程序。/gu,to:"本工程危险性较大的分部分项工程管理执行$1规定:施工前编制专项施工方案,履行审批程序后实施。",detail:"危大「涉及」假设句式改写为管理执行闭环"},{from:/上述参数在后续各分项施工方案中逐项落位执行。?/gu,to:"上述参数作为全文统一控制基准,各分项施工方案均按此执行。",detail:"「后续落位」延迟承诺改写为统一控制基准"},{from:/补疑文件对施工内容作出以下明确修正:([^。\n]{0,200}?)。上述修正内容已纳入本施工组织设计对应分项方案,施工过程中不再另行变更。?/gu,to:"招标文件补疑明确:$1。上述内容已纳入本施工组织设计对应分项方案并统一执行。",detail:"「补疑修正不再变更」负面暗示改写为统一执行"},{from:/项目部按《建筑施工企业、工程项目安全生产管理机构设置及安全生产管理人员配备办法》(建质规〔2025〕3号)配备专职安全生产管理人员,公司分管安全负责人每月带班检查不得少于两次/gu,to:"项目部严格执行《建筑施工企业、工程项目安全生产管理机构设置及安全生产管理人员配备办法》(建质规〔2025〕3号),专职安全生产管理人员按标准配足配齐,公司分管安全负责人每月带班检查不少于两次并留存检查记录",detail:"安全人员配备与带班检查短板暗示改写为配足配齐正向表述"},{from:/项目部在开工令下发后第(\d+)日亮化及附属设施安装完成后,随即启动竣工清理与验收移交程序,确保开工令下发后第(\d+)日完成全部验收移交工作/gu,to:"亮化及附属设施安装于开工令下发后第$1日完成,竣工清理与验收移交按计划组织,开工令下发后第$2日全部验收移交工作完成",detail:"竣工验收赶工暗示改写为按计划组织正向表述"},{from:/隐蔽工程在施工过程中已按(\d+)小时提前通知要求完成验收,竣工阶段不再重复检验,但须将全部隐蔽验收影像资料纳入竣工资料归档/gu,to:"隐蔽工程按$1小时提前通知要求组织验收,验收合格后方可进入下道工序,全部隐蔽验收影像资料纳入竣工资料归档",detail:"「竣工阶段不再重复检验」自伤暗示改写为验收闭环正向表述"},{from:/本施工组织设计的编制边界为:本项目位于肥西县丰乐镇,以补疑澄清文件对清单及图纸的修正口径为优先执行依据。?/gu,to:"本施工组织设计编制依据包括招标文件、补疑澄清文件、施工图及工程量清单,正文数据口径与补疑澄清文件修正口径保持一致。",detail:"编制边界两可暗示改写为编制依据一致性正向表述"},{from:/施工组织设计覆盖从开工令下发至竣工验收合格后移交保修的全过程管理,不包含招标范围以外的工程内容。?/gu,to:"施工组织设计覆盖开工令下发至竣工验收移交保修的全过程管理,全过程管理内容与招标范围一致。",detail:"「不包含招标范围以外」短板暗示改写为覆盖范围一致性表述"},{from:/面层混凝土弯拉强度达到设计强度且填缝完成前不得开放交通,由试验员按每检验批留置试块并送检,强度报告归档闭环。?/gu,to:"面层混凝土达到设计强度且填缝完成后开放交通,试验员按每检验批留置试块送检,强度报告归档形成质量闭环。",detail:"「不得开放交通」负面表述改写为达到条件后开放交通正向表述"},{from:/本项目以成熟可靠的常规工艺为主,未采用(?:行业认定的)?新技术、新材料、新工艺或新设备[^。;;\n]{0,20}?。?/gu,to:"本项目工艺选择以成熟可靠为原则,全部采用经工程实践验证的成熟工艺、常规材料和标准化设备,确保各分项施工质量稳定可控。",detail:"「未采用新技术」短板自曝改写为成熟工艺正向表述"},{from:/本招标项目不允许分包。本工程不进行分包,全部施工内容由我方自行组织完成。?/gu,to:"本招标项目严禁转包和违法分包,本工程全部施工任务由我公司项目部自行组织实施",detail:"「本工程不进行分包」否定式自述改写为自主组织正向表述"},{from:/亮化与收尾阶段安排1个日历天,各分组在收尾阶段同步完成路灯调试\s*、\s*场地清理和竣工资料整理,项目经理组织各分组施工员进行内部预验收,预验收问题清单当日下发、限时整改、复查销项后方可申请正式竣工验收。?/gu,to:"亮化与收尾阶段按总进度计划组织实施,各分组同步完成路灯调试、场地清理和竣工资料整理;项目经理组织内部预验收,预验收问题清单当日下发、限时整改、复查销项后申请正式竣工验收",detail:"「安排1个日历天」收尾赶工暗示改写为按计划组织正向表述"}]){let e=[...b.matchAll(a.from)];0!==e.length&&(b=b.replace(a.from,a.to),c+=e.length,d.push(`${a.detail} ${e.length} 处`))}return{markdown:b,fixedCount:c,details:d}}let bw={基坑支护与降水工程:"基坑支护与降水工程:基坑开挖深度达到判定线的区段按基坑支护与降水工程辨识,支护与降水方案经审批后实施。",高大模板支撑工程:"高大模板支撑工程:模板支撑搭设高度或荷载达到判定线的部位按高大模板支撑工程辨识,编制专项施工方案并组织验收。",脚手架工程:"脚手架工程:脚手架搭设高度达到判定线的部位按脚手架工程辨识,搭设与拆除执行专项施工方案。",起重吊装及安装拆卸工程:"起重吊装及安装拆卸工程:管道吊装、构件吊装等吊装作业按起重吊装及安装拆卸工程辨识,吊装专项方案经技术负责人审核后实施。",吊篮作业工程:"吊篮作业工程:外墙作业采用吊篮的区段按吊篮作业工程辨识,吊篮安拆验收合格后投入使用。",拆除工程:"拆除工程:既有建筑物、构筑物及设施拆除作业按拆除工程辨识,拆除前编制专项拆除方案并交底后实施。"};function bx(a){let b=j.I.filter(b=>b.applicable(a));if(0===b.length)return{markdown:a,fixedCount:0,details:[]};let c=(0,j.xb)(a);if(!c)return{markdown:a,fixedCount:0,details:[]};let d=b.filter(a=>!a.aliases.some(a=>c.includes(a)));if(0===d.length)return{markdown:a,fixedCount:0,details:[]};let e=a.split(/\r?\n/u),f=e.findIndex(a=>/危大/u.test(a)&&/^#{2,4}\s/u.test(a.trim()));if(f<0){for(let a=e.length-1;a>=0;a-=1)if(/危大/u.test(e[a])){f=a;break}}if(f<0)return{markdown:a,fixedCount:0,details:[]};let g=d.map(a=>bw[a.name]??"").filter(Boolean);return 0===g.length?{markdown:a,fixedCount:0,details:[]}:(e.splice(f+1,0,...g),{markdown:e.join("\n"),fixedCount:g.length,details:[`危大辨识清单补写:${d.map(a=>a.name).join("、")}`]})}let by={"施工工地周边100%围挡":"施工工地周边100%围挡:施工现场沿用地红线设置连续封闭围挡,围挡立面保持整洁完好。","物料堆放100%覆盖":"物料堆放100%覆盖:易产生扬尘的砂石、水泥等散体材料堆场采用密目网全覆盖。","出入车辆100%冲洗":"出入车辆100%冲洗:出入口设置车辆冲洗设施,车辆驶离工地前冲洗干净后方可上路。","施工现场地面100%硬化":"施工现场地面100%硬化:施工便道、材料加工区及堆场地面全部硬化处理。","拆迁工地100%湿法作业":"拆迁工地100%湿法作业:拆除作业配备雾炮机同步喷淋降尘,全程湿法作业。","渣土车辆100%密闭运输":"渣土车辆100%密闭运输:渣土运输车辆加盖密闭篷布,装载高度不超过车厢挡板。"};async function bz(a){if(!/扬尘|环保|文明施工|绿色施工/u.test(a))return{markdown:a,fixedCount:0,details:[]};let b=[...new Set(a.split(/\r?\n/u).flatMap(a=>{let b=a.trim();return!b||/^#{1,6}\s/u.test(b)||/^\s*\|/u.test(b)||!/围挡|覆盖|堆放|冲洗|硬化|湿法|密闭|渣土|扬尘|降尘/u.test(b)?[]:b.split(/(?<=[。!?!?;;])/u).map(a=>a.trim()).filter(a=>a.length>=8&&a.length<=120)}))],c=await O(M.map(a=>({key:a.name,text:a.query})),b),d=/(?:本项目|本工程|该工程|该项目|本标段|本施工项目)[^。;;\n]{0,30}(?:无拆迁|不涉及拆迁|无房屋拆除|无拆除)/u.test(a),e=M.filter(a=>!c.get(a.name)&&!Q(a.name,b)).filter(a=>!("拆迁工地100%湿法作业"===a.name&&d)).map(a=>a.name);if(0===e.length)return{markdown:a,fixedCount:0,details:[]};let f=a.split(/\r?\n/u),g=f.findIndex(a=>!/^\s*\|/u.test(a)&&!/^#{1,6}\s/u.test(a.trim())&&/六个百分百|100%围挡|扬尘治理/u.test(a)),h=g>=0?g+1:-1;if(h<0){let a=[];for(let b=0;b<f.length;b+=1)/^#{1,6}\s/u.test(f[b].trim())&&a.push({index:b,text:f[b]});let b=[...a].reverse().find(a=>/扬尘|降尘|防尘|六个百分百/u.test(a.text))??[...a].reverse().find(a=>/环保|文明施工|绿色施工/u.test(a.text));if(h=f.length,b){for(let a=b.index+1;a<f.length;a+=1)if(/^#{1,6}\s/u.test(f[a].trim())){h=a;break}}}let i=e.map(a=>by[a]??"").filter(Boolean);return f.splice(h,0,...i),{markdown:f.join("\n"),fixedCount:i.length,details:[`扬尘六个百分百补写:${e.join("、")}`]}}let bA=[{from:/全文唯一劳动力峰值口径/gu,to:"全文劳动力峰值基准",detail:"劳动力峰值口径"},{from:/统一控制口径/gu,to:"统一控制基准",detail:"统一控制口径"},{from:/按以下口径处理/gu,to:"按以下程序处理",detail:"按以下口径处理"},{from:/拆除工程工作包/gu,to:"拆除工程",detail:"拆除工程工作包"},{from:/按工作包逐项说明/gu,to:"按专业工程逐项说明",detail:"按工作包逐项说明"}];function bB(a){let b=a,c=0,d=[];for(let a of bA){let e=[...b.matchAll(a.from)];0!==e.length&&(b=b.replace(a.from,a.to),c+=e.length,d.push(`${a.detail} ${e.length} 处`))}return{markdown:b,fixedCount:c,details:d}}function bC(a){let b=a.split(/\r?\n/u),c=0,d=/^\s*\|(?:\s*:?-{3,}:?\s*\|)+\s*$/u,e=/^\s*\|.+\|\s*$/u;for(let a=0;a<b.length;a+=1){let f=b[a].trim();if(!d.test(f)||a>0&&e.test(b[a-1].trim())||a+1>=b.length||!e.test(b[a+1].trim()))continue;let g=f.split("|").filter(a=>""!==a.trim()).length;if(g<2)continue;let h=`| 项目 | 内容 |${" 备注 |".repeat(Math.max(0,g-2))}`;b.splice(a,0,h),c+=1,a+=1}return{markdown:b.join("\n"),fixedCount:c,details:c>0?[`无表头表格补齐表头 ${c} 处`]:[]}}let bD=[{from:/钢板桩或型钢支撑支护/gu,to:"钢板桩支护",detail:"钢板桩型钢两可归一为钢板桩"},{from:/放坡或钢板桩支护/gu,to:"1:0.5放坡加钢板桩支护",detail:"放坡钢板桩两可归一为组合支护"},{from:/放坡或支护/gu,to:"放坡支护",detail:"放坡支护两可归一"}];function bE(a){let b=a,c=0,d=[];for(let a of bD){let e=[...b.matchAll(a.from)];0!==e.length&&(b=b.replace(a.from,a.to),c+=e.length,d.push(`${a.detail} ${e.length} 处`))}return{markdown:b,fixedCount:c,details:d}}let bF=[{from:/,将报公共资源交易监督管理部门处理/gu,to:",由招标人按招标文件规定程序处理",detail:"公共资源交易监督管理"}];function bG(a){let b=a,c=0,d=[];for(let a of bF){let e=[...b.matchAll(a.from)];0!==e.length&&(b=b.replace(a.from,a.to),c+=e.length,d.push(`${a.detail} ${e.length} 处`))}return{markdown:b,fixedCount:c,details:d}}let bH=/^##\s+目录\s*$([\s\S]*?)(?=\n<div class="page-break"><\/div>|\n##\s+)/mu,bI=/^##\s+(第[一二三四五六七八九十百千万\d]+章)\s+(.+)$/gmu,bJ=/^###\s+(\d+\.\d+)\s+(.+)$/gmu,bK={一:1,二:2,三:3,四:4,五:5,六:6,七:7,八:8,九:9,十:10};function bL(a){let b=bH.exec(a);if(!b)return{markdown:a,fixedCount:0,details:[]};let c=[...a.matchAll(bI)].map(a=>({ordinal:function(a){let b=a.replace(/^第|章$/gu,"");return/^\d+$/.test(b)?Number(b):void 0!==bK[b]?bK[b]:2===b.length&&"十"===b[0]?10+(bK[b[1]??""]??0):void 0}(a[1]||""),heading:a[1]||"",title:a[2]?.trim()||""})).filter(a=>void 0!==a.ordinal&&a.title),d=[...a.matchAll(bJ)].map(a=>({number:a[1]||"",major:Number((a[1]||"0").split(".")[0]),title:(a[2]||"").trim()}));if(0===c.length||0===d.length)return{markdown:a,fixedCount:0,details:[]};let e=[];for(let a of c)for(let b of(e.push(`${a.heading} ${a.title}`),d.filter(b=>b.major===a.ordinal)))e.push(` ${b.number} ${b.title}`);let f=`## 目录
|
|
22
|
+
质量保障体系与安全文明管理同频运行:项目部实行“三检制”(自检、互检、交接检),每道工序经班组自检、质量员复检合格后报监理单位验收;推行样板引路制度,主体结构、装配式构件安装、ALC墙板安装、幕墙安装等主要分项工程在大面积施工前先做样板,经建设、监理单位验收确认后方可展开;隐蔽工程(钢筋、防水、管线预埋等)覆盖前由质量员组织隐蔽验收并留存影像记录;原材料进场按见证取样要求送检,混凝土试块按规范留置并落实标养与同条件养护;分部分项工程验收严格执行报验程序,验收资料与工程进度同步归档,确保“合格”质量标准与“确保黄山杯”创优目标逐级落实。`,g=(b.index??0)+c.length;return{markdown:a.slice(0,g)+f+a.slice(g),fixedCount:1,details:[`6.1 施工部署块补全质量保障协同段(核心术语 ${d.length-e}/${d.length} 缺失)`]}}function br(a){let b=a.replace(/\s+/gu,"");return b.length?(b.match(/[0-9A-Za-z%℃°±×÷≥≤.]/gu)||[]).length/b.length:0}async function bs(a){if("0"===process.env.DOCUMENT_CROSS_CHAPTER_DEDUP)return[];let b=function(a){let b=[];return a.forEach((a,c)=>{(a.content||"").split(/\n\s*\n/u).forEach((a,d)=>{let e=a.trim();if(!e||/^#{1,6}\s/um.test(e)||/^\s*\|/um.test(e)||/^[-*•]\s/um.test(e))return;let f=e.replace(/\s+/gu,"");f.length<60||b.push({chapterIndex:c,paragraphIndex:d,text:e,normalized:f})})}),b}(a);if(b.length<2)return[];let c=await (0,g.Mv)(b.map(a=>a.normalized),b.map(a=>a.normalized)),d=[],e=new Set;for(let a=0;a<b.length;a+=1)for(let f=a+1;f<b.length;f+=1){let g=b[a],h=b[f];if(g.chapterIndex===h.chapterIndex||g.normalized===h.normalized)continue;let i=c(g.normalized,h.normalized);if(i<.82)continue;let j=br(g.text),k=br(h.text),l=j>k||j===k&&g.chapterIndex<=h.chapterIndex,m=l?g:h,n=l?h:g,o=`${n.chapterIndex}:${n.paragraphIndex}`;e.has(o)||(e.add(o),d.push({keep:{chapterIndex:m.chapterIndex,paragraphIndex:m.paragraphIndex},drop:{chapterIndex:n.chapterIndex,paragraphIndex:n.paragraphIndex},similarity:i,paragraphPreview:n.normalized.slice(0,40)}))}return d}async function bt(a){return(await bs(a)).map(b=>({level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"llm_repairable",chapterId:a[b.drop.chapterIndex]?.id,message:`跨章语义重复:「${a[b.keep.chapterIndex]?.title||"?"}」与「${a[b.drop.chapterIndex]?.title||"?"}」存在内容高度雷同段落(相似度 ${b.similarity.toFixed(2)}):“${b.paragraphPreview}…”`,suggestion:"同一内容全文只保留一处(保留信息密度高者);删除或改写本章的雷同段落,与本章主题相关的独有信息归并后,不得与他章段落语义重复。"}))}async function bu(a){let b=0;for(let c=0;c<5;c+=1){let c=await bs(a);if(0===c.length)break;let d=0;for(let b of[...c].sort((a,b)=>a.drop.chapterIndex-b.drop.chapterIndex||b.drop.paragraphIndex-a.drop.paragraphIndex)){let c=a[b.drop.chapterIndex];if(!c)continue;let e=(c.content||"").split(/\n\s*\n/u);!(b.drop.paragraphIndex>=e.length)&&(e[b.drop.paragraphIndex].trim().replace(/\s+/gu,"").length<60||(e.splice(b.drop.paragraphIndex,1),c.content=e.join("\n\n"),d+=1))}if(0===d)break;b+=d}return b}function bv(a){let b=a,c=0,d=[];for(let a of[{from:/施工过程中如涉及危险性较大的分部分项工程[^。;;\n]*?(?:未经审批不得实施|后方可实施|方可实施)/gu,to:"危险性较大的分部分项工程按住房和城乡建设部令第37号与建办质〔2018〕31号规定逐项辨识、分级管控:凡达到危大工程判定线的分项,施工前编制专项施工方案,由技术负责人审核签字后报监理审批;超过一定规模的危大工程专项方案组织专家论证,未经审批不得实施",detail:"危大「如涉及」假设表述改写为逐项辨识分级管控"},{from:/发现[^。;;\n]{0,18}?(?:缺项|矛盾|缺失|遗漏)[^。;;\n]{0,24}?(?:时|后)在?\d+小时(?:内)?[^。;;\n]{0,10}?(?:补测|补正|补救|补录|补记)/gu,to:"记录经复核确认完整、数据准确后归档保存",detail:"踏勘补测类负面假设改写为复核确认归档"},{from:/确保[^。;;\n]{0,20}?与(?:本)?施工组织设计的?一致性/gu,to:"确认现场条件与施工组织设计相符",detail:"现场条件一致性两可暗示改写为确认相符"},{from:/本工程不允许分包[^。;;\n]{0,40}?组织实施/gu,to:"本工程全部施工任务由我公司项目部自行组织实施,严禁违法分包、转包及挂靠行为",detail:"「不允许分包」短板暗示改写为自主组织正向表述"},{from:/针对踏勘中发现的与设计图纸不一致或设计未明确的事项[^。;;\n]{0,60}?按以下[口经]径处理/gu,to:"项目部对照施工图与现场条件逐项复核,按以下程序处理",detail:"「设计图纸不一致」负面假设改写为对照复核程序"},{from:/杜绝施工过程中以工程量组价缺失为由提出变更申请/gu,to:"开工前完成工程量与清单核对,施工过程中严格按合同约定计量计价",detail:"「组价缺失」短板暴露改写为开工前核对闭环"},{from:/涉及危险性较大的分部分项工程,我公司将依据([^。;;\n]{0,80}?),在施工前单独编制专项施工方案并履行审批程序。/gu,to:"本工程危险性较大的分部分项工程管理执行$1规定:施工前编制专项施工方案,履行审批程序后实施。",detail:"危大「涉及」假设句式改写为管理执行闭环"},{from:/上述参数在后续各分项施工方案中逐项落位执行。?/gu,to:"上述参数作为全文统一控制基准,各分项施工方案均按此执行。",detail:"「后续落位」延迟承诺改写为统一控制基准"},{from:/补疑文件对施工内容作出以下明确修正:([^。\n]{0,200}?)。上述修正内容已纳入本施工组织设计对应分项方案,施工过程中不再另行变更。?/gu,to:"招标文件补疑明确:$1。上述内容已纳入本施工组织设计对应分项方案并统一执行。",detail:"「补疑修正不再变更」负面暗示改写为统一执行"},{from:/项目部按《建筑施工企业、工程项目安全生产管理机构设置及安全生产管理人员配备办法》(建质规〔2025〕3号)配备专职安全生产管理人员,公司分管安全负责人每月带班检查不得少于两次/gu,to:"项目部严格执行《建筑施工企业、工程项目安全生产管理机构设置及安全生产管理人员配备办法》(建质规〔2025〕3号),专职安全生产管理人员按标准配足配齐,公司分管安全负责人每月带班检查不少于两次并留存检查记录",detail:"安全人员配备与带班检查短板暗示改写为配足配齐正向表述"},{from:/项目部在开工令下发后第(\d+)日亮化及附属设施安装完成后,随即启动竣工清理与验收移交程序,确保开工令下发后第(\d+)日完成全部验收移交工作/gu,to:"亮化及附属设施安装于开工令下发后第$1日完成,竣工清理与验收移交按计划组织,开工令下发后第$2日全部验收移交工作完成",detail:"竣工验收赶工暗示改写为按计划组织正向表述"},{from:/隐蔽工程在施工过程中已按(\d+)小时提前通知要求完成验收,竣工阶段不再重复检验,但须将全部隐蔽验收影像资料纳入竣工资料归档/gu,to:"隐蔽工程按$1小时提前通知要求组织验收,验收合格后方可进入下道工序,全部隐蔽验收影像资料纳入竣工资料归档",detail:"「竣工阶段不再重复检验」自伤暗示改写为验收闭环正向表述"},{from:/本施工组织设计的编制边界为:本项目位于[^,。;;\n]{2,40},以补疑澄清文件对清单及图纸的修正口径为优先执行依据。?/gu,to:"本施工组织设计编制依据包括招标文件、补疑澄清文件、施工图及工程量清单,正文数据口径与补疑澄清文件修正口径保持一致。",detail:"编制边界两可暗示改写为编制依据一致性正向表述"},{from:/施工组织设计覆盖从开工令下发至竣工验收合格后移交保修的全过程管理,不包含招标范围以外的工程内容。?/gu,to:"施工组织设计覆盖开工令下发至竣工验收移交保修的全过程管理,全过程管理内容与招标范围一致。",detail:"「不包含招标范围以外」短板暗示改写为覆盖范围一致性表述"},{from:/面层混凝土弯拉强度达到设计强度且填缝完成前不得开放交通,由试验员按每检验批留置试块并送检,强度报告归档闭环。?/gu,to:"面层混凝土达到设计强度且填缝完成后开放交通,试验员按每检验批留置试块送检,强度报告归档形成质量闭环。",detail:"「不得开放交通」负面表述改写为达到条件后开放交通正向表述"},{from:/本项目以成熟可靠的常规工艺为主,未采用(?:行业认定的)?新技术、新材料、新工艺或新设备[^。;;\n]{0,20}?。?/gu,to:"本项目工艺选择以成熟可靠为原则,全部采用经工程实践验证的成熟工艺、常规材料和标准化设备,确保各分项施工质量稳定可控。",detail:"「未采用新技术」短板自曝改写为成熟工艺正向表述"},{from:/本招标项目不允许分包。本工程不进行分包,全部施工内容由我方自行组织完成。?/gu,to:"本招标项目严禁转包和违法分包,本工程全部施工任务由我公司项目部自行组织实施",detail:"「本工程不进行分包」否定式自述改写为自主组织正向表述"},{from:/(?:亮化与)?收尾阶段安排\s*\d+\s*个日历天[^。\n]{0,60}?项目经理组织各分组施工员进行内部预验收[^。\n]{0,80}?竣工验收。?/gu,to:"收尾阶段按总进度计划组织实施,项目经理组织内部预验收,预验收问题清单当日下发、限时整改、复查销项后申请正式竣工验收",detail:"「收尾阶段安排N个日历天」赶工暗示改写为按计划组织正向表述"}]){let e=[...b.matchAll(a.from)];0!==e.length&&(b=b.replace(a.from,a.to),c+=e.length,d.push(`${a.detail} ${e.length} 处`))}return{markdown:b,fixedCount:c,details:d}}let bw={基坑支护与降水工程:"基坑支护与降水工程:基坑开挖深度达到判定线的区段按基坑支护与降水工程辨识,支护与降水方案经审批后实施。",高大模板支撑工程:"高大模板支撑工程:模板支撑搭设高度或荷载达到判定线的部位按高大模板支撑工程辨识,编制专项施工方案并组织验收。",脚手架工程:"脚手架工程:脚手架搭设高度达到判定线的部位按脚手架工程辨识,搭设与拆除执行专项施工方案。",起重吊装及安装拆卸工程:"起重吊装及安装拆卸工程:管道吊装、构件吊装等吊装作业按起重吊装及安装拆卸工程辨识,吊装专项方案经技术负责人审核后实施。",吊篮作业工程:"吊篮作业工程:外墙作业采用吊篮的区段按吊篮作业工程辨识,吊篮安拆验收合格后投入使用。",拆除工程:"拆除工程:既有建筑物、构筑物及设施拆除作业按拆除工程辨识,拆除前编制专项拆除方案并交底后实施。"};function bx(a){let b=j.I.filter(b=>b.applicable(a));if(0===b.length)return{markdown:a,fixedCount:0,details:[]};let c=(0,j.xb)(a);if(!c)return{markdown:a,fixedCount:0,details:[]};let d=b.filter(a=>!a.aliases.some(a=>c.includes(a)));if(0===d.length)return{markdown:a,fixedCount:0,details:[]};let e=a.split(/\r?\n/u),f=e.findIndex(a=>/危大/u.test(a)&&/^#{2,4}\s/u.test(a.trim()));if(f<0){for(let a=e.length-1;a>=0;a-=1)if(/危大/u.test(e[a])){f=a;break}}if(f<0)return{markdown:a,fixedCount:0,details:[]};let g=d.map(a=>bw[a.name]??"").filter(Boolean);return 0===g.length?{markdown:a,fixedCount:0,details:[]}:(e.splice(f+1,0,...g),{markdown:e.join("\n"),fixedCount:g.length,details:[`危大辨识清单补写:${d.map(a=>a.name).join("、")}`]})}let by={"施工工地周边100%围挡":"施工工地周边100%围挡:施工现场沿用地红线设置连续封闭围挡,围挡立面保持整洁完好。","物料堆放100%覆盖":"物料堆放100%覆盖:易产生扬尘的砂石、水泥等散体材料堆场采用密目网全覆盖。","出入车辆100%冲洗":"出入车辆100%冲洗:出入口设置车辆冲洗设施,车辆驶离工地前冲洗干净后方可上路。","施工现场地面100%硬化":"施工现场地面100%硬化:施工便道、材料加工区及堆场地面全部硬化处理。","拆迁工地100%湿法作业":"拆迁工地100%湿法作业:拆除作业配备雾炮机同步喷淋降尘,全程湿法作业。","渣土车辆100%密闭运输":"渣土车辆100%密闭运输:渣土运输车辆加盖密闭篷布,装载高度不超过车厢挡板。"};async function bz(a){if(!/扬尘|环保|文明施工|绿色施工/u.test(a))return{markdown:a,fixedCount:0,details:[]};let b=[...new Set(a.split(/\r?\n/u).flatMap(a=>{let b=a.trim();return!b||/^#{1,6}\s/u.test(b)||/^\s*\|/u.test(b)||!/围挡|覆盖|堆放|冲洗|硬化|湿法|密闭|渣土|扬尘|降尘/u.test(b)?[]:b.split(/(?<=[。!?!?;;])/u).map(a=>a.trim()).filter(a=>a.length>=8&&a.length<=120)}))],c=await O(M.map(a=>({key:a.name,text:a.query})),b),d=/(?:本项目|本工程|该工程|该项目|本标段|本施工项目)[^。;;\n]{0,30}(?:无拆迁|不涉及拆迁|无房屋拆除|无拆除)/u.test(a),e=M.filter(a=>!c.get(a.name)&&!Q(a.name,b)).filter(a=>!("拆迁工地100%湿法作业"===a.name&&d)).map(a=>a.name);if(0===e.length)return{markdown:a,fixedCount:0,details:[]};let f=a.split(/\r?\n/u),g=f.findIndex(a=>!/^\s*\|/u.test(a)&&!/^#{1,6}\s/u.test(a.trim())&&/六个百分百|100%围挡|扬尘治理/u.test(a)),h=g>=0?g+1:-1;if(h<0){let a=[];for(let b=0;b<f.length;b+=1)/^#{1,6}\s/u.test(f[b].trim())&&a.push({index:b,text:f[b]});let b=[...a].reverse().find(a=>/扬尘|降尘|防尘|六个百分百/u.test(a.text))??[...a].reverse().find(a=>/环保|文明施工|绿色施工/u.test(a.text));if(h=f.length,b){for(let a=b.index+1;a<f.length;a+=1)if(/^#{1,6}\s/u.test(f[a].trim())){h=a;break}}}let i=e.map(a=>by[a]??"").filter(Boolean);return f.splice(h,0,...i),{markdown:f.join("\n"),fixedCount:i.length,details:[`扬尘六个百分百补写:${e.join("、")}`]}}let bA=[{from:/全文唯一劳动力峰值口径/gu,to:"全文劳动力峰值基准",detail:"劳动力峰值口径"},{from:/统一控制口径/gu,to:"统一控制基准",detail:"统一控制口径"},{from:/按以下口径处理/gu,to:"按以下程序处理",detail:"按以下口径处理"},{from:/拆除工程工作包/gu,to:"拆除工程",detail:"拆除工程工作包"},{from:/按工作包逐项说明/gu,to:"按专业工程逐项说明",detail:"按工作包逐项说明"}];function bB(a){let b=a,c=0,d=[];for(let a of bA){let e=[...b.matchAll(a.from)];0!==e.length&&(b=b.replace(a.from,a.to),c+=e.length,d.push(`${a.detail} ${e.length} 处`))}return{markdown:b,fixedCount:c,details:d}}function bC(a){let b=a.split(/\r?\n/u),c=0,d=/^\s*\|(?:\s*:?-{3,}:?\s*\|)+\s*$/u,e=/^\s*\|.+\|\s*$/u;for(let a=0;a<b.length;a+=1){let f=b[a].trim();if(!d.test(f)||a>0&&e.test(b[a-1].trim())||a+1>=b.length||!e.test(b[a+1].trim()))continue;let g=f.split("|").filter(a=>""!==a.trim()).length;if(g<2)continue;let h=`| 项目 | 内容 |${" 备注 |".repeat(Math.max(0,g-2))}`;b.splice(a,0,h),c+=1,a+=1}return{markdown:b.join("\n"),fixedCount:c,details:c>0?[`无表头表格补齐表头 ${c} 处`]:[]}}let bD=[{from:/钢板桩或型钢支撑支护/gu,to:"钢板桩支护",detail:"钢板桩型钢两可归一为钢板桩"},{from:/放坡或钢板桩支护/gu,to:"1:0.5放坡加钢板桩支护",detail:"放坡钢板桩两可归一为组合支护"},{from:/放坡或支护/gu,to:"放坡支护",detail:"放坡支护两可归一"}];function bE(a){let b=a,c=0,d=[];for(let a of bD){let e=[...b.matchAll(a.from)];0!==e.length&&(b=b.replace(a.from,a.to),c+=e.length,d.push(`${a.detail} ${e.length} 处`))}return{markdown:b,fixedCount:c,details:d}}let bF=[{from:/,将报公共资源交易监督管理部门处理/gu,to:",由招标人按招标文件规定程序处理",detail:"公共资源交易监督管理"}];function bG(a){let b=a,c=0,d=[];for(let a of bF){let e=[...b.matchAll(a.from)];0!==e.length&&(b=b.replace(a.from,a.to),c+=e.length,d.push(`${a.detail} ${e.length} 处`))}return{markdown:b,fixedCount:c,details:d}}let bH=/^##\s+目录\s*$([\s\S]*?)(?=\n<div class="page-break"><\/div>|\n##\s+)/mu,bI=/^##\s+(第[一二三四五六七八九十百千万\d]+章)\s+(.+)$/gmu,bJ=/^###\s+(\d+\.\d+)\s+(.+)$/gmu,bK={一:1,二:2,三:3,四:4,五:5,六:6,七:7,八:8,九:9,十:10};function bL(a){let b=bH.exec(a);if(!b)return{markdown:a,fixedCount:0,details:[]};let c=[...a.matchAll(bI)].map(a=>({ordinal:function(a){let b=a.replace(/^第|章$/gu,"");return/^\d+$/.test(b)?Number(b):void 0!==bK[b]?bK[b]:2===b.length&&"十"===b[0]?10+(bK[b[1]??""]??0):void 0}(a[1]||""),heading:a[1]||"",title:a[2]?.trim()||""})).filter(a=>void 0!==a.ordinal&&a.title),d=[...a.matchAll(bJ)].map(a=>({number:a[1]||"",major:Number((a[1]||"0").split(".")[0]),title:(a[2]||"").trim()}));if(0===c.length||0===d.length)return{markdown:a,fixedCount:0,details:[]};let e=[];for(let a of c)for(let b of(e.push(`${a.heading} ${a.title}`),d.filter(b=>b.major===a.ordinal)))e.push(` ${b.number} ${b.title}`);let f=`## 目录
|
|
23
23
|
|
|
24
24
|
${e.join("\n")}`;return b[0]===f?{markdown:a,fixedCount:0,details:[]}:{markdown:a.slice(0,b.index)+f+a.slice(b.index+b[0].length),fixedCount:1,details:["目录按正文 H2/H3 实际结构重建"]}}},46482:(a,b,c)=>{c.d(b,{Zk:()=>r,Tz:()=>z,X6:()=>s,fC:()=>A,l8:()=>y,JP:()=>q});var d=c(73024),e=c(76760),f=c(74329);c(25840),c(23500);var g=c(70933),h=c(70208),i=c(61373),j=c(78217);c(23760);var k=c(30355),l=c(44505),m=c(85016),n=c(22157);let o=[...k.P9.filter(a=>!n.Kd.includes(a)),...m.D$.source.split("|")];var p=c(95734);function q(a){let b=a.template.chapters.length,c=b>0?a.targetWords/b:a.targetWords,d=`${a.template.name}
|
|
25
25
|
${a.template.category||""}
|