@customize-agent/server 4.5.6 → 4.5.7
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 +30 -30
- package/.next/prerender-manifest.json +3 -3
- package/.next/server/chunks/4680.js +1 -1
- package/.next/server/chunks/9319.js +3 -3
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/pages/asset-library.html +1 -1
- package/.next/server/pages/document-roles.html +1 -1
- package/.next/server/pages/documents.html +1 -1
- package/.next/server/pages/guide.html +1 -1
- package/.next/server/pages/index.html +1 -1
- package/.next/server/pages/knowledge/file-detail.html +1 -1
- package/.next/server/pages/knowledge/files.html +1 -1
- package/.next/server/pages/knowledge/manage.html +1 -1
- package/.next/server/pages/knowledge.html +1 -1
- package/.next/server/pages/models.html +1 -1
- package/.next/server/pages/overview.html +1 -1
- package/.next/server/pages/prompt.html +1 -1
- package/.next/server/pages/settings.html +1 -1
- package/.next/server/pages/system/logs.html +1 -1
- package/.next/server/pages/template-references.html +1 -1
- package/.next/server/pages-manifest.json +26 -26
- package/.next/static/1n-xjuFIrkLPgyVXG33Tj/_buildManifest.js +1 -0
- package/.next/static/chunks/{102-881dcc464f983c89.js → 102-c30525f2bc55b982.js} +1 -1
- package/.next/static/chunks/{224-0415408fff1d1c8b.js → 224-f3bc91d393e276fe.js} +1 -1
- package/.next/static/chunks/260-244c94eacd903620.js +1 -0
- package/.next/static/chunks/{289-fc1b25371e004552.js → 289-42781fb699646699.js} +1 -1
- package/.next/static/chunks/{564-30bfcb28e1d2c309.js → 564-0737855bb98043ab.js} +1 -1
- package/.next/static/chunks/788-e98701da4d6ca319.js +1 -0
- package/.next/static/chunks/{986-771dc425e7b25964.js → 986-6746aa3d91e37eff.js} +2 -2
- package/.next/static/chunks/{994-241f87efc61005b8.js → 994-03bf46b933328a98.js} +1 -1
- package/.next/static/chunks/pages/documents-e234c57475afcd03.js +1 -0
- package/.next/static/chunks/pages/knowledge/files-3ba329d8e6335929.js +1 -0
- package/.next/static/chunks/pages/knowledge/manage-558987c599dc4cd5.js +1 -0
- package/.next/static/chunks/pages/knowledge-3a68c7c49f88ca3f.js +1 -0
- package/.next/static/chunks/pages/prompt-839287c514595765.js +1 -0
- package/.next/static/chunks/pages/system/logs-2e849bcdf371d791.js +1 -0
- package/package.json +1 -1
- package/.next/static/-vx1F8_fGfyMVxZ7EH1Xu/_buildManifest.js +0 -1
- package/.next/static/chunks/260-580088826d643423.js +0 -1
- package/.next/static/chunks/788-dca0d550ad6bd8b2.js +0 -1
- package/.next/static/chunks/pages/documents-9deacb6df546eb6d.js +0 -1
- package/.next/static/chunks/pages/knowledge/files-45b40149a6f4a9d5.js +0 -1
- package/.next/static/chunks/pages/knowledge/manage-5b1b4d3804752f8b.js +0 -1
- package/.next/static/chunks/pages/knowledge-905248d8dcb15453.js +0 -1
- package/.next/static/chunks/pages/prompt-edc2dfea09aaedc1.js +0 -1
- package/.next/static/chunks/pages/system/logs-ee67e2c93147dfc3.js +0 -1
- /package/.next/static/{-vx1F8_fGfyMVxZ7EH1Xu → 1n-xjuFIrkLPgyVXG33Tj}/_ssgManifest.js +0 -0
package/.next/BUILD_ID
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
-
|
|
1
|
+
1n-xjuFIrkLPgyVXG33Tj
|
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
"devFiles": [],
|
|
6
6
|
"ampDevFiles": [],
|
|
7
7
|
"lowPriorityFiles": [
|
|
8
|
-
"static
|
|
9
|
-
"static
|
|
8
|
+
"static/1n-xjuFIrkLPgyVXG33Tj/_buildManifest.js",
|
|
9
|
+
"static/1n-xjuFIrkLPgyVXG33Tj/_ssgManifest.js"
|
|
10
10
|
],
|
|
11
11
|
"rootMainFiles": [],
|
|
12
12
|
"rootMainFilesTree": {},
|
|
@@ -40,10 +40,10 @@
|
|
|
40
40
|
"static/chunks/883-506cbca959974997.js",
|
|
41
41
|
"static/chunks/69-34d57b77fd2eed20.js",
|
|
42
42
|
"static/chunks/700-5d29b0475311f590.js",
|
|
43
|
-
"static/chunks/224-
|
|
44
|
-
"static/chunks/102-
|
|
45
|
-
"static/chunks/289-
|
|
46
|
-
"static/chunks/994-
|
|
43
|
+
"static/chunks/224-f3bc91d393e276fe.js",
|
|
44
|
+
"static/chunks/102-c30525f2bc55b982.js",
|
|
45
|
+
"static/chunks/289-42781fb699646699.js",
|
|
46
|
+
"static/chunks/994-03bf46b933328a98.js",
|
|
47
47
|
"static/chunks/pages/asset-library-f6319fc04559e43d.js"
|
|
48
48
|
],
|
|
49
49
|
"/document-roles": [
|
|
@@ -55,11 +55,11 @@
|
|
|
55
55
|
"static/chunks/69-34d57b77fd2eed20.js",
|
|
56
56
|
"static/chunks/700-5d29b0475311f590.js",
|
|
57
57
|
"static/chunks/44-d3545eedd5c75ef1.js",
|
|
58
|
-
"static/chunks/224-
|
|
58
|
+
"static/chunks/224-f3bc91d393e276fe.js",
|
|
59
59
|
"static/chunks/787-c18af810af3433f6.js",
|
|
60
|
-
"static/chunks/102-
|
|
60
|
+
"static/chunks/102-c30525f2bc55b982.js",
|
|
61
61
|
"static/chunks/195-2c0168eacab722d2.js",
|
|
62
|
-
"static/chunks/289-
|
|
62
|
+
"static/chunks/289-42781fb699646699.js",
|
|
63
63
|
"static/chunks/455-e1b41ac4946d2b6f.js",
|
|
64
64
|
"static/chunks/pages/document-roles-4ccb2db16dc4b63c.js"
|
|
65
65
|
],
|
|
@@ -72,13 +72,13 @@
|
|
|
72
72
|
"static/chunks/69-34d57b77fd2eed20.js",
|
|
73
73
|
"static/chunks/700-5d29b0475311f590.js",
|
|
74
74
|
"static/chunks/44-d3545eedd5c75ef1.js",
|
|
75
|
-
"static/chunks/224-
|
|
75
|
+
"static/chunks/224-f3bc91d393e276fe.js",
|
|
76
76
|
"static/chunks/787-c18af810af3433f6.js",
|
|
77
77
|
"static/chunks/195-2c0168eacab722d2.js",
|
|
78
78
|
"static/chunks/455-e1b41ac4946d2b6f.js",
|
|
79
79
|
"static/chunks/506-93f730bc149d0dce.js",
|
|
80
80
|
"static/chunks/930-0436dcaa92fb41f6.js",
|
|
81
|
-
"static/chunks/pages/documents-
|
|
81
|
+
"static/chunks/pages/documents-e234c57475afcd03.js"
|
|
82
82
|
],
|
|
83
83
|
"/guide": [
|
|
84
84
|
"static/chunks/webpack-4224e970a97a4a86.js",
|
|
@@ -87,14 +87,14 @@
|
|
|
87
87
|
"static/chunks/717-743b697a417dd5ee.js",
|
|
88
88
|
"static/chunks/69-34d57b77fd2eed20.js",
|
|
89
89
|
"static/chunks/787-c18af810af3433f6.js",
|
|
90
|
-
"static/chunks/986-
|
|
90
|
+
"static/chunks/986-6746aa3d91e37eff.js",
|
|
91
91
|
"static/chunks/pages/guide-a73d8eea2cba97e1.js"
|
|
92
92
|
],
|
|
93
93
|
"/knowledge": [
|
|
94
94
|
"static/chunks/webpack-4224e970a97a4a86.js",
|
|
95
95
|
"static/chunks/framework-161be364fd69a7ce.js",
|
|
96
96
|
"static/chunks/main-91fb767ebd74c9c1.js",
|
|
97
|
-
"static/chunks/pages/knowledge-
|
|
97
|
+
"static/chunks/pages/knowledge-3a68c7c49f88ca3f.js"
|
|
98
98
|
],
|
|
99
99
|
"/knowledge/file-detail": [
|
|
100
100
|
"static/chunks/webpack-4224e970a97a4a86.js",
|
|
@@ -105,10 +105,10 @@
|
|
|
105
105
|
"static/chunks/69-34d57b77fd2eed20.js",
|
|
106
106
|
"static/chunks/700-5d29b0475311f590.js",
|
|
107
107
|
"static/chunks/44-d3545eedd5c75ef1.js",
|
|
108
|
-
"static/chunks/224-
|
|
108
|
+
"static/chunks/224-f3bc91d393e276fe.js",
|
|
109
109
|
"static/chunks/787-c18af810af3433f6.js",
|
|
110
|
-
"static/chunks/102-
|
|
111
|
-
"static/chunks/289-
|
|
110
|
+
"static/chunks/102-c30525f2bc55b982.js",
|
|
111
|
+
"static/chunks/289-42781fb699646699.js",
|
|
112
112
|
"static/chunks/506-93f730bc149d0dce.js",
|
|
113
113
|
"static/chunks/850-0f48354694fc6b3e.js",
|
|
114
114
|
"static/css/ad5a592c79d1448b.css",
|
|
@@ -123,11 +123,11 @@
|
|
|
123
123
|
"static/chunks/69-34d57b77fd2eed20.js",
|
|
124
124
|
"static/chunks/700-5d29b0475311f590.js",
|
|
125
125
|
"static/chunks/44-d3545eedd5c75ef1.js",
|
|
126
|
-
"static/chunks/224-
|
|
127
|
-
"static/chunks/102-
|
|
128
|
-
"static/chunks/289-
|
|
126
|
+
"static/chunks/224-f3bc91d393e276fe.js",
|
|
127
|
+
"static/chunks/102-c30525f2bc55b982.js",
|
|
128
|
+
"static/chunks/289-42781fb699646699.js",
|
|
129
129
|
"static/css/ad5a592c79d1448b.css",
|
|
130
|
-
"static/chunks/pages/knowledge/files-
|
|
130
|
+
"static/chunks/pages/knowledge/files-3ba329d8e6335929.js"
|
|
131
131
|
],
|
|
132
132
|
"/knowledge/manage": [
|
|
133
133
|
"static/chunks/webpack-4224e970a97a4a86.js",
|
|
@@ -138,8 +138,8 @@
|
|
|
138
138
|
"static/chunks/69-34d57b77fd2eed20.js",
|
|
139
139
|
"static/chunks/787-c18af810af3433f6.js",
|
|
140
140
|
"static/chunks/506-93f730bc149d0dce.js",
|
|
141
|
-
"static/chunks/788-
|
|
142
|
-
"static/chunks/pages/knowledge/manage-
|
|
141
|
+
"static/chunks/788-e98701da4d6ca319.js",
|
|
142
|
+
"static/chunks/pages/knowledge/manage-558987c599dc4cd5.js"
|
|
143
143
|
],
|
|
144
144
|
"/models": [
|
|
145
145
|
"static/chunks/webpack-4224e970a97a4a86.js",
|
|
@@ -170,8 +170,8 @@
|
|
|
170
170
|
"static/chunks/700-5d29b0475311f590.js",
|
|
171
171
|
"static/chunks/44-d3545eedd5c75ef1.js",
|
|
172
172
|
"static/chunks/195-2c0168eacab722d2.js",
|
|
173
|
-
"static/chunks/260-
|
|
174
|
-
"static/chunks/pages/prompt-
|
|
173
|
+
"static/chunks/260-244c94eacd903620.js",
|
|
174
|
+
"static/chunks/pages/prompt-839287c514595765.js"
|
|
175
175
|
],
|
|
176
176
|
"/settings": [
|
|
177
177
|
"static/chunks/webpack-4224e970a97a4a86.js",
|
|
@@ -188,11 +188,11 @@
|
|
|
188
188
|
"static/chunks/69-34d57b77fd2eed20.js",
|
|
189
189
|
"static/chunks/700-5d29b0475311f590.js",
|
|
190
190
|
"static/chunks/44-d3545eedd5c75ef1.js",
|
|
191
|
-
"static/chunks/224-
|
|
192
|
-
"static/chunks/102-
|
|
191
|
+
"static/chunks/224-f3bc91d393e276fe.js",
|
|
192
|
+
"static/chunks/102-c30525f2bc55b982.js",
|
|
193
193
|
"static/chunks/195-2c0168eacab722d2.js",
|
|
194
|
-
"static/chunks/289-
|
|
195
|
-
"static/chunks/pages/system/logs-
|
|
194
|
+
"static/chunks/289-42781fb699646699.js",
|
|
195
|
+
"static/chunks/pages/system/logs-2e849bcdf371d791.js"
|
|
196
196
|
],
|
|
197
197
|
"/template-references": [
|
|
198
198
|
"static/chunks/webpack-4224e970a97a4a86.js",
|
|
@@ -202,9 +202,9 @@
|
|
|
202
202
|
"static/chunks/69-34d57b77fd2eed20.js",
|
|
203
203
|
"static/chunks/700-5d29b0475311f590.js",
|
|
204
204
|
"static/chunks/787-c18af810af3433f6.js",
|
|
205
|
-
"static/chunks/102-
|
|
205
|
+
"static/chunks/102-c30525f2bc55b982.js",
|
|
206
206
|
"static/chunks/195-2c0168eacab722d2.js",
|
|
207
|
-
"static/chunks/564-
|
|
207
|
+
"static/chunks/564-0737855bb98043ab.js",
|
|
208
208
|
"static/chunks/pages/template-references-e0ab1466f28cc4fc.js"
|
|
209
209
|
]
|
|
210
210
|
},
|
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
"routes": {},
|
|
4
4
|
"dynamicRoutes": {},
|
|
5
5
|
"preview": {
|
|
6
|
-
"previewModeId": "
|
|
7
|
-
"previewModeSigningKey": "
|
|
8
|
-
"previewModeEncryptionKey": "
|
|
6
|
+
"previewModeId": "06ae791e612d46f113a1954e00763d0f",
|
|
7
|
+
"previewModeSigningKey": "1fd0020a4c07d01f82ac0be69805236cbb5f8a63126456b7faa154720fac6448",
|
|
8
|
+
"previewModeEncryptionKey": "04607c03501f1f0f26800b705fc487e52f09e7c0e6ccc5e5c5a8eb656d4ff567"
|
|
9
9
|
},
|
|
10
10
|
"notFoundRoutes": []
|
|
11
11
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";exports.id=4680,exports.ids=[4680],exports.modules={1358:(a,b,c)=>{c.d(b,{JV:()=>k,O7:()=>h,QP:()=>l,SR:()=>g,c$:()=>j,e$:()=>i,rj:()=>f});var d=c(22157);function e(a){return a.replace(/[\s,,.。::;;||()()《》<>【】"“”'‘’]/gu,"").toLowerCase()}function f(a){let b=a.replace(/[||]\s*(?:[||]\s*)+$/gu,"").replace(/(?:[。;;]|\d+\s*[..、])\s*(?:未尽事宜|其余(?:未尽)?事宜|其他(?:未尽)?事宜|注\s*[::]).*$/u,"").trim();return b=b.replace(/[、,,;;]+\s*$/u,"").trim(),/[||]/u.test(b)&&(b=b.split(/[||]/u)[0]?.trim()||b),b}function g(a){return!(/^(?:见|详见|按|执行|参见|依据).{0,16}(?:前附表|招标公告|招标文件|合同|协议书|通用条款|专用条款|图纸|清单|附件|资料)$/u.test(a)||/(?:^|[::]\s*)(?:见|详见|按|执行|参见|依据)[^。;;]{0,18}(?:前附表|招标公告|招标文件|合同|协议书|通用条款|专用条款|图纸|清单|附件|资料|补疑|答疑)[^。;;]{0,6}$/u.test(a)||/^见.{0,24}(?:招标范围|招标补疑|补疑|前附表|答疑)/u.test(a)||/^(?:合同协议书|通用条款|专用条款|招标文件|招标公告|投标人须知前附表|附件|资料)$/u.test(a.replace(/[()()\d一二三四五六七八九十、..\s]/gu,""))||/^(?:工程名称|项目名称|建设地点|建设规模|计划工期|质量标准|招标范围|合同估算价|工程概况|项目概况|项目内容)$/u.test(a)||/^#+\s*/u.test(a)||/^[一二三四五六七八九十]+[、..]\s*\S{2,}[::]/u.test(a)||/^[((]\s*\d+[))]/u.test(a)&&/具备|证书|考核|资格|人员/u.test(a))&&(!(a.length<4)||!!/\d/u.test(a))}function h(a){let b=String(a.value||"").trim(),c=`${a.label}${b}`;return!(!/项目|工程|编号|地点|规模|范围|工期|质量|安全|资源|材料|设备|验收|\d/u.test(c)||!g(b)||/^(?:技术参数|精确参数)$/u.test(a.label))}function i(a,b){let c=new Set,g=[];for(let h of[...b.project,...b.schedule,...b.quality,...b.safety,...b.resources,...b.preciseFacts,...b.bills,...b.drawings,...b.rules,...b.specifications]){let b=f((0,d.lG)(h.value).replace(/\s+/gu," ").trim()),i=h.fieldName||h.key||h.fieldId||"资料事实",j=`${i}:${b}`;!b||c.has(j)||(c.add(j),g.push({label:i,value:b,sourceFile:h.sourceFile,status:!function(a,b){let c=e(a),d=e(b);if(!d||d.length<2||c.includes(d))return!0;{let a=b.split(/[;;。\n]|、|,|,/u).map(a=>e(a.replace(/^\s*\d+\s*[、..]\s*/u,""))).filter(a=>a.length>=4);if(a.length>=2&&a.some(a=>c.includes(a)))return!0}{let a=b.replace(/[、,,;;||\s]+/gu,"、").split("、").map(a=>e(a.replace(/(?:工程|项目|改造|维修|安装|施工|内容|资料|要求|标准)+$/u,""))).filter(a=>a.length>=2);if(a.length>=1&&(a.length>=2||(a[0]?.length??0)>=3)&&a.every(a=>c.includes(a)))return!0}return(b.match(/\d+(?:\.\d+)?\s*(?:日历天|天|个月|月|年|万元|元|平方米|㎡|m²|立方米|m³|米|m|mm|cm|台|套|人|项|%|MPa|kPa|个|栋|层|标段|批|处|座|组|道|根|樘|扇)?/giu)||[]).some(a=>e(a).length>=2&&c.includes(e(a)))}(a,b)?"unplaced":"used",confidence:h.confidence}))}return g}function j(a,b={}){let c=a.filter(a=>"unplaced"===a.status&&h(a)),d=b.maxIssues&&b.maxIssues>0?b.maxIssues:c.length;return c.slice(0,d).map(a=>({level:"warning",message:`已确认知识库事实未落位:${a.label}=${a.value}`,suggestion:`请将该事实落位到对应章节,并保持来源 ${a.sourceFile||"结构化事实主表"} 的原始口径。${c.length>d?`(共${c.length}个未落位事实,此处显示前${d}个)`:""}`}))}function k(a,b){let c=b.tables||[],d=[],f=e(a);for(let a of c){let b=a.headers.map(a=>a.replace(/\s+/gu,"").toLowerCase()),c=b.findIndex(a=>/项目名称|名称|清单项|分部分项|项目特征|工程内容|材料名称|设备名称/u.test(a)),g=b.findIndex(a=>/编码|编号|序号|项目编码/u.test(a)),h=b.findIndex(a=>/数量|工程量/u.test(a)),i=b.findIndex(a=>/单位/u.test(a));for(let b of a.rows){let j=c>=0&&b[c]||"",k=g>=0&&b[g]||"",l=h>=0&&b[h]||"",m=i>=0&&b[i]||"";if(!j&&!k)continue;let n=e(j),o=e(k),p=n.length>=3&&f.includes(n.slice(0,12))||o.length>=3&&f.includes(o.slice(0,8));d.push({itemCode:k.slice(0,50),itemName:j.slice(0,200),quantity:l.slice(0,50),unit:m.slice(0,20),sourceFile:a.sourceFile||"",placed:p})}}return d.sort((a,b)=>a.placed===b.placed?0:a.placed?1:-1)}function l(a,b={}){let c=a.filter(a=>!a.placed);if(0===c.length)return[];let d=a.length,e=(d-c.length)/d,f=[];return e<.3?f.push({level:"warning",message:`BOQ 清单行级落位严重不足:${d-c.length}/${d} 行(${Math.round(100*e)}%)`,suggestion:`清单明细数量较大,建议优先补充主要分部分项、关键规格和大额工程量。未落位清单项示例:${c.slice(0,5).map(a=>`${a.itemName} ${a.quantity}${a.unit}`).join(";")}`}):e<.6&&f.push({level:"warning",message:`BOQ 清单行级落位不足:${d-c.length}/${d} 行(${Math.round(100*e)}%)`,suggestion:`建议补充落位:${c.slice(0,5).map(a=>a.itemName).join("、")}`}),f}},11248:(a,b,c)=>{c.d(b,{K3:()=>f,zn:()=>g});let d=/[A-Za-z0-9%+-.,]/gu;function e(a){let b=a.charCodeAt(0);return b>=65281&&b<=65374?String.fromCharCode(b-65248):a}function f(a){return a.replace(d,e).replace(/\s+/gu,"").replace(/[×X**]/gu,"x").replace(/[%]/gu,"%").replace(/‰/gu,"permille").replace(/平方米|平方|平米|m²|㎡/giu,"m2").replace(/公顷|hm²/giu,"hm2").replace(/立方米|立方|m³/giu,"m3").replace(/升/gu,"l").replace(/毫升/gu,"ml").replace(/千米|公里/gu,"km").replace(/毫米/gu,"mm").replace(/厘米/gu,"cm").replace(/米/gu,"m").replace(/千克|公斤/gu,"kg").replace(/克/gu,"g").replace(/吨/gu,"t").replace(/人民币万元|万元人民币/gu,"万元").replace(/人民币元|元人民币|¥/gu,"元").replace(/日历天|自然日/gu,"天").replace(/工作日/gu,"工作天").replace(/个月/gu,"月").replace(/小时/gu,"h").replace(/分钟/gu,"min").replace(/兆帕/gu,"mpa").replace(/千帕/gu,"kpa").replace(/千牛/gu,"kn").replace(/牛/gu,"n").replace(/千瓦/gu,"kw").replace(/兆瓦/gu,"mw").replace(/瓦/gu,"w").replace(/千伏/gu,"kv").replace(/伏/gu,"v").replace(/毫安/gu,"ma").replace(/安培|安/gu,"a").replace(/赫兹/gu,"hz").replace(/摄氏度/gu,"℃").replace(/百分之\s*(\d+(?:\.\d+)?)/gu,"$1%").replace(/千分之\s*(\d+(?:\.\d+)?)/gu,"$1permille").replace(/直径\s*(\d+(?:\.\d+)?)/gu,"φ$1").replace(/[Φφ]\s*(\d+(?:\.\d+)?)(?:mm)?/giu,"φ$1").replace(/DN\s*(\d+)/giu,"dn$1").replace(/D\s*(\d+)(?=\b|[^a-z0-9])/giu,"d$1").replace(/\b(KN|MPA|KPA|KW|MW|KV|HZ|DN)\b/giu,a=>a.toLowerCase()).replace(/[,,、。;;::||()()【】\]《》<>"“”'‘’[]/gu,"").toLowerCase()}function g(a){let b=f(a),c=new Set;for(let a of b.matchAll(/\d+(?:\.\d+)?(?:m2|hm2|亩|m3|l|ml|mm|cm|km|m|kg|g|t|万元|亿元|元|天|工作天|月|年|h|min|%|permille|mpa|kpa|pa|kn|n|kn\/m2|kn\/m|kw|mw|w|kv|v|ma|a|hz|℃|台|套|件|个|根|只|组|项|处|座|栋|层|间|批|次|人|工日|人日)?|dn\d+|φ\d+(?:\.\d+)?|d\d+|c\d{2,}|hrb\d+|q\d{3}[a-z]?|m\d+|\d+(?:\.\d+)?x\d+(?:\.\d+)?(?:x\d+(?:\.\d+)?)?|[+-]?\d+\.\d{3}|\d+[:/]\d+/giu))c.add(a[0]);return[...c]}},23760:(a,b,c)=>{c.d(b,{AC:()=>n,Ai:()=>q,BV:()=>t,Ff:()=>l,Fv:()=>B,K1:()=>z,KI:()=>W,M$:()=>al,N1:()=>ad,NS:()=>C,S2:()=>ae,ST:()=>Y,Ty:()=>u,bM:()=>ag,f8:()=>x,gN:()=>v,hr:()=>V,i0:()=>$,iC:()=>s,ji:()=>_,k0:()=>A,kQ:()=>ak,mR:()=>ai,qK:()=>H,qm:()=>Q,t4:()=>aj,vY:()=>Z,xX:()=>X,yd:()=>af,yw:()=>G});var d=c(8753),e=c(74329),f=c(78217),g=c(11248),h=c(70208),i=c(91977),j=c(23500),k=c(22157);function l(a){let b={blocking:0,important:0,minor:0};for(let c of a)b[function(a){let b="string"==typeof a?a:a.message;if("error"===("string"==typeof a?void 0:a.level))return"blocking";for(let a of e.gr)if(a.pattern.test(b))return a.severity;return"minor"}(c)]+=1;return b}function m(a,b){let c=a.replace(/[\][()`*_>#|{},。、“”‘’:;!?,.!?:;-]+/gu," ").replace(e.ug," ").trim();if(c.length<120)return;let d=c.match(/[A-Za-z][A-Za-z-]{2,}|[\p{Script=Han}]{2,}/gu)||[];if(d.length<30)return;let f=1,g=new Map;for(let a=0;a<d.length;a+=1){let c=d[a].toLowerCase();if(g.set(c,(g.get(c)||0)+1),a>0&&c===d[a-1].toLowerCase()?f+=1:f=1,f>=12)return{level:"error",message:`${b} 存在重复 token 退化输出`,suggestion:"请重新生成该小节,禁止保留连续重复的英文单词或无意义片段。"}}let h=[...g.entries()].sort((a,b)=>b[1]-a[1])[0];if(h&&h[1]>=25&&h[1]/d.length>=.42)return{level:"error",message:`${b} 存在重复 token 退化输出`,suggestion:`检测到“${h[0]}”异常高频重复,请重新生成该小节。`}}function n(a,b=[]){let c=[],d=m(a,"全文");for(let a of(d&&c.push(d),b)){let b=m(a.content,`章节“${a.title}”`);for(let d of(b&&c.push(b),a.sections||[])){let b=d.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&"),e=a.content.match(RegExp(`^#{3,4}\\s+(?:\\d+(?:\\.\\d+)*\\s+)?${b}\\s*\\n([\\s\\S]*?)(?=^#{3,4}\\s+|^##\\s+|$)`,"mu"));if(!e)continue;let f=m(e[1],`小节“${d}”`);f&&c.push(f)}}return c}function o(a){return a.severity&&a.repairability?a:/小节只有标题|空小节|小节内容补写未完成/u.test(a.message)?{...a,severity:"blocker",repairability:"local_deterministic",category:"structure",owner:"system"}:/不得出现|提示词要求|疑似提示词指令标题|项目污染|生成未完成/u.test(a.message)?{...a,severity:"blocker",repairability:"llm_repairable",category:"structure",owner:"system"}:/事实一致性冲突|projectFactOnly|核心事实/u.test(a.message)?{...a,severity:"error"===a.level?"blocker":"warning",repairability:"manual_review",category:"fact_consistency",owner:"user"}:/证据使用覆盖率偏低|BOQ|落位|高分模块|专业链|闭环/u.test(a.message)?{...a,severity:"warning",repairability:"not_repair_needed",category:"evidence_coverage",owner:"system"}:"error"===a.level?{...a,severity:"blocker",repairability:"llm_repairable",category:"structure",owner:"system"}:"warning"===a.level?{...a,severity:"warning",repairability:"not_repair_needed",category:"style",owner:"system"}:{...a,severity:"suggestion",repairability:"not_repair_needed",category:"style",owner:"system"}}function p(a){let b=o(a);return"blocker"===b.severity&&(!!("error"===b.level&&"blocker"===b.severity&&/placeholder|source|style|format|structure/u.test(String(b.category||""))||/提示词要求|疑似提示词指令标题|适用性自相矛盾|不得出现/u.test(a.message))||!/目录与正文/u.test(a.message)&&(/配置要求缺少必要内容/u.test(a.message)?"error"===a.level:!!/小节内容补写未完成|空小节|小节只有标题|生成未完成/u.test(a.message)||!/生成后事实反查失败/u.test(a.message)&&(/工序规格冲突/u.test(a.message)?"error"===a.level:!!/项目特点、重点、难点分析 正文不足|项目主要施工内容 正文不足/u.test(a.message)||!(/规划小节正文过短/u.test(a.message)||/事实一致性冲突:项目名称/u.test(a.message))&&(/跨章一致性|专业评分不足|专业缺口|泛化套话|缺少关键线路|缺少材料验收|缺少风险识别|缺少进场/u.test(a.message)?"error"===a.level&&!/证据使用覆盖率偏低|章节逻辑依赖不足|文档交付评分报告/u.test(a.message):!(!e.hc.test(a.message)||/章节审查|最终质量审查|正文篇幅明显低于目标|正文存在空泛占位表达|结构化事实读取不足|正文可能未显式覆盖|仅包含文件类型和占位符|不在本次招标范围内/u.test(a.message))))))}function q(a,b,c){let d=c.some(a=>(a.content||"").split(e.A5).filter(a=>!/^#{1,6}\s+/u.test(a.trim())).filter(a=>!/^\s*\|/u.test(a)).filter(a=>!/^\s*:?-{3,}:?/u.test(a)).join("\n").replace(/[|*_`<>#\s]/gu,"").length>=30),f=a.map(o).filter(a=>"error"===a.level&&p(a)),g=/缺少规划小节|小节生成未达标|小节内容补写未完成|空小节|小节只有标题|生成未完成|正文不足|主要施工内容小节缺失|部分章节生成失败|Writer 未完成|不得出现|疑似提示词指令标题|项目污染|跨章一致性/u,h=d?f.filter(a=>g.test(a.message)):f,i=[{key:"no_errors",label:"无阻断级校验错误",passed:0===h.length},{key:"basic_facts",label:"基础事实齐全",passed:b.project.length>0},{key:"source_traceability",label:"事实具备来源追踪",passed:[...b.project,...b.schedule,...b.quality,...b.safety].every(a=>!!a.sourceFile)},{key:"structured_precision",label:"结构化精确参数已使用",passed:b.preciseFacts.length<e.mu||a.every(a=>"error"!==a.level||!e.Ab.test(a.message))},{key:"chapter_evidence",label:"章节均具备证据",passed:c.every(a=>a.evidence.length>0)},{key:"no_missing_content",label:"无资料未提供章节",passed:c.every(a=>!a.content.includes("资料未提供"))},{key:"no_project_contamination",label:"无项目污染和事实一致性阻断",passed:!a.some(a=>"error"===a.level&&e.Uv.test(a.message)&&p(a))},{key:"numeric_consistency",label:"跨章数值口径与资料一致",passed:!a.some(a=>"error"===a.level&&/跨章一致性冲突|跨章一致性缺口|跨章一致性复核/u.test(a.message)&&p(a))}];return{passed:0===h.length,blockingIssues:h,checklist:i}}function r(a){let b=[],c=a.split(e.A5);for(let a=0;a<c.length;a+=1){if(!e.w7.test(c[a]))continue;let d=[];for(;a<c.length&&e.w7.test(c[a]);)d.push(c[a]),a+=1;a-=1,d.some(a=>e.N3.test(a))&&b.push(d.join("\n"))}return b}function s(a){let b=[...a.matchAll(e.DB)],c=[];for(let d=1;d<b.length;d+=1){let f=b[d].index||0,g=b[d+1]?.index??a.length,h=a.slice(f,g);e.Ks.test(h)&&c.push({level:"warning",message:`第 ${d+1} 章可能重复出现基础信息`,suggestion:"如该信息与本章主题无关,建议合并到更合适的概况类章节,避免重复铺陈。"})}if(0===b.length)return c;let d=b[0].index||0,f=b[1]?.index??a.length,g=a.slice(d,f),h=g.search(e.jM);if(h<=0)return c;let i=g.slice(0,h).replace(e.Dc,""),j=[];for(let a of e.Y8)RegExp(`${a}\\s*[::]`,"u").test(i)&&j.push(a);return j.length>=3&&c.push({level:"warning",message:`基础信息表前重复叙述字段:${j.join("、")}`,suggestion:"基础信息已表格化时,表格前只保留一句引导语,不要重复逐项叙述名称、编号、范围、周期、质量等字段。"}),c}function t(a){let b=[],c=[];for(let b of e.ZH)a.includes(b)&&c.push(b);c.length>0&&b.push({level:"warning",message:`存在模板化前缀或套话:${c.join("、")}`,suggestion:"请删除“本节/本章将/以下从”等前缀,标题后直接进入对象、动作、措施、检查和闭环。"});let d=a.match(/OCR|提示词|绑定片段|后台|文件路径|识别错误|知识库证据|知识库已确认事实|通用兜底段落|兜底占位|兜底模板/giu);return d?.length&&b.push({level:"warning",message:`正文包含后台或资料处理话术:${[...new Set(d)].join("、")}`,suggestion:"建议改为正式文档语言,例如“资料文字不清”“资料口径不一致”“项目资料”,不得暴露后台处理过程。"}),b}function u(a){let b=[];for(let c of a){let a=(c.sections||[]).filter(Boolean),d=a.filter((b,c)=>a.indexOf(b)!==c);d.length>0&&b.push({level:"warning",message:`${c.title} 存在重复小节:${[...new Set(d)].join("、")}`,suggestion:"请保留用户需求、模板或显式大纲中真实需要的小节,删除重复项。"});let e=new Map;for(let b of a){let a=/劳动力|人员|工种/u.test(b)?"劳动力计划":/机械|设备|机具/u.test(b)?"机械设备计划":/材料|物资/u.test(b)?"材料物资计划":/冬季|雨季|高温|台风|大风/u.test(b)?"特殊气候措施":"";a&&e.set(a,[...e.get(a)||[],b])}for(let[a,d]of e)d.length>1&&b.push({level:"warning",message:`${c.title} 存在重复主题小节:${a}(${d.join("、")})`,suggestion:"请合并同类小节,只保留一个主表或主方案,其他位置采用引用或执行说明。"})}return b}function v(a){let b=e.HX.exec(a);if(!b)return[{level:"error",message:"缺少目录页",suggestion:"请在封面后生成“## 目录”,并按一级章父级、二级小节子级组织。"}];let c=0,d=0;for(let a of b[1].split(e.A5))e.ZT.test(a)&&e.EB.test(a)&&(c+=1,e.sr.test(a)&&(d+=1));return c>0&&0===d?[{level:"error",message:"目录二级小节未作为子级缩进",suggestion:"目录应为父子级导航:一级章单独成行,二级小节至少缩进两个空格列在所属章下方。"}]:[]}function w(a){return a.replace(/^#+\s*/u,"").replace(/^第[一二三四五六七八九十百千万\d]+[章节篇部分]\s*/u,"").replace(/^\d+(?:\.\d+)*(?:[..、]|\s)+/u,"").replace(/[()]/gu,a=>"("===a?"(":")").replace(/[\s::.。;;,,、]+$/gu,"").replace(/的(?=保障体系|管理体系|控制体系|措施|方案|计划|要求)/gu,"").replace(/[\s()()::.。;;,,、-]/gu,"").trim()}function x(a){let b=function(a){let b=e.HX.exec(a);return b?b[1].split(e.A5).map(a=>/^\s*\d+\.\d+\s+(.+)$/u.exec(a.trim())).filter(a=>!!a).map(a=>w(a[1]||"")).filter(Boolean):[]}(a),c=[...a.matchAll(/^#{2,4}\s+(\d+\.\d+\s+.+)$/gmu)].map(a=>w(a[1]||"")).filter(Boolean);if(0===b.length||0===c.length)return[];let d=new Set(c),f=new Set(b),g=b.filter(a=>!d.has(a)),h=c.filter(a=>!f.has(a)),i=[];return g.length>0&&i.push({level:"error",message:`目录与正文不一致,目录小节未在正文中找到:${[...new Set(g)].join("、")}`,suggestion:"建议以最终清洗后的正文二级标题为准重新生成目录。"}),h.length>0&&i.push({level:"error",message:`目录与正文不一致,正文小节未进入目录:${[...new Set(h)].join("、")}`,suggestion:"建议重新生成目录,确保只收录正文二级小节,不收录三级小节。"}),i}function y(a){let b=a.replace(/^#{1,6}\s+/u,"").replace(/^\s*\d+(?:\.\d+)*(?:[..、]|\s)+/u,"").replace(/^第[一二三四五六七八九十百千万\d]+[章节篇部分]\s*/u,"").trim(),c=(0,h.GQ)(b),d=/^(?:\d+(?:\.\d+)*\s*)?(?:[-—–]\s*)?(?:(?:判断|判定|识别|确认)?是否(?:涉及|涉|需要|适用).*|(?:如|若|如果)(?:涉及|不涉及|适用|不适用).*|.*(?:根据|结合).{0,12}(?:实际情况|项目情况|资料情况).{0,8}(?:判断|确定|编写|生成).*|.*(?:按需(?:生成|编写)|视情况|判断后|生成要求|编写要求|注意事项))\s*$/u;return d.test(b)||d.test(c)}function z(a){let b=[...a.matchAll(/^#{2,6}\s+(.+)$/gmu)].map(a=>(0,h.GQ)(a[1]||"")).filter(y);return b.length>0?[{level:"error",message:`正文存在疑似提示词指令标题:${[...new Set(b)].slice(0,8).join("、")}`,suggestion:"请删除或改写为正式施工组织设计小节标题,目录也不得收录该类标题。"}]:[]}function A(a){let b=[],c=a.split(e.A5).map(a=>a.trim()).filter(a=>a&&!/^#{1,6}\s+/u.test(a)&&!/^\s*\|/u.test(a)&&!/^<div\b/iu.test(a)),d=c.find(a=>w(a).length<=1);d&&b.push({level:"warning",message:`正文存在孤立字或残缺段落:${d}`,suggestion:"请删除残缺行或重新生成所在小节。"});let f=c.find(a=>/[,、;:和与在为对将]$/u.test(a)||/(通过|包括|如下|主要包括)$/u.test(a));f&&b.push({level:"warning",message:`正文存在疑似截断句:${f}`,suggestion:"请补完整该段落,避免以连接词、逗号或冒号结尾。"});let g=c.find(a=>a.length>380);g&&b.push({level:"warning",message:`正文存在过长段落:${g}`,suggestion:"请拆分为多段或表格,改善导出版式和可读性。"});let h=c.find(a=>/\S.+(?:\s|[。;;])(?:\d+[.、](?=\s|\*\*)\s*|[((]\d+[))]\s*|[-*+]\s+)\S.+(?:\s|[。;;])(?:\d+[.、](?=\s|\*\*)\s*|[((]\d+[))]\s*|[-*+]\s+)\S/u.test(a)&&!/\b\d+\.\d+\s*(?:mm|cm|m|㎡|m2|kg|t|MPa|kPa|V|KV|kV|A)\b/iu.test(a));h&&b.push({level:"error",message:`正文存在列表项粘连同一行:${h.slice(0,120)}`,suggestion:"有序列表和无序列表必须逐项独占一行,确保 Markdown/PDF/DOCX 正确排版。"});let i=a.match(/(?:PDF\s*)?第\s*\d+\s*(?:[-—至到~~]\s*\d+)?\s*页|(?:图纸|清单|资料|文件|[\u4e00-\u9fa5A-Za-z0-9()()、·-]{2,24}(?:工程)?)\s*(?:[((]?\s*|(?:共|多达|约|合计)\s*)\d+\s*页|[\u4e00-\u9fa5A-Za-z0-9、及与和]{2,24}\s*(?:共|多达|约|合计)\s*\d+\s*页|\d+\s*页\s*(?:图纸|资料|文件|装饰|土建|加固|给排水|电气|智能化|消防)|\d+\s*页/iu)?.[0];i&&b.push({level:"error",message:`正文残留资料页码元信息:${i}`,suggestion:"正式投标正文应引用招标文件、施工图设计文件、工程量清单和相关专业图纸,不写 PDF 页码或资料页数。"});let j=c.find(a=>/仅作为内部事实提取依据|正式正文不得引用文件名|后台事实|内部事实/u.test(a));return j&&b.push({level:"error",message:`正文残留内部处理说明:${j.slice(0,120)}`,suggestion:"正式投标正文不得出现内部事实抽取、后台处理或文件名引用限制说明。"}),b}function B(a){let b=[],c=a.search(/^##\s+第[一二三四五六七八九十百千万\d]+章\s+/mu),d=[...(c>=0?a.slice(c):a.replace(/^##\s+目录[\s\S]*?(?=^##\s+第[一二三四五六七八九十百千万\d]+章\s+)/mu,"")).matchAll(/^##\s+(.+)$/gmu)].map(a=>(a[1]||"").trim()).filter(a=>"目录"!==a&&!/^第[一二三四五六七八九十百千万\d]+章\s+/u.test(a)&&!/^附录/u.test(a)).map(a=>(0,h.GQ)(a));d.length>0&&b.push({level:"error",message:`正文存在非正式章二级标题:${[...new Set(d)].slice(0,8).join("、")}`,suggestion:"正文 ## 只允许用于“第X章”正式章标题;章内小节必须使用 ### X.Y。"});let e=[...a.matchAll(/^##\s+(第[一二三四五六七八九十百千万\d]+章\s+.+)$/gmu)];for(let c=0;c<e.length;c+=1){let d=e[c].index||0,f=e[c+1]?.index??a.length,g=[...a.slice(d,f).matchAll(/^###\s+\d+\.\d+\s+(.+)$/gmu)].map(a=>(0,h.GQ)(a[1]||"")),i=(0,h.GQ)((e[c][1]||"").replace(/^第[一二三四五六七八九十百千万\d]+章\s*/u,""));1===g.length&&w(g[0])===w(i)&&b.push({level:"error",message:`章节只有一个且与章名同名的小节:${e[c][1]}`,suggestion:"应拆分为多个业务小节,不能用章标题重复作为唯一二级小节。"})}return b}function C(a){let b=[];/按审批确认执行/u.test(a)&&b.push({level:"error",message:"表格存在自动兜底污染内容:按审批确认执行",suggestion:"正式投标表格不得使用通用兜底短语,应保留真实业务内容或删除该行。"});let c=[];for(let b of a.matchAll(/\|\s*信息项\s*\|\s*内容\s*\|/gu)){let d=a.slice(b.index||0),f=[];for(let a of d.split(e.A5)){if(f.length>0&&!e.w7.test(a))break;f.push(a)}c.push(f.join("\n"))}let d=c.filter(a=>/项目名称|招标人|建设单位|发包人|建设地点|招标范围|计划工期|合同估算价|质量标准/u.test(a)).length;d>1&&b.push({level:"error",message:`项目基础信息类表格重复:${d} 处`,suggestion:"项目名称、招标人、建设地点、工期、质量等基础信息只能集中输出一次。"});let f=a.match(/^\|\s*---\s*\|\s*---\s*\|\s*$/gmu)||[];for(let c of(f.length>20&&b.push({level:"error",message:`表格分隔线异常重复:${f.length} 行`,suggestion:"请修复表格规范化逻辑,禁止把数据行拆成多个碎表。"}),r(a))){let a=c.split(e.A5).filter(a=>e.w7.test(a));if(a.length<2)continue;if(!e.N3.test(a[1]||"")){b.push({level:"error",message:`表格分隔线位置不规范:${a[0]||""}`,suggestion:"Markdown 表格必须紧跟表头输出分隔线,例如 |---|---|,中间不得插入正文或其他管道行。"});continue}let d=a.map(a=>a.trim().replace(/^\|/u,"").replace(/\|$/u,"").split(/(?<!\\)\|/u).map(a=>a.trim())),f=d[0]||[],g=f.filter(a=>/^(?:列|字段|内容|备注)\d+$/u.test(a));g.length>0&&b.push({level:"error",message:`表格存在泛化表头:${g.join("、")}`,suggestion:"正式投标表格必须使用业务字段表头,不得出现“列5/字段1/内容2”等临时表头。"});let h=f.length;d.find((a,b)=>1!==b&&a.length!==h)&&b.push({level:"error",message:`表格列数不一致:${f.join("、")}`,suggestion:"请统一表头和数据行列数;不应通过自动填充兜底词修补表格。"})}return b}function D(a){return a.split(e.A5).filter(a=>!/^#{1,6}\s+/u.test(a.trim())).filter(a=>!/^\s*\|/u.test(a)).filter(a=>!/^\s*:?-{3,}:?/u.test(a)).filter(a=>!/^<\/?div\b/iu.test(a.trim())).join("\n").replace(/[|*_`<>-]/gu,"").replace(e.ug,"").length}function E(a){let b=[...a.matchAll(/^(#{3,4})\s+(.+)$/gmu)];return b.map((c,d)=>{let e=c[1].length,f=(c.index||0)+c[0].length,g=b.slice(d+1).find(a=>a[1].length<=e),h=g?.index??a.length,i=(c[2]||"").trim();return{rawTitle:i,title:w(i),level:e,body:a.slice(f,h)}}).filter(a=>a.title&&(3===a.level||4===a.level))}function F(a,b,c,d,f){let g=D(d),h=e.w7.test(d)&&d.split(e.A5).some(a=>e.N3.test(a)),i=D(d.split("\n").filter(a=>!e.w7.test(a)&&!e.N3.test(a)).join("\n").replace(/^#{1,6}\s+.+$/gmu,""));if(/\[WRITER_MISSING_SECTION\]|Writer 未完成/u.test(d))return{chapterTitle:a,sectionTitle:b,level:c,bodyLength:g,reason:"empty",planned:f,message:`${a} 小节内容补写未完成:${b}`};if(/【本小节生成未达标,需重新生成】/u.test(d))return{chapterTitle:a,sectionTitle:b,level:c,bodyLength:g,reason:"empty",planned:f,message:`${a} 小节生成未达标:${b}`};if(/项目基本信息|基本信息|工程概况|项目概况|工程概述|项目概述/u.test(b)&&(h||g>=40)||/^附录[一二三四五六七八九十A-Z\d]/u.test(b)&&h)return;let j=/清单|配置|汇总|一览|明细|计划|进度|节点|安排/u.test(b)||/表[^,。;:\s]{0,6}$/u.test(b);if(!(h&&j&&Math.max(0,d.split(e.A5).filter(a=>e.w7.test(a)&&!e.N3.test(a)).length-1)>=2)){if(h&&i<20)return{chapterTitle:a,sectionTitle:b,level:c,bodyLength:g,reason:"empty",planned:f,message:f?`${a} 只有标题或表格无正文:${b}`:`${a} 小节只有标题或表格无正文:${b}`};if(!(g>=80)||!(i>=20)){if(0===g)return{chapterTitle:a,sectionTitle:b,level:c,bodyLength:g,reason:"empty",planned:f,message:`${a} 空小节:${b}`};if(g<180)return{chapterTitle:a,sectionTitle:b,level:c,bodyLength:g,reason:"too_short",planned:f,message:`${a} ${f?"规划小节":"正文小节"}正文过短:${b}`}}}}function G(a,b){let c=[],d=new Set;for(let e of b){let b=e.content?.trim()?e.content:a;for(let a of(e.sections||[]).filter(a=>!/^(?:施工概况|施工流程|施工方法)$/u.test(w(a))&&!/^附录/u.test(a.trim()))){let f=w(a),g=function(a,b){let c=E(a).filter(a=>(function(a,b){let c=w(a),d=w(b);if(!c||!d)return!1;if(c===d||c.includes(d)||d.includes(c))return!0;let e=/项目概况|主要施工方案|新技术新材料|工程重点难点|重点难点|危大工程|保障体系|安全保障|工期|质量|安全生产|应急预案|资源|人材机|材料|机械|劳动力|进度|关键线路|交通疏导|成品保护|深化设计|验收/gu,f=new Set(c.match(e)||[]),g=new Set(d.match(e)||[]),h=[...f].filter(a=>g.has(a)).length;return h>=2||1===Math.min(f.size,g.size)&&1===h&&16>=Math.max(c.length,d.length)})(a.rawTitle,b));return c.length<=1?c[0]:c.map(a=>({item:a,gap:F("",b,a.level,a.body,!0),textLength:D(a.body)})).sort((a,b)=>{let c=a.gap&&"empty"===a.gap.reason?1:0,d=b.gap&&"empty"===b.gap.reason?1:0;return c!==d?c-d:b.textLength-a.textLength})[0]?.item}(b,a),h=`${e.title}|${f}|planned`;if(!g){c.push({chapterTitle:e.title,sectionTitle:a,level:3,bodyLength:0,reason:"missing_planned_section",planned:!0,message:`${e.title} 缺少规划小节:${a}`}),d.add(h);continue}let i=F(e.title,a,g.level,g.body,!0);i&&c.push(i),d.add(h)}for(let a of E(b)){let b=`${e.title}|${a.title}|actual`,f=`${e.title}|${a.title}|planned`;if(d.has(b)||d.has(f))continue;let g=F(e.title,a.title,a.level,a.body,!1);g&&"empty"===g.reason&&c.push(g),d.add(b)}}return c}function H(a,b){return G(a,b).filter(a=>"empty"===a.reason||"missing_planned_section"===a.reason).map(a=>({level:"error",message:a.message,suggestion:"missing_planned_section"===a.reason?"必须补充该规划小节正式正文,不得缺节导出。":"必须补充与该小节相关的材料事实和必要内容,达到正文完整度要求。"}))}function I(a){return`${a.fieldName||a.key} ${(0,k.lG)(a.value)}`.replace(/\s+/gu," ").trim()}function J(a){let b=new Set;for(let c of[/\d+\s*日历天(?!内)/gu,/(?:计划工期|合同工期|总工期|工期|施工周期)[^\n。;;]{0,12}\d+\s*天/gu,/(?:计划工期|合同工期|总工期|工期|施工周期)[^\n。;;]{0,12}\d+\s*(?:个月|月)/gu])for(let d of a.matchAll(c)){let a=d[0].match(/\d+\s*(?:日历天|天|个月|月)/u)?.[0]?.replace(/\s+/gu,"");a&&b.add(a)}return[...b]}function K(a,b,c){let d=[],e=new Set,f=RegExp(`(?:${b.source})(?:[^\\n。;;,,]{0,14}?)(\\d{2,}(?:[.,]\\d+)?\\s*万?)\\s*(${c.source})`,"giu");for(let b of a.matchAll(f)){let a=b[1].replace(/[,,]/gu,"").replace(/\s+/gu,""),c=b[2],f=`${a}|${c}`;!a||e.has(f)||(e.add(f),d.push({value:a,unit:c}))}return d}function L(a){let b=a.value.replace(/[,,]/gu,"").trim(),c=/^([\d.]+)万/u.exec(b),d=c?1e4*Number(c[1]):Number(b);return Number.isFinite(d)?/亿元/u.test(a.unit)?1e8*d:/万元/u.test(a.unit)?1e4*d:d:NaN}let M=/(?<![地上地下门卫室值班室配电室配电房泵房水泵房锅炉房公厕车库车棚岗亭传达室警卫室样板房售楼处门房])总?建筑面积|总?建设规模/u,N=/㎡|m²|m2|平方米/u,O=/合同估算价|合同估算价格|投资估算|最高投标限价|招标控制价|工程总投资|总投资|工程造价/u,P=/万元|亿元/u;function Q(a,b,c){let d=[],e=a=>c?.find(b=>b.kind===a&&b.resolution)?.resolution,f=a=>{let b=/(\d+(?:\.\d+)?)\s*(㎡|m²|m2|平方米|万元|亿元)/u.exec(a);return b?{value:b[1],unit:b[2]}:void 0},g=e("duration")??b.schedule.map(I).find(a=>/\d+\s*(?:日历天|天|个月|月)|计划工期|合同工期/u.test(a)),h=b.quality.map(I).find(a=>/质量|合格|优良/u.test(a));if(g){let b=J(g)[0],c=J(a.split("\n").filter(a=>!/^\s*\|/u.test(a.trim())).join("\n")),e=b?c.filter(a=>a!==b&&/日历天/u.test(a)):[];b&&e.length>=2&&d.push({level:"warning",message:`跨章一致性冲突:正文出现与资料工期不一致的表述 ${e.slice(0,6).join("、")}`,suggestion:`请统一使用资料中的工期口径:${g}`})}h&&!/质量标准|质量目标|合格|优良/u.test(a)&&d.push({level:"error",message:"跨章一致性缺口:正文未稳定体现资料中的质量目标",suggestion:`请在工程概况、质量保证和验收相关章节统一体现:${h}`});let i=e("area"),j=i??b.project.map(I).find(a=>/建设规模|建筑面积/u.test(a));if(j){let b=i?f(i):K(j,M,N)[0],c=K(a,M,N);if(b){let a=c.filter(a=>L(a)!==L(b));a.length>=1&&d.push({level:"error",message:`跨章一致性冲突:正文出现与资料建设规模不一致的表述 ${a.slice(0,6).map(a=>`${a.value}${a.unit}`).join("、")}`,suggestion:`请统一使用资料中的建设规模口径:${j.slice(0,80)}`})}}let k=e("cost"),l=k??b.project.map(I).find(a=>/合同估算|投资估算|最高投标限价|招标控制价|总投资|工程造价/u.test(a));if(l){let b=k?f(k):K(l,O,P)[0],c=K(a,O,P);if(b){let a=c.filter(a=>L(a)!==L(b));a.length>=1&&d.push({level:"error",message:`跨章一致性冲突:正文出现与资料估算价不一致的表述 ${a.slice(0,6).map(a=>`${a.value}${a.unit}`).join("、")}`,suggestion:`请统一使用资料中的估算价口径:${l.slice(0,80)}`})}}return d}let R=/找平层|抹灰层|防水层|保温层|结合层|垫层|面层|粘结层|隔热层|隔离层/gu,S=/铺设|施工|浇筑|粘贴|铺贴|涂抹|完成|进行|待|设置|铺装|挂网|喷涂|灌注/u;function T(a){let b=[],c=[...a.matchAll(R)],d=[],e=(a,b)=>d.some(([c,d])=>a<d&&b>c),f=(a,c,f,g,h,i)=>{let j=[...a.matchAll(f)];for(let f of"first"===g?j:[...j].reverse()){let j=c+(f.index??0),k=j+f[0].length;if(e(j,k))continue;let l="first"===g?a.slice(0,f.index??0):a.slice((f.index??0)+f[0].length);if(!S.test(l)){d.push([j,k]),b.push({layer:h,span:[j,k],raw:f[0],kind:i});return}}};for(let b=0;b<c.length;b+=1){let d=c[b],e=d[0],g=d.index??0,h=g+e.length,i=c[b+1]?.index,j=void 0===i?Math.min(a.length,h+90):i,k=a.slice(h,j),l=b>0?(c[b-1].index??0)+c[b-1][0].length:Math.max(0,g-40),m=a.slice(l,g);f(k,h,/(\d+:\d+(?:\.\d+)?)/gu,"first",e,"ratio"),f(m,l,/(\d+:\d+(?:\.\d+)?)/gu,"last",e,"ratio"),f(k,h,/(\d+(?:\.\d+)?)\s*mm/gu,"first",e,"thickness"),f(m,l,/(\d+(?:\.\d+)?)\s*mm/gu,"last",e,"thickness")}return b}function U(a){let b=[],c=new Set;for(let d of T(a)){let a="ratio"===d.kind?d.raw.match(/(\d+:\d+(?:\.\d+)?)/u)?.[1]:void 0,e="thickness"===d.kind?d.raw.match(/(\d+(?:\.\d+)?)/u)?.[1]:void 0,f=e?Number(e):void 0,g=`${d.layer}|${a||""}|${f??""}`;c.has(g)||(c.add(g),b.push({layer:d.layer,ratio:a,thickness:f}))}return b}function V(a,b){let c=[],d=U([...b.specifications,...b.quality,...b.preciseFacts,...b.bills].map(I).join("\n"));if(0===d.length)return c;let e=new Map;for(let a of d){let b=e.get(a.layer)||[];b.push(a),e.set(a.layer,b)}let f=U(a),g=new Set;for(let[a,b]of e){let d=[...new Set(b.map(a=>a.ratio).filter(Boolean))],e=[...new Set(b.map(a=>a.thickness).filter(a=>Number.isFinite(a)))];for(let b of f.filter(b=>b.layer===a)){if(1===d.length&&b.ratio&&b.ratio!==d[0]){let e=`ratio|${a}|${b.ratio}`;g.has(e)||(g.add(e),c.push({level:"error",message:`工序规格冲突:正文${a}配比 ${b.ratio} 与资料口径 ${d[0]} 不一致`,suggestion:`请将${a}配比统一为资料口径 ${d[0]},禁止改写资料规格。`}))}if(1===e.length&&Number.isFinite(b.thickness)&&Math.abs(b.thickness-e[0])>=1){let d=`thickness|${a}|${b.thickness}`;g.has(d)||(g.add(d),c.push({level:"error",message:`工序规格冲突:正文${a}厚度 ${b.thickness}mm 与资料口径 ${e[0]}mm 不一致`,suggestion:`请将${a}厚度统一为资料口径 ${e[0]}mm。`}))}}}return c}function W(a,b,c){let d=function(a,b){let c=[...a.specifications,...a.quality,...a.preciseFacts,...a.bills].map(I).join("\n"),d=new Map;for(let a of U(c)){let b=d.get(a.layer)||{ratios:[],thicknesses:[]};a.ratio&&!b.ratios.includes(a.ratio)&&b.ratios.push(a.ratio),Number.isFinite(a.thickness)&&!b.thicknesses.includes(a.thickness)&&b.thicknesses.push(a.thickness),d.set(a.layer,b)}let e=new Map;for(let[a,b]of d)(1===b.ratios.length||1===b.thicknesses.length)&&e.set(a,{ratio:1===b.ratios.length?b.ratios[0]:void 0,thickness:1===b.thicknesses.length?b.thicknesses[0]:void 0});let f=a=>b?.find(b=>b.kind===a&&b.resolution)?.resolution,g=a=>{let b=/(\d+(?:\.\d+)?)\s*(㎡|m²|m2|平方米|万元|亿元)/u.exec(a);return b?{value:b[1],unit:b[2]}:void 0},h=f("area"),i=h??a.project.map(I).find(a=>/建设规模|建筑面积/u.test(a)),j=f("cost"),k=j??a.project.map(I).find(a=>/合同估算|投资估算|最高投标限价|招标控制价|总投资|工程造价/u.test(a));return{specTargets:e,scaleTarget:i?h?g(h):K(i,M,N)[0]:void 0,costTarget:k?j?g(j):K(k,O,P)[0]:void 0}}(b,c);if(0===d.specTargets.size&&!d.scaleTarget&&!d.costTarget)return{fixedCount:0,details:[]};let e=0,f=[];for(let b of a){let a=function(a,b){let c=[];for(let d of T(a)){let a=b.specTargets.get(d.layer);if(a){if("ratio"===d.kind&&a.ratio){let b=d.raw.match(/(\d+:\d+(?:\.\d+)?)/u)?.[1];b&&b!==a.ratio&&c.push({start:d.span[0],end:d.span[1],replacement:d.raw.replace(/(\d+:\d+(?:\.\d+)?)/u,a.ratio),detail:`${d.layer}配比 ${b}→${a.ratio}`})}if("thickness"===d.kind&&Number.isFinite(a.thickness)){let b=Number(d.raw.match(/(\d+(?:\.\d+)?)/u)?.[1]);Number.isFinite(b)&&Math.abs(b-a.thickness)>=1&&c.push({start:d.span[0],end:d.span[1],replacement:d.raw.replace(/(\d+(?:\.\d+)?)/u,String(a.thickness)),detail:`${d.layer}厚度 ${b}mm→${a.thickness}mm`})}}}let d=(b,d,e,f)=>{if(!b)return;let g=RegExp(`(?:${d.source})(?:[^\\n。;;,,]{0,14}?)(\\d{2,}(?:[.,]\\d+)?\\s*万?)\\s*(${e.source})`,"giu");for(let d of a.matchAll(g)){let a={value:d[1].replace(/[,,]/gu,"").replace(/\s+/gu,""),unit:d[2]};if(L(a)===L(b))continue;let e=(d.index??0)+d[0].indexOf(d[1]),g=e+d[1].length;c.some(a=>a.start<g&&a.end>e)||c.push({start:e,end:g,replacement:b.value,detail:`${f} ${a.value}${a.unit}→${b.value}${a.unit}`})}};if(d(b.scaleTarget,M,N,"建设规模"),d(b.costTarget,O,P,"估算价"),0===c.length)return{content:a,fixedCount:0,details:[]};c.sort((a,b)=>b.start-a.start);let e=a;for(let a of c)e=e.slice(0,a.start)+a.replacement+e.slice(a.end);return{content:e,fixedCount:c.length,details:c.map(a=>a.detail)}}(b.content,d);a.fixedCount>0&&(b.content=a.content,e+=a.fixedCount,f.push(...a.details))}return{fixedCount:e,details:f}}function X(a){let b=[],c=/(?:三检制|三级教育|三级管理|5S|24\s*小时|每日|每周|每月|一次|两次)/gu;for(let d of a){let a=[...new Set(d.content.match(c)||[])];a.length>=3&&!/责任人|检查记录|整改|复查|验收|台账|交底|巡查|闭环/u.test(d.content)&&b.push({level:"warning",message:`${d.title} 管理措施数字较多但缺少执行闭环:${a.slice(0,8).join("、")}`,suggestion:"这些管理数字可以保留,但需要补充责任主体、检查频次、记录台账、整改复查和闭环要求。"})}return b}function Y(a){let b=/(?:加强组织领导|严格执行规范|落实责任制度|确保工程质量|强化过程管理|提高思想认识|完善管理体系|形成闭环管理)/gu,c=[];for(let d of a)(d.content.match(b)||[]).length>=6&&!/材料|工序|验收|复验|节点|风险|交底|隐蔽|检验批|进场/u.test(d.content)&&c.push({level:"error",message:`${d.title} 存在较多未绑定项目事实和工序控制点的泛化套话`,suggestion:"请替换为结合资料事实、施工对象、工序控制、验收资料和整改闭环的专业内容。"});return c}function Z(a,b){let c=[...b.project,...b.schedule,...b.quality,...b.safety,...b.resources,...b.preciseFacts,...b.bills,...b.drawings,...b.rules,...b.specifications].map(I).join("\n");if(80>(0,f.V7)(c))return[];let d=[],e=(0,g.K3)(c),h=[],i=[],j=[];for(let b of(0,g.zn)(a)){if(/^\d+\.\d+$/u.test(b))continue;let c=(0,g.K3)(b),d=a.indexOf(b);if(d<0)continue;let f=a.lastIndexOf("\n",d-1)+1,k=a.slice(f,0>a.indexOf("\n",d)?a.length:a.indexOf("\n",d));if(/^\s*\|/u.test(k.trim()))continue;let l=a.slice(Math.max(0,d-36),Math.min(a.length,d+b.length+36)),m=function(a,b){let c=`${a} ${b}`;return/三检制|三级|5S|24\s*小时|每日|每周|每月|一次|两次|责任制|制度/u.test(c)||/暂列金额|暂估价|报价|单价|合价|综合单价|税率|增值税|预留金/u.test(c)||/^\d+(?:\.\d+)?(?:月|年)$/u.test(a)&&/开工|竣工|日期|计划|年|月/u.test(b)?"soft":/总工期|计划工期|合同工期|日历天/u.test(c)||/最高投标限价|招标控制价|合同估算价|投资估算|报价|金额|万元|元/u.test(c)||/(?:建设规模|总建筑面积|总用地面积|总占地面积).{0,16}(?:m²|㎡|m2|平方米)/u.test(c)?"scope":/(?:工程量|清单|建设规模|建筑面积|长度|材料|设备|规格|型号).{0,24}(?:m²|㎡|m3|m³|米|吨|套|台|个|项|%)/u.test(c)?"spec":/GB\s*\d|JGJ\s*\d|CJJ\s*\d|ISO\s*\d|GB\/T|CECS\s*\d|DL\s*\d|YB\s*\d|SH\s*\d|SJ\/T\s*\d|CJJ\/T\s*\d|DB\s*\d/u.test(c)?"soft":/标准|规范|编号/u.test(c)?"spec":"soft"}(b,l);"scope"!==m||e.includes(c)||h.push(b),"spec"!==m||e.includes(c)||i.push(b),"soft"!==m||e.includes(c)||j.push(b)}let l=[...new Set(h)],m=[...new Set(i)],n=[...new Set(j)];return l.length>=1&&d.push({level:"error",message:`生成后事实反查失败:正文出现资料事实主表中未找到的总量口径数字 ${l.slice(0,8).join("、")}`,suggestion:"总量口径数字(工期/金额/建设规模)必须与资料一致;请删除或改写为资料确认的口径,禁止编造。"}),m.length>=2&&d.push({level:"warning",message:`生成后事实反查提示:正文出现资料事实主表中未找到的规格明细数字 ${m.slice(0,8).join("、")}`,suggestion:"建议复核这些规格是否来自管理制度、规范要求或资料事实;如无依据,改为定性管理要求。"}),n.length>=6&&d.push({level:"warning",message:`生成后事实反查提示:正文出现较多未在资料事实主表中反查到的管理数字 ${n.slice(0,10).join("、")}`,suggestion:"请确认这些管理数字属于通用制度、规范要求或项目资料事实;如无依据,建议改为定性管理要求。"}),/质量目标|质量标准/u.test(a)&&b.quality.length>0&&!b.quality.some(b=>a.includes((0,k.lG)(b.value).slice(0,18)))&&d.push({level:"warning",message:"生成后事实反查提示:正文质量目标表述未明显匹配质量事实主表",suggestion:"请使用资料中的质量目标原文或等价表述。"}),d}function $(a){let b=[];for(let d of a){var c;let a=d.content;if(800>(0,f.V7)(a))continue;let e=/资料|招标|清单|图纸|标准|范围|工期|质量|验收/u.test(a)?2:+!!/项目|工程|要求/u.test(a),g=/首先|其次|同时|最后|一是|二是|流程|步骤|阶段|组织顺序/u.test(a)?2:+!!/并且|同时|然后|因此/u.test(a),h=/控制点|关键线路|复验|隐蔽验收|风险|交底|检验批|整改|闭环/u.test(a)?2:+!!/措施|要求|管理|检查/u.test(a),i=/责任人|检查|记录|验收|整改|复查|进场|调配|应急/u.test(a)?2:+!!/落实|执行|安排|组织/u.test(a),j=/本项目|本工程|招标范围|工程量|建设地点|计划工期|质量目标/u.test(a)?2:+!!/项目|工程/u.test(a),k=/工期|质量|安全|资源|验收/u.test(a)?2:+!!/目标|要求/u.test(a),l={factuality:e,structure:g,depth:h,executable:i,specificity:j,consistency:k},m=e+g+h+i+j+k,n=(c=d.title,/概况|工程|项目/u.test(c)?{min:5,focus:"事实依据、项目特异性"}:/部署|总体|组织/u.test(c)?{min:6,focus:"组织结构、可执行闭环、跨章一致性"}:/进度|工期/u.test(c)?{min:6,focus:"进度结构、工期一致性、纠偏机制"}:/质量/u.test(c)?{min:6,focus:"质量深度、验收复验、资料闭环"}:/安全|文明|危大|风险/u.test(c)?{min:6,focus:"风险覆盖、应急响应、检查整改"}:/资源|材料|设备|劳动力/u.test(c)?{min:5,focus:"资源依据、进场调配、进度支撑"}:{min:4,focus:"事实依据、专业深度、可执行性"});if(m<n.min){let a=Object.entries(l).filter(([,a])=>a<1).map(([a])=>a).join("、")||n.focus;b.push({level:"error",message:`${d.title} 专业评分不足:${m}/12,薄弱维度:${a}`,suggestion:`请按章节任务卡补齐${n.focus},并写出资料依据、实施流程、专业控制点和检查整改闭环。`})}}return b}function _(a){let b=[{re:/进度|工期/u,need:/关键线路|穿插|纠偏|资源保障|节点|动态调整/u,message:"进度工期章节缺少关键线路、穿插施工或纠偏保障内容"},{re:/质量/u,need:/材料.*验收|复验|隐蔽验收|整改.*复验|质量.*资料|检验批/u,message:"质量章节缺少材料验收复验、隐蔽验收或整改复验闭环"},{re:/安全|文明|危大|风险/u,need:/风险|临电|消防|应急|检查.*整改|文明施工|人员|设备/u,message:"安全文明章节缺少风险识别、现场控制或应急检查闭环"},{re:/资源|材料|设备|劳动力/u,need:/进场|验收|调配|保管|供应|投入计划/u,message:"资源章节缺少进场、验收、调配或保管计划"},{re:/施工|工艺|技术|方案/u,need:/准备|流程|工艺|控制点|验收|交底/u,message:"施工技术章节缺少施工准备、工艺流程、控制点或验收要求"}],c=[];for(let d of a){let a=d.content;for(let e of b)e.re.test(d.title)&&(0,f.V7)(a)>=600&&!e.need.test(a)&&c.push({level:"error",message:`${d.title}:${e.message}`,suggestion:"请按专业任务卡定向补写该章节,补齐可实施的控制措施、资料依据和闭环要求。"})}return c}function aa(a,b){return!!(/万元|元|报价|单价|合价|综合单价|预留金|税率|增值税|利润|结算/u.test(`${a} ${b}`)||/OCR|识别错误|乱码|无法确认|疑似|不确定|语义断裂|页码|目录/u.test(b)||/^\d+$/.test(a)&&10>Number(a)||/之日起.{0,8}天内|天内.{0,10}(?:发出|提交|通知|回复|答复|完成|开工|竣工|报送|支付|更换)|天以上|天及以上|‰|暂扣|履约保证金|通过后.{0,6}天|因发包人原因|因承包人原因|未能按时|逾期|违约金/u.test(b))}function ab(a,b){let c=0;for(let d of a)b.includes(d.replace(e.ug,""))&&(c+=1);return c}let ac=/日历天|个月|㎡|m²|m3|m³|MPa|kPa|kN|GB\/T|GB|JGJ|ISO|DN|φ|Φ|米\/秒|天$/u;function ad(a,b,c=[]){let d=[],f=a.replace(e.ug,""),g=function(a){let b=new Set;for(let c of a)for(let a of c.evidence||[]){if(/bill_of_quantities|boq/u.test(`${a.roleId||""}`))continue;let c="string"==typeof a.content?a.content:"";for(let a of c.matchAll(e.No)){let d=a[0].trim();if(!d||/^\d{4}\s*年$/u.test(d)||/^\d{1,2}\s*月$/u.test(d))continue;let e=a.index||0,f=c.slice(Math.max(0,e-40),e+d.length+40);aa(d,f)||b.add(d)}}return[...b]}(c),h=g.length>=e.mu?g:function(a){let b=new Set;for(let c of a.preciseFacts){if("bill_of_quantities"===c.roleId)continue;let a=`${c.processingType||""} ${c.roleId} ${c.sourceFile}`;if(!e.FM.test(a)&&"precise_fact"!==c.roleId)continue;let d=`${c.key} ${c.fieldName||""} ${c.value}`;for(let a of d.matchAll(e.No)){let c=a[0].trim();aa(c,d)||b.add(c)}}return[...b]}(b),i=ab(h,f);h.length>=e.mu&&i/h.length<e.tg&&d.push({level:"warning",message:`可靠精确参数使用不足:${i}/${h.length}`,suggestion:"请将资料中可靠的规格、参数、数量、时间、比例和标准编号写入对应章节;商务金额、单价、税率、预留金不得写入正文。"});let j=function(a){let b=[...a].sort((a,b)=>a.localeCompare(b,"zh")),c=b.filter(a=>ac.test(a)),d=b.filter(a=>!ac.test(a));return[...c.slice(0,8),...d.slice(0,2)].slice(0,10)}(h);if(j.length>=6){let a=ab(j,f);if(a/j.length<.5){let b=j.filter(a=>!f.includes(a.replace(e.ug,""))).slice(0,3);d.push({level:"error",message:`可靠精确参数使用不足:关键参数抽查 ${a}/${j.length}${b.length?`(缺失如 ${b.join("、")})`:""}`,suggestion:"请将资料中的关键工程参数(工期、面积、强度等级、材料规格、规范编号等)写入正文对应章节,不得因参数总量达标而遗漏核心参数。"})}}return b.bills.length>0&&!e.pP.test(a)&&d.push({level:"error",message:"正文未体现结构化数据资料",suggestion:"请从表格、列表或明细中提取对象、单位、数量、规格和关键参数补入对应章节。"}),b.drawings.length>0&&!e._U.test(a)&&d.push({level:"error",message:"正文未体现设计/方案/说明类资料",suggestion:"请从设计、方案或说明资料中提取对象、流程、节点、做法、配置、规则和标准要求。"}),d}function ae(a,b,c){let d=[],e=c.tables||[];if(0===e.length)return d;let f=a.replace(/\s+/gu,"").toLowerCase(),g=0,h=0,i=[];for(let a of e){let b=a.headers.map(a=>a.replace(/\s+/gu,"").toLowerCase()),c=b.findIndex(a=>/项目名称|^名称$|清单项|分部分项|项目特征/u.test(a)),d=b.findIndex(a=>/项目编码|编码|编号/u.test(a)),e=b.findIndex(a=>/^工程量$|^数量$/u.test(a));for(let b of a.rows){g+=1;let a=c>=0?(b[c]||"").replace(/\s+/gu,""):"",j=d>=0?(b[d]||"").replace(/\s+/gu,""):"",k=e>=0?(b[e]||"").replace(/\s+/gu,""):"",l=a.length>=3?a.slice(0,Math.min(a.length,16)):"",m=j.length>=3?j.slice(0,Math.min(j.length,12)):"",n=l&&f.includes(l),o=m&&f.includes(m);n||o?h+=1:a.length>=3&&i.push(`${a.slice(0,40)}${k?` ${k}`:""}(未落位)`)}}if(g>0){let a=h/g,b=i.length>0?`未落位项(共${i.length}项):${i.slice(0,12).join(";")}${i.length>12?` 及其他${i.length-12}项`:""}`:"";a<.3?d.push({level:"warning",message:`清单项落位严重不足:${h}/${g} 项(${Math.round(100*a)}%)`,suggestion:`清单明细数量较大,建议优先补充主要分部分项、关键规格和大额工程量。${b}`}):a<.6&&d.push({level:"warning",message:`清单项落位不足:${h}/${g} 项(${Math.round(100*a)}%)`,suggestion:`建议补充落位以下清单项:${b}`})}return d}function af(a,b){let c=[],d=b.drawings||[];if(0===d.length)return c;let e=a.replace(/\s+/gu,"").toLowerCase(),f=[...new Set(d.map(a=>a.sourceFile||"").filter(Boolean))],g=0,h=[];for(let a of f){let b=a.replace(/\.[^.]+$/u,"").replace(/[/\\]/gu,"").toLowerCase(),c=a.split("/").pop()||a;(b.length>=3?e.includes(b.slice(0,Math.min(b.length,12))):/图纸|设计|说明|节点|做法|构造/u.test(e))?g+=1:h.push(c)}if(f.length>0){let a=g/f.length;a<.25?c.push({level:"warning",message:`图纸引用严重不足:${g}/${f.length} 份图纸被正文引用(${Math.round(100*a)}%)`,suggestion:`建议将图纸中的设计说明、构造做法、材料规格和设备参数写入对应章节。未引用图纸:${h.slice(0,5).join("、")}`}):a<.5&&c.push({level:"warning",message:`图纸引用不足:${g}/${f.length} 份(${Math.round(100*a)}%)`,suggestion:`建议补充引用:${h.slice(0,5).join("、")}`})}return c}function ag(a){let b=[];for(let c of(/【本小节生成未达标,需重新生成】/u.test(a)&&b.push({level:"error",message:"生成未完成:存在未达标小节,需要重新生成或补写后才能导出",suggestion:"请重新生成未达标小节,禁止将占位内容作为正式正文。"}),e.IA))c.test(a)&&b.push({level:"warning",message:`存在占位式表达:${c.source}`,suggestion:"请改写为来自资料的准确事实;资料确实未提供时,改写为正式管理措施,不留空值或“见资料/按文件”。"});return b}function ah(a,b){for(let c of b)try{if(RegExp(c,"iu").test(a))return!0}catch{if(a.includes(c))return!0}return!1}function ai(a,b){let c=`${b.name} ${b.category} ${b.outputTitle} ${b.description}`,f=[];for(let a of(0,d.V)().autoSpecGates)ah(c,a.templateMatchers)&&f.push(a);if(0===f.length)return[];let g=[],h=r(a).length,i=0;for(let b of f){for(let c of(i=Math.max(i,b.minTables||0),b.requiredTexts))a.includes(c)||g.push({level:"warning",message:`配置要求缺少必要内容:${c}`,suggestion:"请按当前模板匹配的专业规则补齐必要内容。"});for(let c of b.forbiddenTexts)(function(a,b){let c="见图纸"===b||"按图纸"===b?["目录","清单","索引","汇总"]:[],d=0;for(;;){let e=a.indexOf(b,d);if(e<0)return!1;let f=a.slice(e+b.length);if(c.some(a=>f.startsWith(a))){d=e+b.length;continue}return!0}})(a,c)&&g.push({level:"error",message:`配置要求不得出现:${c}`,suggestion:"请根据当前模板匹配的专业规则清理正文污染内容。"})}return e.bu.test(a)&&g.push({level:"error",message:"正式正文存在 Markdown 标题符号 #",suggestion:"导出正文应去除 Markdown 标题符号,保留正式标题文字。"}),i&&h<i&&g.push({level:"warning",message:`配置要求正式表格不足:${h}/${i}`,suggestion:"如用户提示词或章节内容要求表格,应按项目资料补充对应表格本体。"}),g}function aj(a){let b=`${a.name} ${a.category} ${a.outputTitle} ${a.description}`,c=new Set;for(let a of(0,d.V)().autoSpecGates)if(ah(b,a.templateMatchers))for(let b of a.requiredTexts)b&&c.add(b);return[...c]}function ak(a,b,c,d,g,h,j){var k;if(!a)return b;let l=[...b],m=function(a){let b=[...a.project,...a.schedule,...a.quality,...a.safety,...a.resources];for(let c of Object.values(a.schemaFacts))b.push(...c);return b}(c),n=function(a,b){let c=new Set;for(let a of b)c.add(a.key),a.fieldName&&c.add(a.fieldName);for(let b of a.tables){for(let a of b.headers)c.add(a);for(let a of b.rows)for(let b of a)c.add(b)}return c}(c,m),o=new Set(d.map(a=>a.title));for(let b of a.factFields){if(!b.required||(k=b.name,/国家法律法规|地方法规|规章|规范标准|标准规范|行业标准|现行规范|法律法规|合规|施工方法|工艺流程|质量控制|安全文明|应急|劳动力|材料投入|机械设备|检测仪器|关键节点/u.test(k)))continue;let a=c.schemaFacts[b.id]||[],e=!1,f=!b.sourceRoleIds?.length||a.some(a=>b.sourceRoleIds?.includes(a.roleId));for(let a of d){if(e&&f)break;for(let c of a.evidence)!e&&!a.missingFacts.includes(b.name)&&(0,i.I2)(c,b)&&(e=!0),!f&&(0,i.I2)(c,b)&&(f=!0)}0!==a.length||n.has(b.name)||e||l.push({level:"warning",message:`系统暂未从知识库确认必需事实:${b.name}`,suggestion:b.extractionHint||"请扩大本地知识库检索、执行事实补抽,或调整事实字段配置。"}),f||l.push({level:"warning",message:`必需事实来源角色不匹配:${b.name}`,suggestion:`请确认该事实来自角色:${b.sourceRoleIds?.join("、")}`})}for(let b of a.chapterRules){let a=d.find(a=>a.title===b.title);a&&b.minWords&&a.content.length<b.minWords&&l.push({level:"warning",message:`章节内容深度建议:${b.title}`,suggestion:`可扩展到约 ${b.minWords} 字,但不要改变模板章节结构。`})}let p=r(g),q=function(a){let b=[];for(let c of a.matchAll(e.gW))b.push({alt:c[1]||"",url:c[2]||"",index:c.index??0});return b}(g),s=(0,f.Cv)(g);for(let b of a.gateRules){let a=b.evaluator?b.evaluator:e.cA[b.type]?.(b)??{subject:"document",operator:"contains",value:b.value||b.target},f=a.target||b.target||"",i=a.value||b.value||f,k=d.find(a=>a.title===f),r=function(a){for(let c of e.Lp){let d=c(a);if(d){var b;return{level:a.rule.level,message:(b=a.rule,`${b.name}:${d}`)}}}}({rule:b,evaluator:a,target:f,value:i,min:a.min||Number(b.value)||1,markdown:g,textScope:"chapter"===a.subject&&k?k.content:g,regex:i?function(a){try{return RegExp(a,"iu")}catch{return}}(i):void 0,chapter:k,factNames:n,chapterTitles:o,tableBlocks:p,imageRefs:q,estimatedPages:s,allFacts:m,factsModel:c,projectBindings:h,promptBindings:j});r&&l.push(r)}return l}function al(a,b){let c=function(a){let b="";for(let c of(0,j.dU)(a))c.content&&(b+=`${c.content}
|
|
1
|
+
"use strict";exports.id=4680,exports.ids=[4680],exports.modules={1358:(a,b,c)=>{c.d(b,{JV:()=>k,O7:()=>h,QP:()=>l,SR:()=>g,c$:()=>j,e$:()=>i,rj:()=>f});var d=c(22157);function e(a){return a.replace(/[\s,,.。::;;||()()《》<>【】"“”'‘’]/gu,"").toLowerCase()}function f(a){let b=a.replace(/[||]\s*(?:[||]\s*)+$/gu,"").replace(/(?:[。;;]|\d+\s*[..、])\s*(?:未尽事宜|其余(?:未尽)?事宜|其他(?:未尽)?事宜|注\s*[::]).*$/u,"").trim();return b=b.replace(/[、,,;;]+\s*$/u,"").trim(),/[||]/u.test(b)&&(b=b.split(/[||]/u)[0]?.trim()||b),b}function g(a){return!(/^(?:见|详见|按|执行|参见|依据).{0,16}(?:前附表|招标公告|招标文件|合同|协议书|通用条款|专用条款|图纸|清单|附件|资料)$/u.test(a)||/(?:^|[::]\s*)(?:见|详见|按|执行|参见|依据)[^。;;]{0,18}(?:前附表|招标公告|招标文件|合同|协议书|通用条款|专用条款|图纸|清单|附件|资料|补疑|答疑)[^。;;]{0,6}$/u.test(a)||/^见.{0,24}(?:招标范围|招标补疑|补疑|前附表|答疑)/u.test(a)||/^(?:合同协议书|通用条款|专用条款|招标文件|招标公告|投标人须知前附表|附件|资料)$/u.test(a.replace(/[()()\d一二三四五六七八九十、..\s]/gu,""))||/^(?:工程名称|项目名称|建设地点|建设规模|计划工期|质量标准|招标范围|合同估算价|工程概况|项目概况|项目内容)$/u.test(a)||/^#+\s*/u.test(a)||/^[一二三四五六七八九十]+[、..]\s*\S{2,}[::]/u.test(a)||/^[((]\s*\d+[))]/u.test(a)&&/具备|证书|考核|资格|人员/u.test(a))&&(!(a.length<4)||!!/\d/u.test(a))}function h(a){let b=String(a.value||"").trim(),c=`${a.label}${b}`;return!(!/项目|工程|编号|地点|规模|范围|工期|质量|安全|资源|材料|设备|验收|\d/u.test(c)||!g(b)||/^(?:技术参数|精确参数)$/u.test(a.label))}function i(a,b){let c=new Set,g=[];for(let h of[...b.project,...b.schedule,...b.quality,...b.safety,...b.resources,...b.preciseFacts,...b.bills,...b.drawings,...b.rules,...b.specifications]){let b=f((0,d.lG)(h.value).replace(/\s+/gu," ").trim()),i=h.fieldName||h.key||h.fieldId||"资料事实",j=`${i}:${b}`;!b||c.has(j)||(c.add(j),g.push({label:i,value:b,sourceFile:h.sourceFile,status:!function(a,b){let c=e(a),d=e(b);if(!d||d.length<2||c.includes(d))return!0;{let a=b.split(/[;;。\n]|、|,|,/u).map(a=>e(a.replace(/^\s*\d+\s*[、..]\s*/u,""))).filter(a=>a.length>=4);if(a.length>=2&&a.some(a=>c.includes(a)))return!0}{let a=b.replace(/[、,,;;||\s]+/gu,"、").split("、").map(a=>e(a.replace(/(?:工程|项目|改造|维修|安装|施工|内容|资料|要求|标准)+$/u,""))).filter(a=>a.length>=2);if(a.length>=1&&(a.length>=2||(a[0]?.length??0)>=3)&&a.every(a=>c.includes(a)))return!0}return(b.match(/\d+(?:\.\d+)?\s*(?:日历天|天|个月|月|年|万元|元|平方米|㎡|m²|立方米|m³|米|m|mm|cm|台|套|人|项|%|MPa|kPa|个|栋|层|标段|批|处|座|组|道|根|樘|扇)?/giu)||[]).some(a=>e(a).length>=2&&c.includes(e(a)))}(a,b)?"unplaced":"used",confidence:h.confidence}))}return g}function j(a,b={}){let c=a.filter(a=>"unplaced"===a.status&&h(a)),d=b.maxIssues&&b.maxIssues>0?b.maxIssues:c.length;return c.slice(0,d).map(a=>({level:"warning",message:`已确认知识库事实未落位:${a.label}=${a.value}`,suggestion:`请将该事实落位到对应章节,并保持来源 ${a.sourceFile||"结构化事实主表"} 的原始口径。${c.length>d?`(共${c.length}个未落位事实,此处显示前${d}个)`:""}`}))}function k(a,b){let c=b.tables||[],d=[],f=e(a);for(let a of c){let b=a.headers.map(a=>a.replace(/\s+/gu,"").toLowerCase()),c=b.findIndex(a=>/项目名称|名称|清单项|分部分项|项目特征|工程内容|材料名称|设备名称/u.test(a)),g=b.findIndex(a=>/编码|编号|序号|项目编码/u.test(a)),h=b.findIndex(a=>/数量|工程量/u.test(a)),i=b.findIndex(a=>/单位/u.test(a));for(let b of a.rows){let j=c>=0&&b[c]||"",k=g>=0&&b[g]||"",l=h>=0&&b[h]||"",m=i>=0&&b[i]||"";if(!j&&!k)continue;let n=e(j),o=e(k),p=n.length>=3&&f.includes(n.slice(0,12))||o.length>=3&&f.includes(o.slice(0,8));d.push({itemCode:k.slice(0,50),itemName:j.slice(0,200),quantity:l.slice(0,50),unit:m.slice(0,20),sourceFile:a.sourceFile||"",placed:p})}}return d.sort((a,b)=>a.placed===b.placed?0:a.placed?1:-1)}function l(a,b={}){let c=a.filter(a=>!a.placed);if(0===c.length)return[];let d=a.length,e=(d-c.length)/d,f=[];return e<.3?f.push({level:"warning",message:`BOQ 清单行级落位严重不足:${d-c.length}/${d} 行(${Math.round(100*e)}%)`,suggestion:`清单明细数量较大,建议优先补充主要分部分项、关键规格和大额工程量。未落位清单项示例:${c.slice(0,5).map(a=>`${a.itemName} ${a.quantity}${a.unit}`).join(";")}`}):e<.6&&f.push({level:"warning",message:`BOQ 清单行级落位不足:${d-c.length}/${d} 行(${Math.round(100*e)}%)`,suggestion:`建议补充落位:${c.slice(0,5).map(a=>a.itemName).join("、")}`}),f}},11248:(a,b,c)=>{c.d(b,{K3:()=>f,zn:()=>g});let d=/[A-Za-z0-9%+-.,]/gu;function e(a){let b=a.charCodeAt(0);return b>=65281&&b<=65374?String.fromCharCode(b-65248):a}function f(a){return a.replace(d,e).replace(/\s+/gu,"").replace(/[×X**]/gu,"x").replace(/[%]/gu,"%").replace(/‰/gu,"permille").replace(/平方米|平方|平米|m²|㎡/giu,"m2").replace(/公顷|hm²/giu,"hm2").replace(/立方米|立方|m³/giu,"m3").replace(/升/gu,"l").replace(/毫升/gu,"ml").replace(/千米|公里/gu,"km").replace(/毫米/gu,"mm").replace(/厘米/gu,"cm").replace(/米/gu,"m").replace(/千克|公斤/gu,"kg").replace(/克/gu,"g").replace(/吨/gu,"t").replace(/人民币万元|万元人民币/gu,"万元").replace(/人民币元|元人民币|¥/gu,"元").replace(/日历天|自然日/gu,"天").replace(/工作日/gu,"工作天").replace(/个月/gu,"月").replace(/小时/gu,"h").replace(/分钟/gu,"min").replace(/兆帕/gu,"mpa").replace(/千帕/gu,"kpa").replace(/千牛/gu,"kn").replace(/牛/gu,"n").replace(/千瓦/gu,"kw").replace(/兆瓦/gu,"mw").replace(/瓦/gu,"w").replace(/千伏/gu,"kv").replace(/伏/gu,"v").replace(/毫安/gu,"ma").replace(/安培|安/gu,"a").replace(/赫兹/gu,"hz").replace(/摄氏度/gu,"℃").replace(/百分之\s*(\d+(?:\.\d+)?)/gu,"$1%").replace(/千分之\s*(\d+(?:\.\d+)?)/gu,"$1permille").replace(/直径\s*(\d+(?:\.\d+)?)/gu,"φ$1").replace(/[Φφ]\s*(\d+(?:\.\d+)?)(?:mm)?/giu,"φ$1").replace(/DN\s*(\d+)/giu,"dn$1").replace(/D\s*(\d+)(?=\b|[^a-z0-9])/giu,"d$1").replace(/\b(KN|MPA|KPA|KW|MW|KV|HZ|DN)\b/giu,a=>a.toLowerCase()).replace(/[,,、。;;::||()()【】\]《》<>"“”'‘’[]/gu,"").toLowerCase()}function g(a){let b=f(a),c=new Set;for(let a of b.matchAll(/\d+(?:\.\d+)?(?:m2|hm2|亩|m3|l|ml|mm|cm|km|m|kg|g|t|万元|亿元|元|天|工作天|月|年|h|min|%|permille|mpa|kpa|pa|kn|n|kn\/m2|kn\/m|kw|mw|w|kv|v|ma|a|hz|℃|台|套|件|个|根|只|组|项|处|座|栋|层|间|批|次|人|工日|人日)?|dn\d+|φ\d+(?:\.\d+)?|d\d+|c\d{2,}|hrb\d+|q\d{3}[a-z]?|m\d+|\d+(?:\.\d+)?x\d+(?:\.\d+)?(?:x\d+(?:\.\d+)?)?|[+-]?\d+\.\d{3}|\d+[:/]\d+/giu))c.add(a[0]);return[...c]}},23760:(a,b,c)=>{c.d(b,{AC:()=>n,Ai:()=>q,BV:()=>t,Ff:()=>l,Fv:()=>B,K1:()=>z,KI:()=>Y,M$:()=>ao,N1:()=>ag,NS:()=>C,S2:()=>ah,ST:()=>_,Ty:()=>u,Yb:()=>Z,bM:()=>aj,f8:()=>x,gN:()=>v,hr:()=>V,i0:()=>ab,iC:()=>s,ji:()=>ac,k0:()=>A,kQ:()=>an,mR:()=>al,qK:()=>H,qm:()=>Q,t4:()=>am,vY:()=>aa,xX:()=>$,yd:()=>ai,yw:()=>G});var d=c(8753),e=c(74329),f=c(78217),g=c(11248),h=c(70208),i=c(91977),j=c(23500),k=c(22157);function l(a){let b={blocking:0,important:0,minor:0};for(let c of a)b[function(a){let b="string"==typeof a?a:a.message;if("error"===("string"==typeof a?void 0:a.level))return"blocking";for(let a of e.gr)if(a.pattern.test(b))return a.severity;return"minor"}(c)]+=1;return b}function m(a,b){let c=a.replace(/[\][()`*_>#|{},。、“”‘’:;!?,.!?:;-]+/gu," ").replace(e.ug," ").trim();if(c.length<120)return;let d=c.match(/[A-Za-z][A-Za-z-]{2,}|[\p{Script=Han}]{2,}/gu)||[];if(d.length<30)return;let f=1,g=new Map;for(let a=0;a<d.length;a+=1){let c=d[a].toLowerCase();if(g.set(c,(g.get(c)||0)+1),a>0&&c===d[a-1].toLowerCase()?f+=1:f=1,f>=12)return{level:"error",message:`${b} 存在重复 token 退化输出`,suggestion:"请重新生成该小节,禁止保留连续重复的英文单词或无意义片段。"}}let h=[...g.entries()].sort((a,b)=>b[1]-a[1])[0];if(h&&h[1]>=25&&h[1]/d.length>=.42)return{level:"error",message:`${b} 存在重复 token 退化输出`,suggestion:`检测到“${h[0]}”异常高频重复,请重新生成该小节。`}}function n(a,b=[]){let c=[],d=m(a,"全文");for(let a of(d&&c.push(d),b)){let b=m(a.content,`章节“${a.title}”`);for(let d of(b&&c.push(b),a.sections||[])){let b=d.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&"),e=a.content.match(RegExp(`^#{3,4}\\s+(?:\\d+(?:\\.\\d+)*\\s+)?${b}\\s*\\n([\\s\\S]*?)(?=^#{3,4}\\s+|^##\\s+|$)`,"mu"));if(!e)continue;let f=m(e[1],`小节“${d}”`);f&&c.push(f)}}return c}function o(a){return a.severity&&a.repairability?a:/小节只有标题|空小节|小节内容补写未完成/u.test(a.message)?{...a,severity:"blocker",repairability:"local_deterministic",category:"structure",owner:"system"}:/不得出现|提示词要求|疑似提示词指令标题|项目污染|生成未完成/u.test(a.message)?{...a,severity:"blocker",repairability:"llm_repairable",category:"structure",owner:"system"}:/事实一致性冲突|projectFactOnly|核心事实/u.test(a.message)?{...a,severity:"error"===a.level?"blocker":"warning",repairability:"manual_review",category:"fact_consistency",owner:"user"}:/证据使用覆盖率偏低|BOQ|落位|高分模块|专业链|闭环/u.test(a.message)?{...a,severity:"warning",repairability:"not_repair_needed",category:"evidence_coverage",owner:"system"}:"error"===a.level?{...a,severity:"blocker",repairability:"llm_repairable",category:"structure",owner:"system"}:"warning"===a.level?{...a,severity:"warning",repairability:"not_repair_needed",category:"style",owner:"system"}:{...a,severity:"suggestion",repairability:"not_repair_needed",category:"style",owner:"system"}}function p(a){let b=o(a);return"blocker"===b.severity&&(!!("error"===b.level&&"blocker"===b.severity&&/placeholder|source|style|format|structure/u.test(String(b.category||""))||/提示词要求|疑似提示词指令标题|适用性自相矛盾|不得出现/u.test(a.message))||!/目录与正文/u.test(a.message)&&(/配置要求缺少必要内容/u.test(a.message)?"error"===a.level:!!/小节内容补写未完成|空小节|小节只有标题|生成未完成/u.test(a.message)||!/生成后事实反查失败/u.test(a.message)&&(/工序规格冲突/u.test(a.message)?"error"===a.level:!!/项目特点、重点、难点分析 正文不足|项目主要施工内容 正文不足/u.test(a.message)||!(/规划小节正文过短/u.test(a.message)||/事实一致性冲突:项目名称/u.test(a.message))&&(/跨章一致性|专业评分不足|专业缺口|泛化套话|缺少关键线路|缺少材料验收|缺少风险识别|缺少进场/u.test(a.message)?"error"===a.level&&!/证据使用覆盖率偏低|章节逻辑依赖不足|文档交付评分报告/u.test(a.message):!(!e.hc.test(a.message)||/章节审查|最终质量审查|正文篇幅明显低于目标|正文存在空泛占位表达|结构化事实读取不足|正文可能未显式覆盖|仅包含文件类型和占位符|不在本次招标范围内/u.test(a.message))))))}function q(a,b,c){let d=c.some(a=>(a.content||"").split(e.A5).filter(a=>!/^#{1,6}\s+/u.test(a.trim())).filter(a=>!/^\s*\|/u.test(a)).filter(a=>!/^\s*:?-{3,}:?/u.test(a)).join("\n").replace(/[|*_`<>#\s]/gu,"").length>=30),f=a.map(o).filter(a=>"error"===a.level&&p(a)),g=/缺少规划小节|小节生成未达标|小节内容补写未完成|空小节|小节只有标题|生成未完成|正文不足|主要施工内容小节缺失|部分章节生成失败|Writer 未完成|不得出现|疑似提示词指令标题|项目污染|跨章一致性/u,h=d?f.filter(a=>g.test(a.message)):f,i=[{key:"no_errors",label:"无阻断级校验错误",passed:0===h.length},{key:"basic_facts",label:"基础事实齐全",passed:b.project.length>0},{key:"source_traceability",label:"事实具备来源追踪",passed:[...b.project,...b.schedule,...b.quality,...b.safety].every(a=>!!a.sourceFile)},{key:"structured_precision",label:"结构化精确参数已使用",passed:b.preciseFacts.length<e.mu||a.every(a=>"error"!==a.level||!e.Ab.test(a.message))},{key:"chapter_evidence",label:"章节均具备证据",passed:c.every(a=>a.evidence.length>0)},{key:"no_missing_content",label:"无资料未提供章节",passed:c.every(a=>!a.content.includes("资料未提供"))},{key:"no_project_contamination",label:"无项目污染和事实一致性阻断",passed:!a.some(a=>"error"===a.level&&e.Uv.test(a.message)&&p(a))},{key:"numeric_consistency",label:"跨章数值口径与资料一致",passed:!a.some(a=>"error"===a.level&&/跨章一致性冲突|跨章一致性缺口|跨章一致性复核/u.test(a.message)&&p(a))}];return{passed:0===h.length,blockingIssues:h,checklist:i}}function r(a){let b=[],c=a.split(e.A5);for(let a=0;a<c.length;a+=1){if(!e.w7.test(c[a]))continue;let d=[];for(;a<c.length&&e.w7.test(c[a]);)d.push(c[a]),a+=1;a-=1,d.some(a=>e.N3.test(a))&&b.push(d.join("\n"))}return b}function s(a){let b=[...a.matchAll(e.DB)],c=[];for(let d=1;d<b.length;d+=1){let f=b[d].index||0,g=b[d+1]?.index??a.length,h=a.slice(f,g);e.Ks.test(h)&&c.push({level:"warning",message:`第 ${d+1} 章可能重复出现基础信息`,suggestion:"如该信息与本章主题无关,建议合并到更合适的概况类章节,避免重复铺陈。"})}if(0===b.length)return c;let d=b[0].index||0,f=b[1]?.index??a.length,g=a.slice(d,f),h=g.search(e.jM);if(h<=0)return c;let i=g.slice(0,h).replace(e.Dc,""),j=[];for(let a of e.Y8)RegExp(`${a}\\s*[::]`,"u").test(i)&&j.push(a);return j.length>=3&&c.push({level:"warning",message:`基础信息表前重复叙述字段:${j.join("、")}`,suggestion:"基础信息已表格化时,表格前只保留一句引导语,不要重复逐项叙述名称、编号、范围、周期、质量等字段。"}),c}function t(a){let b=[],c=[];for(let b of e.ZH)a.includes(b)&&c.push(b);c.length>0&&b.push({level:"warning",message:`存在模板化前缀或套话:${c.join("、")}`,suggestion:"请删除“本节/本章将/以下从”等前缀,标题后直接进入对象、动作、措施、检查和闭环。"});let d=a.match(/OCR|提示词|绑定片段|后台|文件路径|识别错误|知识库证据|知识库已确认事实|通用兜底段落|兜底占位|兜底模板/giu);return d?.length&&b.push({level:"warning",message:`正文包含后台或资料处理话术:${[...new Set(d)].join("、")}`,suggestion:"建议改为正式文档语言,例如“资料文字不清”“资料口径不一致”“项目资料”,不得暴露后台处理过程。"}),b}function u(a){let b=[];for(let c of a){let a=(c.sections||[]).filter(Boolean),d=a.filter((b,c)=>a.indexOf(b)!==c);d.length>0&&b.push({level:"warning",message:`${c.title} 存在重复小节:${[...new Set(d)].join("、")}`,suggestion:"请保留用户需求、模板或显式大纲中真实需要的小节,删除重复项。"});let e=new Map;for(let b of a){let a=/劳动力|人员|工种/u.test(b)?"劳动力计划":/机械|设备|机具/u.test(b)?"机械设备计划":/材料|物资/u.test(b)?"材料物资计划":/冬季|雨季|高温|台风|大风/u.test(b)?"特殊气候措施":"";a&&e.set(a,[...e.get(a)||[],b])}for(let[a,d]of e)d.length>1&&b.push({level:"warning",message:`${c.title} 存在重复主题小节:${a}(${d.join("、")})`,suggestion:"请合并同类小节,只保留一个主表或主方案,其他位置采用引用或执行说明。"})}return b}function v(a){let b=e.HX.exec(a);if(!b)return[{level:"error",message:"缺少目录页",suggestion:"请在封面后生成“## 目录”,并按一级章父级、二级小节子级组织。"}];let c=0,d=0;for(let a of b[1].split(e.A5))e.ZT.test(a)&&e.EB.test(a)&&(c+=1,e.sr.test(a)&&(d+=1));return c>0&&0===d?[{level:"error",message:"目录二级小节未作为子级缩进",suggestion:"目录应为父子级导航:一级章单独成行,二级小节至少缩进两个空格列在所属章下方。"}]:[]}function w(a){return a.replace(/^#+\s*/u,"").replace(/^第[一二三四五六七八九十百千万\d]+[章节篇部分]\s*/u,"").replace(/^\d+(?:\.\d+)*(?:[..、]|\s)+/u,"").replace(/[()]/gu,a=>"("===a?"(":")").replace(/[\s::.。;;,,、]+$/gu,"").replace(/的(?=保障体系|管理体系|控制体系|措施|方案|计划|要求)/gu,"").replace(/[\s()()::.。;;,,、-]/gu,"").trim()}function x(a){let b=function(a){let b=e.HX.exec(a);return b?b[1].split(e.A5).map(a=>/^\s*\d+\.\d+\s+(.+)$/u.exec(a.trim())).filter(a=>!!a).map(a=>w(a[1]||"")).filter(Boolean):[]}(a),c=[...a.matchAll(/^#{2,4}\s+(\d+\.\d+\s+.+)$/gmu)].map(a=>w(a[1]||"")).filter(Boolean);if(0===b.length||0===c.length)return[];let d=new Set(c),f=new Set(b),g=b.filter(a=>!d.has(a)),h=c.filter(a=>!f.has(a)),i=[];return g.length>0&&i.push({level:"error",message:`目录与正文不一致,目录小节未在正文中找到:${[...new Set(g)].join("、")}`,suggestion:"建议以最终清洗后的正文二级标题为准重新生成目录。"}),h.length>0&&i.push({level:"error",message:`目录与正文不一致,正文小节未进入目录:${[...new Set(h)].join("、")}`,suggestion:"建议重新生成目录,确保只收录正文二级小节,不收录三级小节。"}),i}function y(a){let b=a.replace(/^#{1,6}\s+/u,"").replace(/^\s*\d+(?:\.\d+)*(?:[..、]|\s)+/u,"").replace(/^第[一二三四五六七八九十百千万\d]+[章节篇部分]\s*/u,"").trim(),c=(0,h.GQ)(b),d=/^(?:\d+(?:\.\d+)*\s*)?(?:[-—–]\s*)?(?:(?:判断|判定|识别|确认)?是否(?:涉及|涉|需要|适用).*|(?:如|若|如果)(?:涉及|不涉及|适用|不适用).*|.*(?:根据|结合).{0,12}(?:实际情况|项目情况|资料情况).{0,8}(?:判断|确定|编写|生成).*|.*(?:按需(?:生成|编写)|视情况|判断后|生成要求|编写要求|注意事项))\s*$/u;return d.test(b)||d.test(c)}function z(a){let b=[...a.matchAll(/^#{2,6}\s+(.+)$/gmu)].map(a=>(0,h.GQ)(a[1]||"")).filter(y);return b.length>0?[{level:"error",message:`正文存在疑似提示词指令标题:${[...new Set(b)].slice(0,8).join("、")}`,suggestion:"请删除或改写为正式施工组织设计小节标题,目录也不得收录该类标题。"}]:[]}function A(a){let b=[],c=a.split(e.A5).map(a=>a.trim()).filter(a=>a&&!/^#{1,6}\s+/u.test(a)&&!/^\s*\|/u.test(a)&&!/^<div\b/iu.test(a)),d=c.find(a=>w(a).length<=1);d&&b.push({level:"warning",message:`正文存在孤立字或残缺段落:${d}`,suggestion:"请删除残缺行或重新生成所在小节。"});let f=c.find(a=>/[,、;:和与在为对将]$/u.test(a)||/(通过|包括|如下|主要包括)$/u.test(a));f&&b.push({level:"warning",message:`正文存在疑似截断句:${f}`,suggestion:"请补完整该段落,避免以连接词、逗号或冒号结尾。"});let g=c.find(a=>a.length>380);g&&b.push({level:"warning",message:`正文存在过长段落:${g}`,suggestion:"请拆分为多段或表格,改善导出版式和可读性。"});let h=c.find(a=>/\S.+(?:\s|[。;;])(?:\d+[.、](?=\s|\*\*)\s*|[((]\d+[))]\s*|[-*+]\s+)\S.+(?:\s|[。;;])(?:\d+[.、](?=\s|\*\*)\s*|[((]\d+[))]\s*|[-*+]\s+)\S/u.test(a)&&!/\b\d+\.\d+\s*(?:mm|cm|m|㎡|m2|kg|t|MPa|kPa|V|KV|kV|A)\b/iu.test(a));h&&b.push({level:"error",message:`正文存在列表项粘连同一行:${h.slice(0,120)}`,suggestion:"有序列表和无序列表必须逐项独占一行,确保 Markdown/PDF/DOCX 正确排版。"});let i=a.match(/(?:PDF\s*)?第\s*\d+\s*(?:[-—至到~~]\s*\d+)?\s*页|(?:图纸|清单|资料|文件|[\u4e00-\u9fa5A-Za-z0-9()()、·-]{2,24}(?:工程)?)\s*(?:[((]?\s*|(?:共|多达|约|合计)\s*)\d+\s*页|[\u4e00-\u9fa5A-Za-z0-9、及与和]{2,24}\s*(?:共|多达|约|合计)\s*\d+\s*页|\d+\s*页\s*(?:图纸|资料|文件|装饰|土建|加固|给排水|电气|智能化|消防)|\d+\s*页/iu)?.[0];i&&b.push({level:"error",message:`正文残留资料页码元信息:${i}`,suggestion:"正式投标正文应引用招标文件、施工图设计文件、工程量清单和相关专业图纸,不写 PDF 页码或资料页数。"});let j=c.find(a=>/仅作为内部事实提取依据|正式正文不得引用文件名|后台事实|内部事实/u.test(a));return j&&b.push({level:"error",message:`正文残留内部处理说明:${j.slice(0,120)}`,suggestion:"正式投标正文不得出现内部事实抽取、后台处理或文件名引用限制说明。"}),b}function B(a){let b=[],c=a.search(/^##\s+第[一二三四五六七八九十百千万\d]+章\s+/mu),d=[...(c>=0?a.slice(c):a.replace(/^##\s+目录[\s\S]*?(?=^##\s+第[一二三四五六七八九十百千万\d]+章\s+)/mu,"")).matchAll(/^##\s+(.+)$/gmu)].map(a=>(a[1]||"").trim()).filter(a=>"目录"!==a&&!/^第[一二三四五六七八九十百千万\d]+章\s+/u.test(a)&&!/^附录/u.test(a)).map(a=>(0,h.GQ)(a));d.length>0&&b.push({level:"error",message:`正文存在非正式章二级标题:${[...new Set(d)].slice(0,8).join("、")}`,suggestion:"正文 ## 只允许用于“第X章”正式章标题;章内小节必须使用 ### X.Y。"});let e=[...a.matchAll(/^##\s+(第[一二三四五六七八九十百千万\d]+章\s+.+)$/gmu)];for(let c=0;c<e.length;c+=1){let d=e[c].index||0,f=e[c+1]?.index??a.length,g=[...a.slice(d,f).matchAll(/^###\s+\d+\.\d+\s+(.+)$/gmu)].map(a=>(0,h.GQ)(a[1]||"")),i=(0,h.GQ)((e[c][1]||"").replace(/^第[一二三四五六七八九十百千万\d]+章\s*/u,""));1===g.length&&w(g[0])===w(i)&&b.push({level:"error",message:`章节只有一个且与章名同名的小节:${e[c][1]}`,suggestion:"应拆分为多个业务小节,不能用章标题重复作为唯一二级小节。"})}return b}function C(a){let b=[];/按审批确认执行/u.test(a)&&b.push({level:"error",message:"表格存在自动兜底污染内容:按审批确认执行",suggestion:"正式投标表格不得使用通用兜底短语,应保留真实业务内容或删除该行。"});let c=[];for(let b of a.matchAll(/\|\s*信息项\s*\|\s*内容\s*\|/gu)){let d=a.slice(b.index||0),f=[];for(let a of d.split(e.A5)){if(f.length>0&&!e.w7.test(a))break;f.push(a)}c.push(f.join("\n"))}let d=c.filter(a=>/项目名称|招标人|建设单位|发包人|建设地点|招标范围|计划工期|合同估算价|质量标准/u.test(a)).length;d>1&&b.push({level:"error",message:`项目基础信息类表格重复:${d} 处`,suggestion:"项目名称、招标人、建设地点、工期、质量等基础信息只能集中输出一次。"});let f=a.match(/^\|\s*---\s*\|\s*---\s*\|\s*$/gmu)||[];for(let c of(f.length>20&&b.push({level:"error",message:`表格分隔线异常重复:${f.length} 行`,suggestion:"请修复表格规范化逻辑,禁止把数据行拆成多个碎表。"}),r(a))){let a=c.split(e.A5).filter(a=>e.w7.test(a));if(a.length<2)continue;if(!e.N3.test(a[1]||"")){b.push({level:"error",message:`表格分隔线位置不规范:${a[0]||""}`,suggestion:"Markdown 表格必须紧跟表头输出分隔线,例如 |---|---|,中间不得插入正文或其他管道行。"});continue}let d=a.map(a=>a.trim().replace(/^\|/u,"").replace(/\|$/u,"").split(/(?<!\\)\|/u).map(a=>a.trim())),f=d[0]||[],g=f.filter(a=>/^(?:列|字段|内容|备注)\d+$/u.test(a));g.length>0&&b.push({level:"error",message:`表格存在泛化表头:${g.join("、")}`,suggestion:"正式投标表格必须使用业务字段表头,不得出现“列5/字段1/内容2”等临时表头。"});let h=f.length;d.find((a,b)=>1!==b&&a.length!==h)&&b.push({level:"error",message:`表格列数不一致:${f.join("、")}`,suggestion:"请统一表头和数据行列数;不应通过自动填充兜底词修补表格。"})}return b}function D(a){return a.split(e.A5).filter(a=>!/^#{1,6}\s+/u.test(a.trim())).filter(a=>!/^\s*\|/u.test(a)).filter(a=>!/^\s*:?-{3,}:?/u.test(a)).filter(a=>!/^<\/?div\b/iu.test(a.trim())).join("\n").replace(/[|*_`<>-]/gu,"").replace(e.ug,"").length}function E(a){let b=[...a.matchAll(/^(#{3,4})\s+(.+)$/gmu)];return b.map((c,d)=>{let e=c[1].length,f=(c.index||0)+c[0].length,g=b.slice(d+1).find(a=>a[1].length<=e),h=g?.index??a.length,i=(c[2]||"").trim();return{rawTitle:i,title:w(i),level:e,body:a.slice(f,h)}}).filter(a=>a.title&&(3===a.level||4===a.level))}function F(a,b,c,d,f){let g=D(d),h=e.w7.test(d)&&d.split(e.A5).some(a=>e.N3.test(a)),i=D(d.split("\n").filter(a=>!e.w7.test(a)&&!e.N3.test(a)).join("\n").replace(/^#{1,6}\s+.+$/gmu,""));if(/\[WRITER_MISSING_SECTION\]|Writer 未完成/u.test(d))return{chapterTitle:a,sectionTitle:b,level:c,bodyLength:g,reason:"empty",planned:f,message:`${a} 小节内容补写未完成:${b}`};if(/【本小节生成未达标,需重新生成】/u.test(d))return{chapterTitle:a,sectionTitle:b,level:c,bodyLength:g,reason:"empty",planned:f,message:`${a} 小节生成未达标:${b}`};if(/项目基本信息|基本信息|工程概况|项目概况|工程概述|项目概述/u.test(b)&&(h||g>=40)||/^附录[一二三四五六七八九十A-Z\d]/u.test(b)&&h)return;let j=/清单|配置|汇总|一览|明细|计划|进度|节点|安排/u.test(b)||/表[^,。;:\s]{0,6}$/u.test(b);if(!(h&&j&&Math.max(0,d.split(e.A5).filter(a=>e.w7.test(a)&&!e.N3.test(a)).length-1)>=2)){if(h&&i<20)return{chapterTitle:a,sectionTitle:b,level:c,bodyLength:g,reason:"empty",planned:f,message:f?`${a} 只有标题或表格无正文:${b}`:`${a} 小节只有标题或表格无正文:${b}`};if(!(g>=80)||!(i>=20)){if(0===g)return{chapterTitle:a,sectionTitle:b,level:c,bodyLength:g,reason:"empty",planned:f,message:`${a} 空小节:${b}`};if(g<180)return{chapterTitle:a,sectionTitle:b,level:c,bodyLength:g,reason:"too_short",planned:f,message:`${a} ${f?"规划小节":"正文小节"}正文过短:${b}`}}}}function G(a,b){let c=[],d=new Set;for(let e of b){let b=e.content?.trim()?e.content:a;for(let a of(e.sections||[]).filter(a=>!/^(?:施工概况|施工流程|施工方法)$/u.test(w(a))&&!/^附录/u.test(a.trim()))){let f=w(a),g=function(a,b){let c=E(a).filter(a=>(function(a,b){let c=w(a),d=w(b);if(!c||!d)return!1;if(c===d||c.includes(d)||d.includes(c))return!0;let e=/项目概况|主要施工方案|新技术新材料|工程重点难点|重点难点|危大工程|保障体系|安全保障|工期|质量|安全生产|应急预案|资源|人材机|材料|机械|劳动力|进度|关键线路|交通疏导|成品保护|深化设计|验收/gu,f=new Set(c.match(e)||[]),g=new Set(d.match(e)||[]),h=[...f].filter(a=>g.has(a)).length;return h>=2||1===Math.min(f.size,g.size)&&1===h&&16>=Math.max(c.length,d.length)})(a.rawTitle,b));return c.length<=1?c[0]:c.map(a=>({item:a,gap:F("",b,a.level,a.body,!0),textLength:D(a.body)})).sort((a,b)=>{let c=a.gap&&"empty"===a.gap.reason?1:0,d=b.gap&&"empty"===b.gap.reason?1:0;return c!==d?c-d:b.textLength-a.textLength})[0]?.item}(b,a),h=`${e.title}|${f}|planned`;if(!g){c.push({chapterTitle:e.title,sectionTitle:a,level:3,bodyLength:0,reason:"missing_planned_section",planned:!0,message:`${e.title} 缺少规划小节:${a}`}),d.add(h);continue}let i=F(e.title,a,g.level,g.body,!0);i&&c.push(i),d.add(h)}for(let a of E(b)){let b=`${e.title}|${a.title}|actual`,f=`${e.title}|${a.title}|planned`;if(d.has(b)||d.has(f))continue;let g=F(e.title,a.title,a.level,a.body,!1);g&&"empty"===g.reason&&c.push(g),d.add(b)}}return c}function H(a,b){return G(a,b).filter(a=>"empty"===a.reason||"missing_planned_section"===a.reason).map(a=>({level:"error",message:a.message,suggestion:"missing_planned_section"===a.reason?"必须补充该规划小节正式正文,不得缺节导出。":"必须补充与该小节相关的材料事实和必要内容,达到正文完整度要求。"}))}function I(a){return`${a.fieldName||a.key} ${(0,k.lG)(a.value)}`.replace(/\s+/gu," ").trim()}function J(a){let b=new Set;for(let c of[/\d+\s*日历天(?!内)/gu,/(?:计划工期|合同工期|总工期|工期|施工周期)[^\n。;;]{0,12}\d+\s*天/gu,/(?:计划工期|合同工期|总工期|工期|施工周期)[^\n。;;]{0,12}\d+\s*(?:个月|月)/gu])for(let d of a.matchAll(c)){let a=d[0].match(/\d+\s*(?:日历天|天|个月|月)/u)?.[0]?.replace(/\s+/gu,"");a&&b.add(a)}return[...b]}function K(a,b,c){let d=[],e=new Set,f=RegExp(`(?:${b.source})(?:[^\\n。;;,,]{0,14}?)(\\d{2,}(?:[.,]\\d+)?\\s*万?)\\s*(${c.source})`,"giu");for(let b of a.matchAll(f)){let a=b[1].replace(/[,,]/gu,"").replace(/\s+/gu,""),c=b[2],f=`${a}|${c}`;!a||e.has(f)||(e.add(f),d.push({value:a,unit:c}))}return d}function L(a){let b=a.value.replace(/[,,]/gu,"").trim(),c=/^([\d.]+)万/u.exec(b),d=c?1e4*Number(c[1]):Number(b);return Number.isFinite(d)?/亿元/u.test(a.unit)?1e8*d:/万元/u.test(a.unit)?1e4*d:d:NaN}let M=/(?<![地上地下门卫室值班室配电室配电房泵房水泵房锅炉房公厕车库车棚岗亭传达室警卫室样板房售楼处门房])总?建筑面积|总?建设规模/u,N=/㎡|m²|m2|平方米/u,O=/合同估算价|合同估算价格|投资估算|最高投标限价|招标控制价|工程总投资|总投资|工程造价/u,P=/万元|亿元/u;function Q(a,b,c){let d=[],e=a=>c?.find(b=>b.kind===a&&b.resolution)?.resolution,f=a=>{let b=/(\d+(?:\.\d+)?)\s*(㎡|m²|m2|平方米|万元|亿元)/u.exec(a);return b?{value:b[1],unit:b[2]}:void 0},g=e("duration")??b.schedule.map(I).find(a=>/\d+\s*(?:日历天|天|个月|月)|计划工期|合同工期/u.test(a)),h=b.quality.map(I).find(a=>/质量|合格|优良/u.test(a));if(g){let b=J(g)[0],c=J(a.split("\n").filter(a=>!/^\s*\|/u.test(a.trim())).join("\n")),e=b?c.filter(a=>a!==b&&/日历天/u.test(a)):[];b&&e.length>=2&&d.push({level:"warning",message:`跨章一致性冲突:正文出现与资料工期不一致的表述 ${e.slice(0,6).join("、")}`,suggestion:`请统一使用资料中的工期口径:${g}`})}h&&!/质量标准|质量目标|合格|优良/u.test(a)&&d.push({level:"error",message:"跨章一致性缺口:正文未稳定体现资料中的质量目标",suggestion:`请在工程概况、质量保证和验收相关章节统一体现:${h}`});let i=e("area"),j=i??b.project.map(I).find(a=>/建设规模|建筑面积/u.test(a));if(j){let b=i?f(i):K(j,M,N)[0],c=K(a,M,N);if(b){let a=c.filter(a=>L(a)!==L(b));a.length>=1&&d.push({level:"error",message:`跨章一致性冲突:正文出现与资料建设规模不一致的表述 ${a.slice(0,6).map(a=>`${a.value}${a.unit}`).join("、")}`,suggestion:`请统一使用资料中的建设规模口径:${j.slice(0,80)}`})}}let k=e("cost"),l=k??b.project.map(I).find(a=>/合同估算|投资估算|最高投标限价|招标控制价|总投资|工程造价/u.test(a));if(l){let b=k?f(k):K(l,O,P)[0],c=K(a,O,P);if(b){let a=c.filter(a=>L(a)!==L(b));a.length>=1&&d.push({level:"error",message:`跨章一致性冲突:正文出现与资料估算价不一致的表述 ${a.slice(0,6).map(a=>`${a.value}${a.unit}`).join("、")}`,suggestion:`请统一使用资料中的估算价口径:${l.slice(0,80)}`})}}return d}let R=/找平层|抹灰层|防水层|保温层|结合层|垫层|面层|粘结层|隔热层|隔离层/gu,S=/铺设|施工|浇筑|粘贴|铺贴|涂抹|完成|进行|待|设置|铺装|挂网|喷涂|灌注/u;function T(a){let b=[],c=[...a.matchAll(R)],d=[],e=(a,b)=>d.some(([c,d])=>a<d&&b>c),f=(a,c,f,g,h,i)=>{let j=[...a.matchAll(f)];for(let f of"first"===g?j:[...j].reverse()){let j=c+(f.index??0),k=j+f[0].length;if(e(j,k))continue;let l="first"===g?a.slice(0,f.index??0):a.slice((f.index??0)+f[0].length);if(!S.test(l)){d.push([j,k]),b.push({layer:h,span:[j,k],raw:f[0],kind:i});return}}};for(let b=0;b<c.length;b+=1){let d=c[b],e=d[0],g=d.index??0,h=g+e.length,i=c[b+1]?.index,j=void 0===i?Math.min(a.length,h+90):i,k=a.slice(h,j),l=b>0?(c[b-1].index??0)+c[b-1][0].length:Math.max(0,g-40),m=a.slice(l,g);f(k,h,/(\d+:\d+(?:\.\d+)?)/gu,"first",e,"ratio"),f(m,l,/(\d+:\d+(?:\.\d+)?)/gu,"last",e,"ratio"),f(k,h,/(\d+(?:\.\d+)?)\s*mm/gu,"first",e,"thickness"),f(m,l,/(\d+(?:\.\d+)?)\s*mm/gu,"last",e,"thickness")}return b}function U(a){let b=[],c=new Set;for(let d of T(a)){let a="ratio"===d.kind?d.raw.match(/(\d+:\d+(?:\.\d+)?)/u)?.[1]:void 0,e="thickness"===d.kind?d.raw.match(/(\d+(?:\.\d+)?)/u)?.[1]:void 0,f=e?Number(e):void 0,g=`${d.layer}|${a||""}|${f??""}`;c.has(g)||(c.add(g),b.push({layer:d.layer,ratio:a,thickness:f}))}return b}function V(a,b){let c=[],d=U([...b.specifications,...b.quality,...b.preciseFacts,...b.bills].map(I).join("\n"));if(0===d.length)return c;let e=new Map;for(let a of d){let b=e.get(a.layer)||[];b.push(a),e.set(a.layer,b)}let f=U(a),g=new Set;for(let[a,b]of e){let d=[...new Set(b.map(a=>a.ratio).filter(Boolean))],e=[...new Set(b.map(a=>a.thickness).filter(a=>Number.isFinite(a)))];for(let b of f.filter(b=>b.layer===a)){if(1===d.length&&b.ratio&&b.ratio!==d[0]){let e=`ratio|${a}|${b.ratio}`;g.has(e)||(g.add(e),c.push({level:"error",message:`工序规格冲突:正文${a}配比 ${b.ratio} 与资料口径 ${d[0]} 不一致`,suggestion:`请将${a}配比统一为资料口径 ${d[0]},禁止改写资料规格。`}))}if(1===e.length&&Number.isFinite(b.thickness)&&Math.abs(b.thickness-e[0])>=1){let d=`thickness|${a}|${b.thickness}`;g.has(d)||(g.add(d),c.push({level:"error",message:`工序规格冲突:正文${a}厚度 ${b.thickness}mm 与资料口径 ${e[0]}mm 不一致`,suggestion:`请将${a}厚度统一为资料口径 ${e[0]}mm。`}))}}}return c}function W(a,b){let c=[...a.specifications,...a.quality,...a.preciseFacts,...a.bills].map(I).join("\n"),d=new Map;for(let a of U(c)){let b=d.get(a.layer)||{ratios:[],thicknesses:[]};a.ratio&&!b.ratios.includes(a.ratio)&&b.ratios.push(a.ratio),Number.isFinite(a.thickness)&&!b.thicknesses.includes(a.thickness)&&b.thicknesses.push(a.thickness),d.set(a.layer,b)}let e=new Map;for(let[a,b]of d)(1===b.ratios.length||1===b.thicknesses.length)&&e.set(a,{ratio:1===b.ratios.length?b.ratios[0]:void 0,thickness:1===b.thicknesses.length?b.thicknesses[0]:void 0});let f=a=>b?.find(b=>b.kind===a&&b.resolution)?.resolution,g=a=>{let b=/(\d+(?:\.\d+)?)\s*(㎡|m²|m2|平方米|万元|亿元)/u.exec(a);return b?{value:b[1],unit:b[2]}:void 0},h=f("area"),i=h??a.project.map(I).find(a=>/建设规模|建筑面积/u.test(a)),j=f("cost"),k=j??a.project.map(I).find(a=>/合同估算|投资估算|最高投标限价|招标控制价|总投资|工程造价/u.test(a));return{specTargets:e,scaleTarget:i?h?g(h):K(i,M,N)[0]:void 0,costTarget:k?j?g(j):K(k,O,P)[0]:void 0}}function X(a,b){let c=[];for(let d of T(a)){let a=b.specTargets.get(d.layer);if(a){if("ratio"===d.kind&&a.ratio){let b=d.raw.match(/(\d+:\d+(?:\.\d+)?)/u)?.[1];b&&b!==a.ratio&&c.push({start:d.span[0],end:d.span[1],replacement:d.raw.replace(/(\d+:\d+(?:\.\d+)?)/u,a.ratio),detail:`${d.layer}配比 ${b}→${a.ratio}`})}if("thickness"===d.kind&&Number.isFinite(a.thickness)){let b=Number(d.raw.match(/(\d+(?:\.\d+)?)/u)?.[1]);Number.isFinite(b)&&Math.abs(b-a.thickness)>=1&&c.push({start:d.span[0],end:d.span[1],replacement:d.raw.replace(/(\d+(?:\.\d+)?)/u,String(a.thickness)),detail:`${d.layer}厚度 ${b}mm→${a.thickness}mm`})}}}let d=(b,d,e,f)=>{if(!b)return;let g=RegExp(`(?:${d.source})(?:[^\\n。;;,,]{0,14}?)(\\d{2,}(?:[.,]\\d+)?\\s*万?)\\s*(${e.source})`,"giu");for(let d of a.matchAll(g)){let a={value:d[1].replace(/[,,]/gu,"").replace(/\s+/gu,""),unit:d[2]};if(L(a)===L(b))continue;let e=(d.index??0)+d[0].indexOf(d[1]),g=e+d[1].length;c.some(a=>a.start<g&&a.end>e)||c.push({start:e,end:g,replacement:b.value,detail:`${f} ${a.value}${a.unit}→${b.value}${a.unit}`})}};if(d(b.scaleTarget,M,N,"建设规模"),d(b.costTarget,O,P,"估算价"),0===c.length)return{content:a,fixedCount:0,details:[]};c.sort((a,b)=>b.start-a.start);let e=a;for(let a of c)e=e.slice(0,a.start)+a.replacement+e.slice(a.end);return{content:e,fixedCount:c.length,details:c.map(a=>a.detail)}}function Y(a,b,c){let d=W(b,c);if(0===d.specTargets.size&&!d.scaleTarget&&!d.costTarget)return{fixedCount:0,details:[]};let e=0,f=[];for(let b of a){let a=X(b.content,d);a.fixedCount>0&&(b.content=a.content,e+=a.fixedCount,f.push(...a.details))}return{fixedCount:e,details:f}}function Z(a,b,c){let d=W(b,c);if(0===d.specTargets.size&&!d.scaleTarget&&!d.costTarget)return{markdown:a,fixedCount:0,details:[]};let e=X(a,d);return{markdown:e.content,fixedCount:e.fixedCount,details:e.details}}function $(a){let b=[],c=/(?:三检制|三级教育|三级管理|5S|24\s*小时|每日|每周|每月|一次|两次)/gu;for(let d of a){let a=[...new Set(d.content.match(c)||[])];a.length>=3&&!/责任人|检查记录|整改|复查|验收|台账|交底|巡查|闭环/u.test(d.content)&&b.push({level:"warning",message:`${d.title} 管理措施数字较多但缺少执行闭环:${a.slice(0,8).join("、")}`,suggestion:"这些管理数字可以保留,但需要补充责任主体、检查频次、记录台账、整改复查和闭环要求。"})}return b}function _(a){let b=/(?:加强组织领导|严格执行规范|落实责任制度|确保工程质量|强化过程管理|提高思想认识|完善管理体系|形成闭环管理)/gu,c=[];for(let d of a)(d.content.match(b)||[]).length>=6&&!/材料|工序|验收|复验|节点|风险|交底|隐蔽|检验批|进场/u.test(d.content)&&c.push({level:"error",message:`${d.title} 存在较多未绑定项目事实和工序控制点的泛化套话`,suggestion:"请替换为结合资料事实、施工对象、工序控制、验收资料和整改闭环的专业内容。"});return c}function aa(a,b){let c=[...b.project,...b.schedule,...b.quality,...b.safety,...b.resources,...b.preciseFacts,...b.bills,...b.drawings,...b.rules,...b.specifications].map(I).join("\n");if(80>(0,f.V7)(c))return[];let d=[],e=(0,g.K3)(c),h=[],i=[],j=[];for(let b of(0,g.zn)(a)){if(/^\d+\.\d+$/u.test(b))continue;let c=(0,g.K3)(b),d=a.indexOf(b);if(d<0)continue;let f=a.lastIndexOf("\n",d-1)+1,k=a.slice(f,0>a.indexOf("\n",d)?a.length:a.indexOf("\n",d));if(/^\s*\|/u.test(k.trim()))continue;let l=a.slice(Math.max(0,d-36),Math.min(a.length,d+b.length+36)),m=function(a,b){let c=`${a} ${b}`;return/三检制|三级|5S|24\s*小时|每日|每周|每月|一次|两次|责任制|制度/u.test(c)||/暂列金额|暂估价|报价|单价|合价|综合单价|税率|增值税|预留金/u.test(c)||/^\d+(?:\.\d+)?(?:月|年)$/u.test(a)&&/开工|竣工|日期|计划|年|月/u.test(b)?"soft":/总工期|计划工期|合同工期|日历天/u.test(c)||/最高投标限价|招标控制价|合同估算价|投资估算|报价|金额|万元|元/u.test(c)||/(?:建设规模|总建筑面积|总用地面积|总占地面积).{0,16}(?:m²|㎡|m2|平方米)/u.test(c)?"scope":/(?:工程量|清单|建设规模|建筑面积|长度|材料|设备|规格|型号).{0,24}(?:m²|㎡|m3|m³|米|吨|套|台|个|项|%)/u.test(c)?"spec":/GB\s*\d|JGJ\s*\d|CJJ\s*\d|ISO\s*\d|GB\/T|CECS\s*\d|DL\s*\d|YB\s*\d|SH\s*\d|SJ\/T\s*\d|CJJ\/T\s*\d|DB\s*\d/u.test(c)?"soft":/标准|规范|编号/u.test(c)?"spec":"soft"}(b,l);"scope"!==m||e.includes(c)||h.push(b),"spec"!==m||e.includes(c)||i.push(b),"soft"!==m||e.includes(c)||j.push(b)}let l=[...new Set(h)],m=[...new Set(i)],n=[...new Set(j)];return l.length>=1&&d.push({level:"error",message:`生成后事实反查失败:正文出现资料事实主表中未找到的总量口径数字 ${l.slice(0,8).join("、")}`,suggestion:"总量口径数字(工期/金额/建设规模)必须与资料一致;请删除或改写为资料确认的口径,禁止编造。"}),m.length>=2&&d.push({level:"warning",message:`生成后事实反查提示:正文出现资料事实主表中未找到的规格明细数字 ${m.slice(0,8).join("、")}`,suggestion:"建议复核这些规格是否来自管理制度、规范要求或资料事实;如无依据,改为定性管理要求。"}),n.length>=6&&d.push({level:"warning",message:`生成后事实反查提示:正文出现较多未在资料事实主表中反查到的管理数字 ${n.slice(0,10).join("、")}`,suggestion:"请确认这些管理数字属于通用制度、规范要求或项目资料事实;如无依据,建议改为定性管理要求。"}),/质量目标|质量标准/u.test(a)&&b.quality.length>0&&!b.quality.some(b=>a.includes((0,k.lG)(b.value).slice(0,18)))&&d.push({level:"warning",message:"生成后事实反查提示:正文质量目标表述未明显匹配质量事实主表",suggestion:"请使用资料中的质量目标原文或等价表述。"}),d}function ab(a){let b=[];for(let d of a){var c;let a=d.content;if(800>(0,f.V7)(a))continue;let e=/资料|招标|清单|图纸|标准|范围|工期|质量|验收/u.test(a)?2:+!!/项目|工程|要求/u.test(a),g=/首先|其次|同时|最后|一是|二是|流程|步骤|阶段|组织顺序/u.test(a)?2:+!!/并且|同时|然后|因此/u.test(a),h=/控制点|关键线路|复验|隐蔽验收|风险|交底|检验批|整改|闭环/u.test(a)?2:+!!/措施|要求|管理|检查/u.test(a),i=/责任人|检查|记录|验收|整改|复查|进场|调配|应急/u.test(a)?2:+!!/落实|执行|安排|组织/u.test(a),j=/本项目|本工程|招标范围|工程量|建设地点|计划工期|质量目标/u.test(a)?2:+!!/项目|工程/u.test(a),k=/工期|质量|安全|资源|验收/u.test(a)?2:+!!/目标|要求/u.test(a),l={factuality:e,structure:g,depth:h,executable:i,specificity:j,consistency:k},m=e+g+h+i+j+k,n=(c=d.title,/概况|工程|项目/u.test(c)?{min:5,focus:"事实依据、项目特异性"}:/部署|总体|组织/u.test(c)?{min:6,focus:"组织结构、可执行闭环、跨章一致性"}:/进度|工期/u.test(c)?{min:6,focus:"进度结构、工期一致性、纠偏机制"}:/质量/u.test(c)?{min:6,focus:"质量深度、验收复验、资料闭环"}:/安全|文明|危大|风险/u.test(c)?{min:6,focus:"风险覆盖、应急响应、检查整改"}:/资源|材料|设备|劳动力/u.test(c)?{min:5,focus:"资源依据、进场调配、进度支撑"}:{min:4,focus:"事实依据、专业深度、可执行性"});if(m<n.min){let a=Object.entries(l).filter(([,a])=>a<1).map(([a])=>a).join("、")||n.focus;b.push({level:"error",message:`${d.title} 专业评分不足:${m}/12,薄弱维度:${a}`,suggestion:`请按章节任务卡补齐${n.focus},并写出资料依据、实施流程、专业控制点和检查整改闭环。`})}}return b}function ac(a){let b=[{re:/进度|工期/u,need:/关键线路|穿插|纠偏|资源保障|节点|动态调整/u,message:"进度工期章节缺少关键线路、穿插施工或纠偏保障内容"},{re:/质量/u,need:/材料.*验收|复验|隐蔽验收|整改.*复验|质量.*资料|检验批/u,message:"质量章节缺少材料验收复验、隐蔽验收或整改复验闭环"},{re:/安全|文明|危大|风险/u,need:/风险|临电|消防|应急|检查.*整改|文明施工|人员|设备/u,message:"安全文明章节缺少风险识别、现场控制或应急检查闭环"},{re:/资源|材料|设备|劳动力/u,need:/进场|验收|调配|保管|供应|投入计划/u,message:"资源章节缺少进场、验收、调配或保管计划"},{re:/施工|工艺|技术|方案/u,need:/准备|流程|工艺|控制点|验收|交底/u,message:"施工技术章节缺少施工准备、工艺流程、控制点或验收要求"}],c=[];for(let d of a){let a=d.content;for(let e of b)e.re.test(d.title)&&(0,f.V7)(a)>=600&&!e.need.test(a)&&c.push({level:"error",message:`${d.title}:${e.message}`,suggestion:"请按专业任务卡定向补写该章节,补齐可实施的控制措施、资料依据和闭环要求。"})}return c}function ad(a,b){return!!(/万元|元|报价|单价|合价|综合单价|预留金|税率|增值税|利润|结算/u.test(`${a} ${b}`)||/OCR|识别错误|乱码|无法确认|疑似|不确定|语义断裂|页码|目录/u.test(b)||/^\d+$/.test(a)&&10>Number(a)||/之日起.{0,8}天内|天内.{0,10}(?:发出|提交|通知|回复|答复|完成|开工|竣工|报送|支付|更换)|天以上|天及以上|‰|暂扣|履约保证金|通过后.{0,6}天|因发包人原因|因承包人原因|未能按时|逾期|违约金/u.test(b))}function ae(a,b){let c=0;for(let d of a)b.includes(d.replace(e.ug,""))&&(c+=1);return c}let af=/日历天|个月|㎡|m²|m3|m³|MPa|kPa|kN|GB\/T|GB|JGJ|ISO|DN|φ|Φ|米\/秒|天$/u;function ag(a,b,c=[]){let d=[],f=a.replace(e.ug,""),g=function(a){let b=new Set;for(let c of a)for(let a of c.evidence||[]){if(/bill_of_quantities|boq/u.test(`${a.roleId||""}`))continue;let c="string"==typeof a.content?a.content:"";for(let a of c.matchAll(e.No)){let d=a[0].trim();if(!d||/^\d{4}\s*年$/u.test(d)||/^\d{1,2}\s*月$/u.test(d))continue;let e=a.index||0,f=c.slice(Math.max(0,e-40),e+d.length+40);ad(d,f)||b.add(d)}}return[...b]}(c),h=g.length>=e.mu?g:function(a){let b=new Set;for(let c of a.preciseFacts){if("bill_of_quantities"===c.roleId)continue;let a=`${c.processingType||""} ${c.roleId} ${c.sourceFile}`;if(!e.FM.test(a)&&"precise_fact"!==c.roleId)continue;let d=`${c.key} ${c.fieldName||""} ${c.value}`;for(let a of d.matchAll(e.No)){let c=a[0].trim();ad(c,d)||b.add(c)}}return[...b]}(b),i=ae(h,f);h.length>=e.mu&&i/h.length<e.tg&&d.push({level:"warning",message:`可靠精确参数使用不足:${i}/${h.length}`,suggestion:"请将资料中可靠的规格、参数、数量、时间、比例和标准编号写入对应章节;商务金额、单价、税率、预留金不得写入正文。"});let j=function(a){let b=[...a].sort((a,b)=>a.localeCompare(b,"zh")),c=b.filter(a=>af.test(a)),d=b.filter(a=>!af.test(a));return[...c.slice(0,8),...d.slice(0,2)].slice(0,10)}(h);if(j.length>=6){let a=ae(j,f);if(a/j.length<.5){let b=j.filter(a=>!f.includes(a.replace(e.ug,""))).slice(0,3);d.push({level:"error",message:`可靠精确参数使用不足:关键参数抽查 ${a}/${j.length}${b.length?`(缺失如 ${b.join("、")})`:""}`,suggestion:"请将资料中的关键工程参数(工期、面积、强度等级、材料规格、规范编号等)写入正文对应章节,不得因参数总量达标而遗漏核心参数。"})}}return b.bills.length>0&&!e.pP.test(a)&&d.push({level:"error",message:"正文未体现结构化数据资料",suggestion:"请从表格、列表或明细中提取对象、单位、数量、规格和关键参数补入对应章节。"}),b.drawings.length>0&&!e._U.test(a)&&d.push({level:"error",message:"正文未体现设计/方案/说明类资料",suggestion:"请从设计、方案或说明资料中提取对象、流程、节点、做法、配置、规则和标准要求。"}),d}function ah(a,b,c){let d=[],e=c.tables||[];if(0===e.length)return d;let f=a.replace(/\s+/gu,"").toLowerCase(),g=0,h=0,i=[];for(let a of e){let b=a.headers.map(a=>a.replace(/\s+/gu,"").toLowerCase()),c=b.findIndex(a=>/项目名称|^名称$|清单项|分部分项|项目特征/u.test(a)),d=b.findIndex(a=>/项目编码|编码|编号/u.test(a)),e=b.findIndex(a=>/^工程量$|^数量$/u.test(a));for(let b of a.rows){g+=1;let a=c>=0?(b[c]||"").replace(/\s+/gu,""):"",j=d>=0?(b[d]||"").replace(/\s+/gu,""):"",k=e>=0?(b[e]||"").replace(/\s+/gu,""):"",l=a.length>=3?a.slice(0,Math.min(a.length,16)):"",m=j.length>=3?j.slice(0,Math.min(j.length,12)):"",n=l&&f.includes(l),o=m&&f.includes(m);n||o?h+=1:a.length>=3&&i.push(`${a.slice(0,40)}${k?` ${k}`:""}(未落位)`)}}if(g>0){let a=h/g,b=i.length>0?`未落位项(共${i.length}项):${i.slice(0,12).join(";")}${i.length>12?` 及其他${i.length-12}项`:""}`:"";a<.3?d.push({level:"warning",message:`清单项落位严重不足:${h}/${g} 项(${Math.round(100*a)}%)`,suggestion:`清单明细数量较大,建议优先补充主要分部分项、关键规格和大额工程量。${b}`}):a<.6&&d.push({level:"warning",message:`清单项落位不足:${h}/${g} 项(${Math.round(100*a)}%)`,suggestion:`建议补充落位以下清单项:${b}`})}return d}function ai(a,b){let c=[],d=b.drawings||[];if(0===d.length)return c;let e=a.replace(/\s+/gu,"").toLowerCase(),f=[...new Set(d.map(a=>a.sourceFile||"").filter(Boolean))],g=0,h=[];for(let a of f){let b=a.replace(/\.[^.]+$/u,"").replace(/[/\\]/gu,"").toLowerCase(),c=a.split("/").pop()||a;(b.length>=3?e.includes(b.slice(0,Math.min(b.length,12))):/图纸|设计|说明|节点|做法|构造/u.test(e))?g+=1:h.push(c)}if(f.length>0){let a=g/f.length;a<.25?c.push({level:"warning",message:`图纸引用严重不足:${g}/${f.length} 份图纸被正文引用(${Math.round(100*a)}%)`,suggestion:`建议将图纸中的设计说明、构造做法、材料规格和设备参数写入对应章节。未引用图纸:${h.slice(0,5).join("、")}`}):a<.5&&c.push({level:"warning",message:`图纸引用不足:${g}/${f.length} 份(${Math.round(100*a)}%)`,suggestion:`建议补充引用:${h.slice(0,5).join("、")}`})}return c}function aj(a){let b=[];for(let c of(/【本小节生成未达标,需重新生成】/u.test(a)&&b.push({level:"error",message:"生成未完成:存在未达标小节,需要重新生成或补写后才能导出",suggestion:"请重新生成未达标小节,禁止将占位内容作为正式正文。"}),e.IA))c.test(a)&&b.push({level:"warning",message:`存在占位式表达:${c.source}`,suggestion:"请改写为来自资料的准确事实;资料确实未提供时,改写为正式管理措施,不留空值或“见资料/按文件”。"});return b}function ak(a,b){for(let c of b)try{if(RegExp(c,"iu").test(a))return!0}catch{if(a.includes(c))return!0}return!1}function al(a,b){let c=`${b.name} ${b.category} ${b.outputTitle} ${b.description}`,f=[];for(let a of(0,d.V)().autoSpecGates)ak(c,a.templateMatchers)&&f.push(a);if(0===f.length)return[];let g=[],h=r(a).length,i=0;for(let b of f){for(let c of(i=Math.max(i,b.minTables||0),b.requiredTexts))a.includes(c)||g.push({level:"warning",message:`配置要求缺少必要内容:${c}`,suggestion:"请按当前模板匹配的专业规则补齐必要内容。"});for(let c of b.forbiddenTexts)(function(a,b){let c="见图纸"===b||"按图纸"===b?["目录","清单","索引","汇总"]:[],d=0;for(;;){let e=a.indexOf(b,d);if(e<0)return!1;let f=a.slice(e+b.length);if(c.some(a=>f.startsWith(a))){d=e+b.length;continue}return!0}})(a,c)&&g.push({level:"error",message:`配置要求不得出现:${c}`,suggestion:"请根据当前模板匹配的专业规则清理正文污染内容。"})}return e.bu.test(a)&&g.push({level:"error",message:"正式正文存在 Markdown 标题符号 #",suggestion:"导出正文应去除 Markdown 标题符号,保留正式标题文字。"}),i&&h<i&&g.push({level:"warning",message:`配置要求正式表格不足:${h}/${i}`,suggestion:"如用户提示词或章节内容要求表格,应按项目资料补充对应表格本体。"}),g}function am(a){let b=`${a.name} ${a.category} ${a.outputTitle} ${a.description}`,c=new Set;for(let a of(0,d.V)().autoSpecGates)if(ak(b,a.templateMatchers))for(let b of a.requiredTexts)b&&c.add(b);return[...c]}function an(a,b,c,d,g,h,j){var k;if(!a)return b;let l=[...b],m=function(a){let b=[...a.project,...a.schedule,...a.quality,...a.safety,...a.resources];for(let c of Object.values(a.schemaFacts))b.push(...c);return b}(c),n=function(a,b){let c=new Set;for(let a of b)c.add(a.key),a.fieldName&&c.add(a.fieldName);for(let b of a.tables){for(let a of b.headers)c.add(a);for(let a of b.rows)for(let b of a)c.add(b)}return c}(c,m),o=new Set(d.map(a=>a.title));for(let b of a.factFields){if(!b.required||(k=b.name,/国家法律法规|地方法规|规章|规范标准|标准规范|行业标准|现行规范|法律法规|合规|施工方法|工艺流程|质量控制|安全文明|应急|劳动力|材料投入|机械设备|检测仪器|关键节点/u.test(k)))continue;let a=c.schemaFacts[b.id]||[],e=!1,f=!b.sourceRoleIds?.length||a.some(a=>b.sourceRoleIds?.includes(a.roleId));for(let a of d){if(e&&f)break;for(let c of a.evidence)!e&&!a.missingFacts.includes(b.name)&&(0,i.I2)(c,b)&&(e=!0),!f&&(0,i.I2)(c,b)&&(f=!0)}0!==a.length||n.has(b.name)||e||l.push({level:"warning",message:`系统暂未从知识库确认必需事实:${b.name}`,suggestion:b.extractionHint||"请扩大本地知识库检索、执行事实补抽,或调整事实字段配置。"}),f||l.push({level:"warning",message:`必需事实来源角色不匹配:${b.name}`,suggestion:`请确认该事实来自角色:${b.sourceRoleIds?.join("、")}`})}for(let b of a.chapterRules){let a=d.find(a=>a.title===b.title);a&&b.minWords&&a.content.length<b.minWords&&l.push({level:"warning",message:`章节内容深度建议:${b.title}`,suggestion:`可扩展到约 ${b.minWords} 字,但不要改变模板章节结构。`})}let p=r(g),q=function(a){let b=[];for(let c of a.matchAll(e.gW))b.push({alt:c[1]||"",url:c[2]||"",index:c.index??0});return b}(g),s=(0,f.Cv)(g);for(let b of a.gateRules){let a=b.evaluator?b.evaluator:e.cA[b.type]?.(b)??{subject:"document",operator:"contains",value:b.value||b.target},f=a.target||b.target||"",i=a.value||b.value||f,k=d.find(a=>a.title===f),r=function(a){for(let c of e.Lp){let d=c(a);if(d){var b;return{level:a.rule.level,message:(b=a.rule,`${b.name}:${d}`)}}}}({rule:b,evaluator:a,target:f,value:i,min:a.min||Number(b.value)||1,markdown:g,textScope:"chapter"===a.subject&&k?k.content:g,regex:i?function(a){try{return RegExp(a,"iu")}catch{return}}(i):void 0,chapter:k,factNames:n,chapterTitles:o,tableBlocks:p,imageRefs:q,estimatedPages:s,allFacts:m,factsModel:c,projectBindings:h,promptBindings:j});r&&l.push(r)}return l}function ao(a,b){let c=function(a){let b="";for(let c of(0,j.dU)(a))c.content&&(b+=`${c.content}
|
|
2
2
|
|
|
3
3
|
`);return b}(b);if(!c.trim())return[];let d=a.replace(e.ug," ");for(let a of c.matchAll(e.QX)){let b=(a[1]||"").replace(e.ug," ").trim();if(b&&d.includes(b))return[{level:"error",message:"正文疑似包含提示词示例内容",suggestion:"请删除提示词样例数据,仅保留基于当前绑定材料生成的正文。"}]}return[]}},34680:(a,b,c)=>{c.d(b,{JP:()=>m,Tz:()=>q,X6:()=>o,Zk:()=>n,fC:()=>r,l8:()=>p});var d=c(73024),e=c(76760),f=c(74329);c(25840),c(23500);var g=c(70933),h=c(70208),i=c(61373),j=c(78217);c(23760);var k=c(95734),l=c(22157);function m(a){let b=a.template.chapters.length,c=b>0?a.targetWords/b:a.targetWords,d=`${a.template.name}
|
|
4
4
|
${a.template.category||""}
|