@customize-agent/server 4.58.0 → 4.59.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/BUILD_ID +1 -1
- package/.next/build-manifest.json +132 -143
- package/.next/prerender-manifest.json +3 -3
- package/.next/routes-manifest.json +117 -9
- package/.next/server/chunks/1001.js +56 -0
- package/.next/server/chunks/1928.js +1 -1
- package/.next/server/chunks/1936.js +2 -2
- package/.next/server/chunks/2434.js +4 -0
- package/.next/server/chunks/299.js +50 -0
- package/.next/server/chunks/5547.js +350 -0
- package/.next/server/chunks/6087.js +3 -0
- package/.next/server/chunks/6321.js +3 -0
- package/.next/server/chunks/8204.js +1 -1
- 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/api/assets/generated/preview.js +1 -1
- package/.next/server/pages/api/assets/generated/preview.js.nft.json +1 -1
- package/.next/server/pages/api/assets/generated.js +1 -1
- package/.next/server/pages/api/assets/generated.js.nft.json +1 -1
- package/.next/server/pages/api/config/embedding/healthCheck.js.nft.json +1 -1
- package/.next/server/pages/api/config/healthCheck.js +2 -2
- package/.next/server/pages/api/config/providers.js +2 -2
- package/.next/server/pages/api/documents/canvas/[id].js +2 -0
- package/.next/server/pages/api/documents/canvas/[id].js.nft.json +1 -0
- package/.next/server/pages/api/documents/export.js +3 -3
- package/.next/server/pages/api/documents/export.js.nft.json +1 -1
- package/.next/server/pages/api/documents/generate/preview.js +2 -0
- package/.next/server/pages/api/documents/generate/preview.js.nft.json +1 -0
- package/.next/server/pages/api/documents/generate.js +2 -2
- package/.next/server/pages/api/documents/generate.js.nft.json +1 -1
- package/.next/server/pages/api/documents/generated/[id]/events.js +10 -0
- package/.next/server/pages/api/documents/generated/[id]/events.js.nft.json +1 -0
- package/.next/server/pages/api/documents/generated/[id]/figure/[name].js +1 -0
- package/.next/server/pages/api/documents/generated/[id]/figure/[name].js.nft.json +1 -0
- package/.next/server/pages/api/documents/generated/[id]/nodes/[nodeId].js +2 -0
- package/.next/server/pages/api/documents/generated/[id]/nodes/[nodeId].js.nft.json +1 -0
- package/.next/server/pages/api/documents/generated/[id]/nodes.js +2 -0
- package/.next/server/pages/api/documents/generated/[id]/nodes.js.nft.json +1 -0
- package/.next/server/pages/api/documents/generated/[id]/pause.js +2 -0
- package/.next/server/pages/api/documents/generated/[id]/pause.js.nft.json +1 -0
- package/.next/server/pages/api/documents/generated/[id]/preview.js +2 -0
- package/.next/server/pages/api/documents/generated/[id]/preview.js.nft.json +1 -0
- package/.next/server/pages/api/documents/generated/[id]/repair/[rid]/confirm.js +1 -0
- package/.next/server/pages/api/documents/generated/[id]/repair/[rid]/confirm.js.nft.json +1 -0
- package/.next/server/pages/api/documents/generated/[id]/repair/[rid]/rollback.js +1 -0
- package/.next/server/pages/api/documents/generated/[id]/repair/[rid]/rollback.js.nft.json +1 -0
- package/.next/server/pages/api/documents/generated/[id]/repair.js +1 -0
- package/.next/server/pages/api/documents/generated/[id]/repair.js.nft.json +1 -0
- package/.next/server/pages/api/documents/generated/[id]/resume-generate.js +2 -0
- package/.next/server/pages/api/documents/generated/[id]/resume-generate.js.nft.json +1 -0
- package/.next/server/pages/api/documents/generated/[id].js +2 -2
- package/.next/server/pages/api/documents/generated/[id].js.nft.json +1 -1
- package/.next/server/pages/api/documents/generated.js +1 -1
- package/.next/server/pages/api/documents/generated.js.nft.json +1 -1
- package/.next/server/pages/api/jobs/[id].js +1 -1
- package/.next/server/pages/api/jobs/[id].js.nft.json +1 -1
- package/.next/server/pages/api/jobs.js +1 -1
- package/.next/server/pages/api/jobs.js.nft.json +1 -1
- package/.next/server/pages/api/kb/categories.js +2 -2
- package/.next/server/pages/api/kb/categories.js.nft.json +1 -1
- package/.next/server/pages/api/kb/duplicates.js +2 -2
- package/.next/server/pages/api/kb/duplicates.js.nft.json +1 -1
- package/.next/server/pages/api/kb/evaluate.js +3 -3
- package/.next/server/pages/api/kb/evaluate.js.nft.json +1 -1
- package/.next/server/pages/api/kb/files/detail.js +4 -4
- package/.next/server/pages/api/kb/files/detail.js.nft.json +1 -1
- package/.next/server/pages/api/kb/files/export.js +3 -3
- package/.next/server/pages/api/kb/files/export.js.nft.json +1 -1
- package/.next/server/pages/api/kb/files/open.js +2 -2
- package/.next/server/pages/api/kb/files/open.js.nft.json +1 -1
- package/.next/server/pages/api/kb/files/preview-pdf-page.js +1 -1
- package/.next/server/pages/api/kb/files/preview-pdf-page.js.nft.json +1 -1
- package/.next/server/pages/api/kb/files/reindex.js +1 -1
- package/.next/server/pages/api/kb/files/reindex.js.nft.json +1 -1
- package/.next/server/pages/api/kb/files/search.js +3 -3
- package/.next/server/pages/api/kb/files/search.js.nft.json +1 -1
- package/.next/server/pages/api/kb/files/tree.js +3 -3
- package/.next/server/pages/api/kb/files/tree.js.nft.json +1 -1
- package/.next/server/pages/api/kb/files.js +4 -4
- package/.next/server/pages/api/kb/files.js.nft.json +1 -1
- package/.next/server/pages/api/kb/ignore.js +2 -2
- package/.next/server/pages/api/kb/ignore.js.nft.json +1 -1
- package/.next/server/pages/api/kb/intelligence.js +1 -1
- package/.next/server/pages/api/kb/intelligence.js.nft.json +1 -1
- package/.next/server/pages/api/kb/material-groups.js +2 -0
- package/.next/server/pages/api/kb/material-groups.js.nft.json +1 -0
- package/.next/server/pages/api/kb/operations.js +1 -1
- package/.next/server/pages/api/kb/operations.js.nft.json +1 -1
- package/.next/server/pages/api/kb/reindex.js +1 -1
- package/.next/server/pages/api/kb/reindex.js.nft.json +1 -1
- package/.next/server/pages/api/kb/search.js +2 -2
- package/.next/server/pages/api/kb/search.js.nft.json +1 -1
- package/.next/server/pages/api/kb/stats.js +2 -2
- package/.next/server/pages/api/kb/stats.js.nft.json +1 -1
- package/.next/server/pages/api/kb/tags.js +1 -1
- package/.next/server/pages/api/kb/tags.js.nft.json +1 -1
- package/.next/server/pages/api/kb/upload/complete.js +1 -1
- package/.next/server/pages/api/kb/upload/complete.js.nft.json +1 -1
- package/.next/server/pages/api/kb/upload/progress.js +2 -2
- package/.next/server/pages/api/kb/upload/progress.js.nft.json +1 -1
- package/.next/server/pages/api/kb/upload.js +1 -1
- package/.next/server/pages/api/kb/upload.js.nft.json +1 -1
- package/.next/server/pages/api/prompt.js +1 -1
- package/.next/server/pages/api/prompt.js.nft.json +1 -1
- package/.next/server/pages/api/skills/[id].js +1 -0
- package/.next/server/pages/api/skills/[id].js.nft.json +1 -0
- package/.next/server/pages/api/skills/validate.js +1 -0
- package/.next/server/pages/api/skills/validate.js.nft.json +1 -0
- package/.next/server/pages/api/skills.js +1 -0
- package/.next/server/pages/api/skills.js.nft.json +1 -0
- package/.next/server/pages/api/system/logs.js +2 -2
- package/.next/server/pages/api/system/stats.js +1 -1
- package/.next/server/pages/canvas/[id].html +1 -0
- package/.next/server/pages/canvas/[id].js.nft.json +1 -0
- package/.next/server/pages/canvas.html +1 -0
- package/.next/server/pages/canvas.js.nft.json +1 -0
- package/.next/server/pages/documents.html +1 -1
- package/.next/server/pages/documents.js.nft.json +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/files.js.nft.json +1 -1
- package/.next/server/pages/knowledge/manage.html +1 -1
- package/.next/server/pages/knowledge/manage.js.nft.json +1 -1
- package/.next/server/pages/knowledge.html +1 -1
- package/.next/server/pages/knowledge.js.nft.json +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/skills.html +1 -0
- package/.next/server/pages/system/logs.html +1 -1
- package/.next/server/pages-manifest.json +41 -28
- package/.next/static/4xQDkixSretJDM503EzIq/_buildManifest.js +1 -0
- package/.next/static/chunks/127-20f09f6ebe1e6c1f.js +1 -0
- package/.next/static/chunks/174-1bc48f295d7dd075.js +10 -0
- package/.next/static/chunks/189-3f4f4e237056adaf.js +4 -0
- package/.next/static/chunks/243-03eba51d5d737e98.js +1 -0
- package/.next/static/chunks/269-7a3502478bf67fff.js +11 -0
- package/.next/static/chunks/289-0cccd8131332e041.js +78 -0
- package/.next/static/chunks/310-6c678cb70e4ba2d6.js +19 -0
- package/.next/static/chunks/422-46f07037c58d2309.js +1 -0
- package/.next/static/chunks/426-22c4cedb04b0d45d.js +21 -0
- package/.next/static/chunks/445-d12731f107978b10.js +6 -0
- package/.next/static/chunks/530-6f3f5848c6f702ae.js +1 -0
- package/.next/static/chunks/569-2bfdde9e402af5b2.js +16 -0
- package/.next/static/chunks/700-5d29b0475311f590.js +1 -0
- package/.next/static/chunks/709-a7c652953ccd3b4b.js +1 -0
- package/.next/static/chunks/787-207289f4bb577708.js +10 -0
- package/.next/static/chunks/795-9e0cb0bb11e8c89f.js +1 -0
- package/.next/static/chunks/914-292edce0ba2a212d.js +1 -0
- package/.next/static/chunks/{framework-161be364fd69a7ce.js → framework-4b565b3ddc94cdac.js} +1 -1
- package/.next/static/chunks/main-0c91f573696223ca.js +1 -0
- package/.next/static/chunks/pages/_app-ebb535779b63fd5d.js +185 -0
- package/.next/static/chunks/pages/canvas/[id]-515edd3e72acaf82.js +1 -0
- package/.next/static/chunks/pages/canvas-323d44fe56d685a7.js +1 -0
- package/.next/static/chunks/pages/documents-e6a80f2de39c6fd2.js +1 -0
- package/.next/static/chunks/pages/guide-7367305082617e3c.js +1 -0
- package/.next/static/chunks/pages/knowledge/file-detail-aee7c15541d1d130.js +1 -0
- package/.next/static/chunks/pages/knowledge/files-b3ef5324e4b74c4a.js +1 -0
- package/.next/static/chunks/pages/knowledge/manage-d9eaebf3a8307953.js +1 -0
- package/.next/static/chunks/pages/knowledge-09dde24cdce1b195.js +1 -0
- package/.next/static/chunks/pages/models-8b96ba85131d5408.js +1 -0
- package/.next/static/chunks/pages/prompt-6a224562d194cb45.js +1 -0
- package/.next/static/chunks/pages/settings-0a7709bf039a2a4d.js +1 -0
- package/.next/static/chunks/pages/skills-3d77213c3e9ef0b5.js +1 -0
- package/.next/static/chunks/pages/system/logs-70790bee46e5a08d.js +1 -0
- package/.next/static/chunks/webpack-6224d37324e372cb.js +1 -0
- package/.next/static/css/85c434f8fd3a17ae.css +1 -0
- package/messages/en-US.json +108 -344
- package/messages/zh-CN.json +109 -345
- package/package.json +6 -5
- package/scripts/capture-baseline.mjs +541 -0
- package/scripts/half-built-scan.mjs +150 -0
- package/.next/server/chunks/208.js +0 -136
- package/.next/server/chunks/4435.js +0 -250
- package/.next/server/chunks/5840.js +0 -1
- package/.next/server/pages/api/documents/drafts.js +0 -1
- package/.next/server/pages/api/documents/drafts.js.nft.json +0 -1
- package/.next/server/pages/api/documents/refine.js +0 -13
- package/.next/server/pages/api/documents/refine.js.nft.json +0 -1
- package/.next/server/pages/api/documents/roles.js +0 -1
- package/.next/server/pages/api/documents/roles.js.nft.json +0 -1
- package/.next/server/pages/api/documents/templates.js +0 -1
- package/.next/server/pages/api/documents/templates.js.nft.json +0 -1
- package/.next/server/pages/asset-library.html +0 -1
- package/.next/server/pages/document-roles.html +0 -1
- package/.next/server/pages/document-roles.js.nft.json +0 -1
- package/.next/static/2vWd2mBe-maL25SFytCur/_buildManifest.js +0 -1
- package/.next/static/chunks/195-2c0168eacab722d2.js +0 -1
- package/.next/static/chunks/289-35ac595388bbd018.js +0 -78
- package/.next/static/chunks/44-d3545eedd5c75ef1.js +0 -4
- package/.next/static/chunks/455-e1b41ac4946d2b6f.js +0 -6
- package/.next/static/chunks/563-b12f299d34bb9e44.js +0 -1
- package/.next/static/chunks/665-88e20299084b9e73.js +0 -1
- package/.next/static/chunks/7-20bcc985742a9ae1.js +0 -10
- package/.next/static/chunks/717-743b697a417dd5ee.js +0 -4
- package/.next/static/chunks/760-f8bb8e969c5e0d57.js +0 -1
- package/.next/static/chunks/787-c18af810af3433f6.js +0 -25
- package/.next/static/chunks/788-3afeb069ed706ac0.js +0 -1
- package/.next/static/chunks/795-cd94e8d4e9768eb9.js +0 -1
- package/.next/static/chunks/81-c3a7f04d96ea3f7d.js +0 -1
- package/.next/static/chunks/827-a6dc09e42833e6a3.js +0 -1
- package/.next/static/chunks/883-506cbca959974997.js +0 -16
- package/.next/static/chunks/986-49b865de7906320a.js +0 -8
- package/.next/static/chunks/994-241f87efc61005b8.js +0 -4
- package/.next/static/chunks/main-91fb767ebd74c9c1.js +0 -1
- package/.next/static/chunks/pages/_app-66149ba52ad1dc26.js +0 -185
- package/.next/static/chunks/pages/asset-library-a1047694e888e655.js +0 -1
- package/.next/static/chunks/pages/document-roles-5620a98d6312f81c.js +0 -1
- package/.next/static/chunks/pages/documents-d60a47643f5bd6b4.js +0 -1
- package/.next/static/chunks/pages/guide-a411c554520b7109.js +0 -1
- package/.next/static/chunks/pages/knowledge/file-detail-fe69eb38d70adea0.js +0 -1
- package/.next/static/chunks/pages/knowledge/files-8e25066889a85834.js +0 -1
- package/.next/static/chunks/pages/knowledge/manage-d0d0e0716e9d705b.js +0 -1
- package/.next/static/chunks/pages/knowledge-905248d8dcb15453.js +0 -1
- package/.next/static/chunks/pages/models-6ef838f3e00ba21e.js +0 -1
- package/.next/static/chunks/pages/prompt-5e1fb81efc656866.js +0 -1
- package/.next/static/chunks/pages/settings-810eb1a6cf1a6b02.js +0 -1
- package/.next/static/chunks/pages/system/logs-6f45ef8d862759a2.js +0 -1
- package/.next/static/chunks/webpack-4224e970a97a4a86.js +0 -1
- package/.next/static/css/18018ee565a1deba.css +0 -1
- /package/.next/server/pages/{asset-library.js.nft.json → skills.js.nft.json} +0 -0
- /package/.next/static/{2vWd2mBe-maL25SFytCur → 4xQDkixSretJDM503EzIq}/_ssgManifest.js +0 -0
|
@@ -1,136 +0,0 @@
|
|
|
1
|
-
"use strict";exports.id=208,exports.ids=[208],exports.modules={2773:(a,b,c)=>{c.d(b,{$b:()=>B,Hz:()=>y,O:()=>t,SK:()=>C,W9:()=>w,_W:()=>z,_n:()=>x,qp:()=>v});var d=c(76760),e=c(19898),f=c(81892),g=c(44533),h=c(70963),i=c(70933),j=c(14070),k=c(51144),l=c(32434);let m=["tender_document","bill_of_quantities","drawing","addendum","contract","technical_specification","schedule_document","quality_safety_document","other"],n={tender_document:"招标文件正文",bill_of_quantities:"工程量清单",drawing:"图纸/设计资料",addendum:"补疑/澄清/答疑",contract:"合同资料",technical_specification:"技术规范/技术要求",schedule_document:"工期/进度资料",quality_safety_document:"质量安全文明资料",other:"其他资料"},o={addendum:100,tender_document:90,contract:80,technical_specification:75,bill_of_quantities:70,drawing:65,schedule_document:60,quality_safety_document:60,other:10};function p(a){return n[a]||"其他资料"}function q(a){return a.replace(/\\/gu,"/").replace(/^\/+|\/+$/gu,"")}function r(a){let b=q(a).split("/").filter(Boolean);return b.length>1?b[0]:d.basename(b[0]||"当前项目")}function s(a){return a.replace(/[\s_\-—()()【】、,,.。·]/gu,"").replaceAll("[","").replaceAll("]","").toLowerCase()}function t(a){let b=q(a).toLowerCase(),c=[],d=(d,e)=>(d.lastIndex=0,(!!d.test(a)||!!d.test(b))&&(c.push(e),!0));return d(/补疑|答疑|澄清|疑问回复|答复|变更|更正|补充通知|addendum|clarification/iu,"补疑/澄清关键词")?{kind:"addendum",confidence:.92,signals:c}:d(/清单|工程量|分部分项|措施项目|项目特征|招标控制价|boq|bill.?of.?quantities/iu,"清单/工程量关键词")?{kind:"bill_of_quantities",confidence:.9,signals:c}:d(/图纸|施工图|建筑图|结构图|安装图|设计图|总平|平面图|立面图|剖面图|节点|dwg|drawing|cad/iu,"图纸/设计关键词")?{kind:"drawing",confidence:.88,signals:c}:d(/招标文件|投标人须知|评标办法|招标公告|招标正文|招标需求|tender|bidding/iu,"招标文件关键词")?{kind:"tender_document",confidence:.9,signals:c}:d(/合同|协议书|专用条款|通用条款|contract/iu,"合同关键词")?{kind:"contract",confidence:.82,signals:c}:d(/技术规范|技术要求|施工规范|验收规范|标准|做法说明|specification|standard/iu,"技术规范关键词")?{kind:"technical_specification",confidence:.8,signals:c}:d(/工期|进度|计划|节点|里程碑|schedule/iu,"工期进度关键词")?{kind:"schedule_document",confidence:.72,signals:c}:d(/质量|安全|文明|环保|危大|验收|quality|safety/iu,"质量安全关键词")?{kind:"quality_safety_document",confidence:.72,signals:c}:{kind:"other",confidence:.35,signals:["未命中明确资料类型,按其他资料处理"]}}function u(a,b){let c=(b||"").trim();if(!c)return{files:a,roots:[...new Set(a.map(a=>r(a.relativePath)).filter(Boolean))],scoped:!1};let d=new Map;for(let b of a){let a=r(b.relativePath);a&&d.set(a,[...d.get(a)||[],b])}let e=[...d.entries()].map(([a,b])=>({group:a,groupFiles:b,score:function(a,b){let c=s(a),d=s(b);if(c.length>=4&&d.includes(c.slice(0,Math.min(16,c.length))))return 100;let e=new Set(["项目","工程","施工","总承包","资料","招标","图纸","清单"]);return a.split(/(?:\s|_|-|—|(|)|\(|\)|【|】|\[|\]|、|,|,|\.)+/u).filter(a=>a.length>=2&&!e.has(a)).reduce((a,c)=>a+(b.includes(c)?Math.min(20,c.length):0),0)}(a,c)})).filter(a=>a.score>0).sort((a,b)=>b.score-a.score);return e.length>0&&(1===e.length||e[0].score>e[1].score)?{files:e[0].groupFiles,roots:[e[0].group],scoped:!0}:{files:a,roots:[...d.keys()],scoped:!1}}function v(a){return(a.projectBindings||[]).filter(a=>a.materialRootPath).map(a=>({materialRootPath:q(a.materialRootPath)}))}function w(a,b,c={}){let e=function(a,b,c){let d=a.filter(l.PZ),e=(b||[]).map(a=>q(a.materialRootPath)).filter(Boolean);if(e.length>0){let a=d.filter(a=>e.some(b=>q(a.relativePath)===b||q(a.relativePath).startsWith(`${b}/`))),b=u(a,c);return{files:b.files,roots:b.roots.length?b.roots:e,warnings:0===a.length?["项目资料包下未找到已完成索引的可用文件。"]:[]}}let f=u(d,c);return f.scoped?{files:f.files,roots:f.roots,warnings:[]}:{files:d,roots:[...new Set(d.map(a=>r(a.relativePath)).filter(Boolean))],warnings:["模板未显式绑定项目资料包,已使用当前知识库全部可用资料。"]}}((0,g.Yy)(a),v(b),c.requirement),f={tender_document:[],bill_of_quantities:[],drawing:[],addendum:[],contract:[],technical_specification:[],schedule_document:[],quality_safety_document:[],other:[]},h=e.files.map(a=>{let b=t(a.relativePath),c={filePath:a.relativePath,fileName:d.basename(a.relativePath),kind:b.kind,confidence:b.confidence,priority:o[b.kind],chunkCount:a.chunkCount,summary:`${p(b.kind)}:${d.basename(a.relativePath)},可用切片 ${a.chunkCount||0} 条。`,keySignals:b.signals};return f[b.kind].push(c),c}).sort((a,b)=>b.priority-a.priority||b.confidence-a.confidence),i=(e.roots[0]||r(h[0]?.filePath||"")||"当前知识库项目").replace(/\.(?:pdf|docx?|xlsx?|xls|dwg|zip)$/iu,"").replace(/^\d+(?:\.\d+)?[-_\s]*/u,"").trim(),j=[...e.warnings];return 0===f.tender_document.length&&j.push("未识别到招标文件正文,工程概况、招标响应和评审要求可能不足。"),0===f.bill_of_quantities.length&&j.push("未识别到工程量清单,施工范围、资源配置和主要工程内容可能不足。"),0===f.drawing.length&&j.push("未识别到图纸/设计资料,施工方法、专业接口和构造做法可能不足。"),{projectName:i,materialRoots:e.roots,files:h,groups:f,warnings:j}}function x(a,b,c){let d=c?(0,h.C)(c):"",e=[`本次文档必须围绕项目资料包”${b.projectName}”展开,不得把其他项目资料混入正文。`,"招标文件正文用于确定项目边界、招标响应、工期质量安全目标和评审关注点。","招标硬性要求必须逐项明确响应:质量标准、计划工期、缺陷责任期与保修、安全文明目标、项目经理及组织机构;工期/质量/保修类承诺可在概况与质量章节落位,不得遗漏。","工程量清单用于确定主要工程内容、分部分项、项目特征、资源配置和施工方法依据。","图纸/设计资料用于确定施工对象、空间关系、构造做法、专业接口和重点难点。","补疑/澄清/答疑属于高优先级修正资料,如与原文件冲突,以补疑/澄清/答疑为准。"],g=a.chapters.map(a=>{var d;let e=(d=a.title,/概况|工程|项目|总体/u.test(d)?["tender_document","addendum","bill_of_quantities"]:/部署|组织|平面|准备/u.test(d)?["tender_document","bill_of_quantities","drawing","addendum"]:/施工|工艺|技术|方案|方法|分部分项/u.test(d)?["bill_of_quantities","drawing","technical_specification","addendum"]:/进度|工期/u.test(d)?["tender_document","addendum","schedule_document","bill_of_quantities"]:/质量|验收/u.test(d)?["tender_document","technical_specification","drawing","quality_safety_document","addendum"]:/安全|文明|环保|风险|危大/u.test(d)?["tender_document","quality_safety_document","drawing","addendum"]:/资源|材料|设备|劳动力|机械/u.test(d)?["bill_of_quantities","drawing","tender_document"]:["tender_document","bill_of_quantities","drawing","addendum","technical_specification"]).filter(a=>b.groups[a]?.length>0),g=e.length?e:["tender_document","bill_of_quantities","drawing"].filter(a=>b.groups[a]?.length>0),h=(c?.works||[]).filter(b=>{if(!b.name)return!1;let c=(0,j.C1)(b.name,a.title),d=(a.sections||[]).some(a=>(0,j.C1)(b.name,a));return c||d}).map(a=>`${a.name}:${a.scope.slice(0,120)}`),i=(c?.methods||[]).filter(b=>!!b.applicableWorks?.length&&b.applicableWorks.some(b=>{let c=(0,j.C1)(b,a.title),d=(a.sections||[]).some(a=>(0,j.C1)(b,a));return c||d})).map(a=>a.name);return{chapterId:a.id,chapterTitle:a.title,writingGoal:(()=>{let b=`围绕”${a.title}”组织本项目资料事实,优先体现招标要求、清单工程内容、图纸施工对象和补疑修正口径。`,c=(0,f.uQ)(a.title);return c?`${b}本章专业写作重点:${c.goal}。`:b})(),mustUseMaterialKinds:g,evidenceQueries:Object.fromEntries(m.map(b=>[b,function(a,b){let c=(0,k.C)(a.sections||[],a=>(0,k.O)(a),{maxItems:12,maxChars:600},`queriesForKind:${a.id}:sections`),d=(0,k.C)(a.requiredFacts,a=>(0,k.O)(a),{maxItems:12,maxChars:600},`queriesForKind:${a.id}:facts`),e=c.selected.join(" "),f=d.selected.join(" "),g=`${a.title} ${e} ${f}`.trim();return[...new Set(({tender_document:[g,`${a.title} 招标范围 工期 质量 标准 评审 响应要求`,"项目概况 招标范围 投标文件 技术标 施工组织设计"],bill_of_quantities:[g,`${a.title} 工程量清单 分部分项 项目特征 数量 单位`,"清单 工程内容 主要分部分项 工程量 项目特征"],drawing:[g,`${a.title} 图纸 设计说明 构造做法 施工部位 节点`,"图纸 设计说明 平面 节点 构造 做法 专业接口"],addendum:[g,`${a.title} 补疑 澄清 答疑 变更 修正`,"补疑 澄清 答疑 招标文件 清单 图纸 修正"],contract:[g,`${a.title} 合同 条款 履约 责任 验收`],technical_specification:[g,`${a.title} 技术规范 施工要求 验收标准 控制要点`],schedule_document:[g,`${a.title} 工期 进度 节点 计划 里程碑`],quality_safety_document:[g,`${a.title} 质量 安全 文明 环保 验收 风险`],other:[g]})[b].filter(Boolean))]}(a,b)])),mustCover:[...new Set([a.purpose,...a.sections||[],...a.requiredFacts,...h,...i])].filter(Boolean).slice(0,24),avoidWriting:["不得脱离项目资料泛泛套写通用内容","不得编造资料未确认的项目专属数字、日期、金额、工程量、材料规格;标准规范编号与法规名称属公共知识可正常引用","不得忽略补疑/澄清对原始资料的修正"]}}),i=function(a){let{profile:b}=a,c=m.map(a=>`${p(a)}:${b.groups[a].length?b.groups[a].map(a=>`${a.fileName}(${a.chunkCount||0})`).join("、"):"未识别"}`).join("\n"),d=a.chapterPlans.map((a,b)=>`${b+1}. ${a.chapterTitle}
|
|
2
|
-
- 写作目标:${a.writingGoal}
|
|
3
|
-
- 必用资料类型:${a.mustUseMaterialKinds.map(p).join("、")||"按现有资料综合使用"}
|
|
4
|
-
- 必须覆盖:${a.mustCover.join("、")||"按章节目标展开"}
|
|
5
|
-
- 禁止:${a.avoidWriting.join(";")}`).join("\n");return["## 项目资料理解模型",`项目资料包:${b.projectName}`,`资料根目录:${b.materialRoots.join("、")||"当前知识库全部资料"}`,"资料类型清单:",c,b.warnings.length?`资料风险:${b.warnings.join(";")}`:"","全局写作重点:",...a.globalWritingFocus.map(a=>`- ${a}`),"章节资料使用计划:",d,a.graphPrompt||""].filter(Boolean).join("\n")}({profile:b,globalWritingFocus:e,chapterPlans:g,graphPrompt:d});return{profile:b,globalWritingFocus:e,chapterPlans:g,prompt:i}}function y(a){let b=new Map,c=new Map;for(let d of a.files)b.set(d.filePath,d.kind),c.set(d.filePath,"drawing"===d.kind?"drawing":"bill_of_quantities"===d.kind?"table":"technical_specification"===d.kind?"specification":"tender_document"===d.kind||"addendum"===d.kind?"rule":"reference");return{kindByPath:b,processingByPath:c}}function z(a){return a||"other"}function A(a){return"drawing"===a?"drawing":"bill_of_quantities"===a?"table":"technical_specification"===a?"specification":"tender_document"===a||"addendum"===a?"rule":"reference"}async function B(a){let b=[];if(!a.plan)return b;for(let c of a.plan.mustUseMaterialKinds){let d=a.profile.groups[c].map(a=>a.filePath).filter(b=>a.scopedFilePaths.includes(b));if(0!==d.length)for(let f of(0,k.C)(a.plan.evidenceQueries[c]||[],a=>(0,k.O)(a),{maxItems:6,maxChars:1200},`evidence-queries:${c}`).selected){if(a.signal?.aborted)throw Error("aborted");let g=await a.manager.search(a.projectRoot,f,{scope:"project",filters:{filePaths:d,materialRoots:a.scopedMaterialRoots??(0,e.materialRootsOfFiles)(a.scopedFilePaths)},limit:a.limitPerQuery,weights:{keyword:.68,vector:.25,rewrite:.85,hybridBonus:.3},generationMode:!0,disableReranker:!0});b.push(...g.results.map(b=>({chapterId:a.chapter.id,filePath:b.filePath,score:b.score+o[c]/100+2,content:b.content,roleId:z(c),processingType:A(c),sectionTitle:b.sectionTitle,source:`material-plan:${c}`})))}}return(0,i.QR)(b,{maxItems:48,maxChars:52e3,preservePinned:!0})}function C(a){let b=[],c=new Set(a.plan?.mustUseMaterialKinds||[]),d=a.profile.files.filter(b=>a.scopedFilePaths.includes(b.filePath)&&(0===c.size||c.has(b.kind))).sort((a,b)=>b.priority-a.priority),e=[a.chapter.title,...a.chapter.sections||[],...a.chapter.requiredFacts].filter(Boolean);for(let c of d){let d=a.project.getFileDetail?.(c.filePath);if(d?.chunks?.length)for(let f of d.chunks.map((a,b)=>{let d=(0,i.eE)(a.content),f=`${a.sectionTitle||""}
|
|
6
|
-
${d}`;return{chunk:a,index:b,score:.8*e.filter(a=>f.includes(a)).length+ +!!/\d+(?:\.\d+)?\s*(?:日历天|天|月|年|万元|元|㎡|m²|m³|米|mm|台|套|人|项|%|MPa|kPa)/u.test(d)+.4*(0===b)+c.priority/120}}).filter(a=>a.score>0).sort((a,b)=>b.score-a.score))b.push({chapterId:a.chapter.id,filePath:d.file.relativePath,score:1.8+f.score,content:f.chunk.content,roleId:z(c.kind),processingType:A(c.kind),sectionTitle:f.chunk.sectionTitle,source:"project-material-sample"})}return(0,i.QR)(b,{preservePinned:!0})}},3063:(a,b,c)=>{c.d(b,{Ck:()=>t,Ru:()=>o,Yp:()=>g,ap:()=>s,gG:()=>h,lg:()=>r,tZ:()=>f,vN:()=>p});let d=c(28366).ip.writingSpec,e=d.criticalSectionAnchors;function f(a){return e.some(b=>a.includes(b))}let g=RegExp(d.majorContentSection,"u"),h=RegExp(d.divisionSection,"u"),i=[d.writeRules.majorContent],j=[d.writeRules.division],k=/劳动力|工种/u,l=[d.writeRules.labor],m=/主要材料|材料资源|物资/u,n=[d.writeRules.material],o=d.threeSourceRules;function p(a,b){let c=new Set,d=[],e=[a,...b||[]],f=a=>{!a||c.has(a)||(c.add(a),d.push(a))};for(let a of e)for(let b of function(a){let b=[];return g.test(a)&&b.push(...i),h.test(a)&&b.push(...j),b}(a))f(b);return e.some(a=>k.test(a))&&l.forEach(f),e.some(a=>m.test(a))&&n.forEach(f),d}let q=d.criticalDeepSections.map(a=>RegExp(a,"u"));function r(a){return q.some(b=>b.test(a))}function s(a){let{emergency:b,majorContent:c,division:e,focus:f}=d.blockerMinChars;return/危大工程专项施工方案审批流程|原材料进场复试|见证取样/u.test(a)?b:g.test(a)?c:h.test(a)?e:/项目特点.*重点.*难点|重点.*难点.*分析/u.test(a)?f:0}let t={blockerMinPackages:d.divisionQuality.blockerMinPackages,minPackages:d.divisionQuality.minPackages,minParamsPerPackage:d.divisionQuality.minParamsPerPackage,minPackageChars:d.divisionQuality.minPackageChars,balanceRatio:d.divisionQuality.balanceRatio}},6444:(a,b,c)=>{c.d(b,{N:()=>l,x:()=>k});var d=c(77598),e=c(8753),f=c(92808);function g(a){return a.replace(/[^a-zA-Z0-9\u4e00-\u9fa5_-]/gu,"-").slice(0,60)||`fact-${Date.now()}`}function h(a){let b=RegExp("[“”\"'‘’「」『』《》](.{2,80}?)[“”\"'‘’「」『』《》]","gu");return[...a.matchAll(b)].map(a=>a[1].trim()).filter(Boolean)}function i(a){return a.split(/[\n;;。]/u).map(a=>a.trim()).filter(a=>a.length>=2)}function j(a,b=""){let c=function(a,b=""){return`${b} ${a.name} ${a.category} ${a.outputTitle} ${a.description}`}(a,b);return(0,e.V)().autoSpecGates.filter(a=>a.templateMatchers.some(a=>(function(a,b){try{return RegExp(b,"iu").test(a)}catch{return a.includes(b)}})(c,a)))}function k(a,b=""){let c=function(a,b=""){return d.createHash("sha1").update(JSON.stringify({id:a.id,name:a.name,description:a.description,outputTitle:a.outputTitle,chapters:a.chapters,promptBindings:a.promptBindings,projectBindings:a.projectBindings,projectRoleConfigId:a.projectRoleConfigId,requirement:b})).digest("hex").slice(0,12)}(a,b),e=function(a){let b=`${a.name} ${a.category} ${a.outputTitle} ${a.description}`;return(0,f.rs)(b,f.nt)||a.category||"文档"}(a),l=function(a,b){let c=[a.name,a.category,a.outputTitle,a.description],d=[];for(let b of a.chapters)for(let a of(c.push(b.title,b.purpose,...b.sections||[],...b.requiredFacts||[],...b.queries||[]),b.requiredFacts||[]))d.push(a);let e=c.filter(Boolean).join("\n"),g=new Set(d);for(let a of(0,f.t0)(e,f.NT))g.add(a);for(let c of j(a,b))for(let a of c.requiredFacts)g.add(a);return[...g].filter(Boolean)}(a,e),m=function(a=""){let b=new Set;for(let c of[/(?:必须|需要|要求|增加|包含|包括|补充|设置|新增).{0,12}?(?:章节|章|节|小节)[::为是]?\s*([^。;;\n]{2,80})/giu,/(?:章节|目录).{0,8}?(?:包括|包含|为|是)[::]?\s*([^。;;\n]{2,120})/giu])for(let d of a.matchAll(c))for(let a of d[1].split(/[、,,/]/u).map(a=>a.trim()).filter(Boolean))!/不要|禁止|不得|不能/iu.test(a)&&a.length<=40&&b.add(a.replace(/[。;;::]+$/u,""));return[...b]}(b),n=function(a=""){let b=new Set;for(let c of i(a).filter(a=>/必须|一定要|务必|输出|写明/iu.test(a)&&!/章节|章|节|小节/iu.test(a))){for(let a of h(c))b.add(a);let a=c.match(/(?:输出|写明)\s*([^。;;\n]{2,30})/iu);a&&b.add(a[1].trim())}return[...b].filter(a=>a&&a.length<=30&&!/不要|禁止|不得|不能|生成|要求内容|专业|结构完整|直接用于/u.test(a))}(b),o=function(a=""){let b=new Set;for(let c of i(a).filter(a=>/不要|禁止|不得|不能|不允许|严禁/iu.test(a))){for(let a of h(c))b.add(a);let a=c.match(/(?:不要|禁止|不得|不能|不允许|严禁)(?:出现|输出|写|包含)?\s*([^。;;\n]{2,40})/iu);a&&b.add(a[1].replace(/^(这些|以下|内容|词语|文字)[::]?/u,"").trim())}return[...b].filter(a=>a&&!/章节|页|表格/u.test(a))}(b),p=function(a=""){let b=a.match(/(?:大概|约|左右|不少于|至少|控制在|不超过|最多)?\s*(\d{1,3})\s*(?:页|page)/iu);if(!b)return;let c=Number(b[1]);if(Number.isFinite(c)&&!(c<=0))return/不少于|至少/iu.test(a)?{min:c}:/不超过|最多|以内|控制在/iu.test(a)?{max:c}:{target:c,min:Math.max(1,Math.floor(.85*c)),max:Math.ceil(1.15*c)}}(b),q=j(a,e),r=Math.max(0,...q.map(a=>a.minTables||0)),s=Math.max(function(a=""){let b=a.match(/(?:至少|不少于)?\s*(\d{1,2})\s*(?:个|张)?\s*表格/iu);return b?Number(b[1]):/表格化|用表格|表格形式|表格表达/iu.test(a)?1:void 0}(b)||0,r)||void 0,t=a.chapters.map((a,b)=>{let c=[a.title,a.purpose,...a.sections||[],...a.requiredFacts||[],...a.queries||[]].join("\n"),d=new Set(a.requiredFacts||[]);for(let a of l)(c.includes(a)||RegExp(a.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&"),"iu").test(c))&&d.add(a);for(let a of(0,f.t0)(c,f.Ny))d.add(a);return{id:a.id,title:a.title,required:!0,order:b,minWords:900,requiredFactIds:[...d].filter(a=>l.includes(a)).map(g),requiredFileRoleIds:[],requiredPromptRoleIds:[],generationHint:[a.purpose,a.sections?.length?`必须包含小节:${a.sections.join("、")}`:"",d.size?`重点覆盖事实:${[...d].join("、")}`:""].filter(Boolean).join("\n")}}),u=m.filter(a=>!t.some(b=>b.title.includes(a)||a.includes(b.title))).map((a,b)=>({id:`user-chapter-${g(a)}`,title:a,required:!0,order:t.length+b,minWords:600,requiredFactIds:[],requiredFileRoleIds:[],requiredPromptRoleIds:[],generationHint:`用户明确要求包含该章节:${a}`})),v=[{id:"auto-source-required",name:"事实必须有来源",type:"source_required",level:"warning",evaluator:{subject:"source",operator:"all_have_source"}},{id:"auto-min-source",name:"至少使用绑定材料来源",type:"source_required",level:"warning",evaluator:{subject:"source",operator:"min_count",min:2}},{id:"auto-no-debug-text",name:"不得输出后台流程话术",type:"forbidden_text",level:"error",value:"知识库证据",evaluator:{subject:"document",operator:"not_contains",value:"知识库证据"}},...q.flatMap(a=>a.requiredTexts.map(a=>({id:`configured-required-${g(a)}`,name:`配置建议包含:${a}`,type:"configured_required_text",level:"warning",value:a,evaluator:{subject:"document",operator:"contains",value:a}}))),...q.flatMap(a=>a.forbiddenTexts.map(a=>({id:`configured-forbidden-${g(a)}`,name:`配置建议避免:${a}`,type:"configured_forbidden_text",level:"warning",value:a,evaluator:{subject:"document",operator:"not_contains",value:a}}))),...r?[{id:"configured-min-table-count",name:`配置建议正式表格不少于 ${r} 个`,type:"configured_table_density",level:"warning",evaluator:{subject:"table",operator:"min_count",min:r}}]:[],...m.map(a=>({id:`user-required-chapter-${g(a)}`,name:`用户提到章节:${a}`,type:"user_required_chapter",level:"warning",target:a,evaluator:{subject:"chapter",operator:"exists",target:a}})),...n.map(a=>({id:`user-required-text-${g(a)}`,name:`用户提到应包含:${a}`,type:"user_required_text",level:"warning",value:a,evaluator:{subject:"document",operator:"contains",value:a}})),...o.map(a=>({id:`user-forbidden-text-${g(a)}`,name:`用户要求不得包含:${a}`,type:"user_forbidden_text",level:"error",value:a,evaluator:{subject:"document",operator:"not_contains",value:a}})),...s?[{id:"user-min-table-count",name:`用户提到表格数量不少于 ${s}`,type:"user_format_table",level:"warning",evaluator:{subject:"table",operator:"min_count",min:s}}]:[],...p?.min?[{id:"user-min-page-count",name:`用户提到页数不少于 ${p.min}`,type:"user_page_target",level:"warning",evaluator:{subject:"page",operator:"min_count",min:p.min}}]:[],...p?.max?[{id:"user-max-page-count",name:`用户要求页数不超过 ${p.max}`,type:"user_page_target",level:"warning",evaluator:{subject:"page",operator:"max_count",min:p.max}}]:[]],w=[...t,...u];return{sourceHash:c,managedBy:"system",spec:{id:`auto-${a.id}-${c}`.replace(/[^a-zA-Z0-9_-]/gu,"-").slice(0,80),name:`后台优化建议 - ${a.name}`,description:`${e}后台优化建议,由模板、提示词、角色绑定和用户临时要求静默生成,仅用于提升内容完整性,不接管章节结构。`,factFields:l.map(a=>({id:g(a),name:a,type:"auto",required:q.some(b=>b.requiredFacts.includes(a))||!/资源|品牌|重点|难点|约束/iu.test(a),extractionHint:`从绑定材料摘要、角色绑定证据和知识库证据中抽取“${a}”。`,validationHint:`生成内容涉及“${a}”时必须与绑定材料一致,不得引入无关事实。`})),chapterMode:"fixed",chapterRules:w,dynamicChapterRule:{source:"ai_plan",minChapters:0,maxChapters:0,titleStrategy:"template",minWordsPerChapter:0,generationHint:`不自动规划或补充章节;仅按${e}正式文件要求提供内容完整性建议。`},gateRules:v,builtIn:!0}}}function l(a,b,c={}){return c.publicSafe?`## 文档事实与质量要求
|
|
7
|
-
建议关注事实:${a.factFields.map(a=>a.name).join("、")}
|
|
8
|
-
章节内容要求:${a.chapterRules.map(a=>`${a.title}${a.generationHint?`:${a.generationHint.replace(/\s+/gu," ")}`:""}`).join(";")||"以当前模板章节为准"}
|
|
9
|
-
质量控制点:${a.gateRules.map(a=>a.name).join("、")}`:`## 结构化检查摘要
|
|
10
|
-
摘要名称:${a.name}
|
|
11
|
-
版本标识:${b}
|
|
12
|
-
说明:以下内容仅用于事实覆盖、检索命中和质量检查,不得新增、删除、重排用户或模板章节。
|
|
13
|
-
建议关注事实:${a.factFields.map(a=>a.name).join("、")}
|
|
14
|
-
章节内容建议:${a.chapterRules.map(a=>`${a.title}${a.generationHint?`:${a.generationHint.replace(/\s+/gu," ")}`:""}`).join(";")||"以当前模板章节为准"}
|
|
15
|
-
质量提醒:${a.gateRules.map(a=>a.name).join("、")}`}},14070:(a,b,c)=>{function d(a){let b=a.split(/[,。;:、\s\d()()《》<>【】"“”'‘’\-/\\|,.:;]+/u).filter(Boolean),c=new Set;for(let a of b){let b=a.trim();if(b.length>=2&&c.add(b),b.length>=3)for(let a=0;a<=b.length-2;a++){let d=b.slice(a,a+2);d.length>=2&&!/^[a-zA-Z0-9]+$/u.test(d)&&c.add(d)}}return[...c]}function e(a,b,c=.3){return function(a,b){let c=new Set(d(a)),e=new Set(d(b));if(0===c.size||0===e.size)return 0;let f=0;for(let a of c)if(e.has(a))f+=1;else if(a.length>=2){for(let b of e)if(b.length>=2&&(b.includes(a)||a.includes(b))){f+=.5;break}}return f/Math.max(c.size,1)}(a,b)>=c}c.d(b,{C1:()=>e})},18274:(a,b,c)=>{c.d(b,{AM:()=>e,LT:()=>i,Rz:()=>n,WL:()=>o,_W:()=>d,aX:()=>h,c5:()=>m,s2:()=>j,sv:()=>f,yw:()=>g});let d=/(?:\b[A-Z]{1,8}[\w./-]*\d[\w./-]*\b|\b\d+(?:\.\d+)?\s*(?:mm|cm|m2|m3|m³|m²|㎡|平方米|m|km|kg|g|t|L|ml|MPa|kPa|℃|%|台|套|个|项|批|次|份|人|小时|分钟|日历天|天|周|月|年|万元|元)(?![\w\u00B2\u00B3])|(?<![\d.])\b\d+\s*[×xX]\s*\d+(?:\s*[×xX]\s*\d+)?\b|\b(?:GB|GB\/T|ISO|IEC|IEEE|RFC|API|DB\d*|T\/[A-Z]+)\s*[\w.-]+\b)/giu,e=/\d+(?:\.\d+)?\s*(?:mm|cm|m|km|㎡|m²|m3|m³|kg|g|t|L|ml|MPa|kPa|℃|%|台|套|个|项|批|次|份|人|小时|分钟|日历天|天|周|月|年)|DN\s*\d+|φ\s*\d+|Φ\s*\d+|GB\s*\d+|JGJ\s*\d+/iu,f=/\d|DN|φ|Φ|mm|cm|m²|m3|m³|MPa|kPa|℃|%|GB|JGJ|ISO|IEC|台|套|个|项|批|次|份|人|㎡|日历天|万元|元|型号|规格|数量|单位/iu,g=/\d+(?:\.\d+)?\s*(?:mm|cm|m|km|㎡|m²|m3|m³|kg|g|t|L|ml|MPa|kPa|℃|%|台|套|个|项|批|次|份|人|小时|分钟|日历天|天|周|月|年)|DN\s*\d+|Φ\s*\d+|φ\s*\d+|C\d{2,}|HRB\d+|GB\/?T?\s*[\w.-]+|JGJ\s*[\w.-]+|\d+\s*[×xX]\s*\d+/iu,h=/\d+(?:\.\d+)?\s*(?:m³|m3|m²|㎡|mm|cm|m\/s|m|km|MPa|kN|kN\/m²|kPa|℃|%|d|h|min|MΩ|t|次\/天)|[MC]\d{1,3}(?:\.\d+)?|[<>≤≥]\s*\d+(?:\.\d+)?\s*(?:mm|MPa|%|d)|间距[≤<]?\s*\d+|偏差[≤<]?\s*\d+|坡度\s*\d+(?:\.\d+)?(?::\d+|%)|压实度\s*[≥>]?\s*\d+|坍落度|闭水试验|静载试验|拉拔试验|拉拔检测|探伤|试验压力|锚固长度|搭接长度|保护层厚度|养护时间|饱满度|垂直度|平整度|含水率|(?:地径|胸径|苗高|蓬径|冠丛高|株高|株距|行距|种植深度|覆土厚度|土球直径)\s*[≥≤<>=]?\s*[DΦφd]?\s*\d+(?:\.\d+)?|(?:养护期|养护周期)\s*(?:为|不少于|不低于)?\s*[一二三四五六七八九十两\d]+(?:个)?(?:月|年)|(?:成活率|保存率|苗木覆盖率)\s*[≥≤<>=]?\s*\d+(?:\.\d+)?\s*%|(?:防护挑网|安全网|防护网|围挡|警戒(?:区|线|距离)|防护栏杆).{0,12}(?:宽度|高度|距离|范围)[^,。;;]{0,8}\d+(?:\.\d+)?\s*m|(?:宽度|高度|距离|范围)[^,。;;]{0,8}\d+(?:\.\d+)?\s*m.{0,12}(?:防护挑网|安全网|防护网|围挡|警戒|防护栏杆)/giu,i=/\d[A-Z][A-Z0-9a-z]*\b|[A-Z]{1,2}\d{2,3}\b|\d+(?:\.\d+)?\s*(?:kW|kVA|KVA|KW)\b|IP\d{2}/gu,j=/\d+(?:\.\d+)?\s*(?:m²|㎡|m3|m³|mm|cm|m|km|kg|t|MPa|kPa|℃|%|日历天|天|层|台|套|个|项|次|份|人|小时)/giu,k="mm|cm|m2|m3|m\xb3|m\xb2|㎡|平方米|m|km|kg|g|t|吨|l|ml|mpa|kpa|kn|kw|kv|℃|%|台|套|个|项|批|次|份|人|h|d|min|天|周|月|年|万元|元",l=`(?:[1-9]\\d*\\.\\d+(?:${k})?|(?:[1-9]\\d*|0\\.\\d+)\\s*(?:${k}))`,m=RegExp(`^[A-Za-zΦφΔ][\\w./-]*\\d${l}$`,"iu"),n=RegExp(`^\\d+${l}$`,"u"),o=/(?:DN|De|HRB|HPB|Φ|φ)/iu},22157:(a,b,c)=>{c.d(b,{DI:()=>P,H1:()=>n,Jb:()=>F,Kd:()=>N,LH:()=>g,Ld:()=>o,Me:()=>u,SQ:()=>h,Sw:()=>m,TP:()=>M,Te:()=>L,V:()=>f,W6:()=>v,Ww:()=>I,Xl:()=>D,Z1:()=>j,az:()=>l,c6:()=>J,dY:()=>y,hh:()=>O,jM:()=>C,jf:()=>S,l$:()=>R,lG:()=>K,lX:()=>Q,se:()=>k,ty:()=>t,wq:()=>w,wx:()=>x,zm:()=>i});var d=c(77598),e=c(78217);let f=/项目主要施工内容|主要分部分项工程施工方案|主要施工方法/u,g=/《[^》]*》/gu;function h(a){let b=a.replace(/《[^》]*》/gu,"");return/(?:办理|缴纳|参保|缴费|投保).{0,8}工伤保险|工伤保险.{0,8}(?:办理|缴纳|参保|缴费|投保)/u.test(b)}function i(a){let b={markdown:a,fixedCount:0,details:[]};if(h(a)||!/(?:劳务|农民工|工资)/u.test(a.replace(g,"")))return b;let c=/(办理|缴纳|投保|购买)意外伤害保险/u;if(c.test(a))return{markdown:a.replace(c,"$1工伤保险(按建设项目参保)及意外伤害保险"),fixedCount:1,details:["工伤保险表述改写:“意外伤害保险”→“工伤保险(按建设项目参保)及意外伤害保险”"]};let d=/^(#{2,6}[^\n]*工伤保险[^\n]*)$/mu;return d.test(a)?{markdown:a.replace(d,`$1
|
|
16
|
-
|
|
17
|
-
项目部按规定为全体作业人员办理工伤保险(按建设项目参保),保险费用由企业承担。`),fixedCount:1,details:["工伤保险表述补写:在「工伤保险」小节插入参保表述"]}:b}function j(a){return!!a&&!!(/→|->|=>/u.test(a)||/按.{0,60}?顺序|依次|先后|先.{0,40}?(?:后|再|随后|然后|最后)|顺序施工|流水顺序/u.test(a)||/([\u4e00-\u9fa5]{2,6})前[^。;;!?\n]{0,80}?\1后/u.test(a)||(a.match(/(?:^|\n)\s*(?:\d+[.、]|[((]\d+[))]|[一二三四五六七八九十]+[、.]|第[一二三四五六七八九十]+步)/gmu)||[]).length>=2||(a.match(/(?:^|\n)\s*(?:[-*•]|\d+\.)\s+\S/gmu)||[]).length>=2||/[\u4e00-\u9fa5]+(?:-|—|~|~)[\u4e00-\u9fa5]+(?:-|—|~|~)[\u4e00-\u9fa5]+/u.test(a)||/按[^。;\n]{2,40}(?:、[^。;\n]{2,40}){2,}[^。;\n]{0,8}(?:顺序|先后|步骤|流程|组织|推进|安排|施工程序|作业程序)/u.test(a))}function k(a){let b=/(?:施工)?(?:概况|范围)[::]\s*\S|工程量|作业对象|部位|总量|共\s*\d|\d+(?:\.\d+)?\s*(?:km|㎡|m²|m2|m3|m³|座|套|处|盏|株|棵|延米|吨)(?![\dA-Za-z])|\d+(?:\.\d+)?\s*m(?![\dA-Za-z])|(?:包括|涵盖|覆盖|含)[^。;\n]{2,60}等[^。;\n]{0,10}(?:内容|项目|工程|分项|专业|部位)/u.test(a);return{scope:b,process:/工艺流程|施工流程/u.test(a)||/(?:施工)?(?:流程|工序|顺序)[::]\s*\S/u.test(a)||j(a),method:/(?:施工)?方法(?:[::]\s*\S|(?:采用|为|按|以|包括|如下))|工艺参数|验收标准|检测|试验|记录|检查(?!井)|巡查|检验|整改|复查|销项|养护|台账|核对|复核|计量|MU\s*\d+|C\d+|抗压强度|抗折强度|强度等级|配合比|坍落度|工序卡|操作规程|作业指导书|技术交底|搭接长度|双面施焊|三面施焊|满焊|焊缝|焊脚|坡口|焊接工艺参数/u.test(a)}}function l(a){let b=k(a);return b.scope&&b.process&&b.method}function m(a){return a.replace(/^\d+(?:\.\d+)+(?![##])\s*[..、))]?\s*/u,"").replace(/^\d+(?=[\s..、))])\s*[..、))]?\s*/u,"").replace(/[((][^()()]*[))]/gu,"").replace(/[\s::、。,,;;/|—-]/gu,"").replace(/工程$/u,"")}function n(a){let b=new Set,c=[];for(let d of a){if(!b.has(d.id)){b.add(d.id),c.push(d);continue}let a=2,e=`${d.id}-dup${a}`;for(;b.has(e);)a+=1,e=`${d.id}-dup${a}`;b.add(e),c.push({...d,id:e})}return c}function o(a){return/化粪池|给排水|采暖|燃气|管网|管道|阀门|水泵|水箱|水表|消防|喷淋|强电|弱电|电气|照明|防雷|接地|通风|空调|电梯/u.test(a)?"机电安装工程":/装饰|装修|门窗|屋面|防水|楼地面|墙柱面|天棚|吊顶|抹灰|油漆|涂料|栏杆|幕墙|零星/u.test(a)?"装饰装修工程":/土石方|土方|石方|基础|垫层|砌筑|砌体|混凝土|钢筋|模板|支护|降水|桩基/u.test(a)?"结构与基础工程":/道路|路基|路面|广场|铺装|绿化|景观|亮化|清淤|围墙|大门|停车|步道|边坡/u.test(a)?"室外市政工程":/脚手|围挡|安全防护|冬雨|临时|监测/u.test(a)?"措施工程":"专项工程"}function p(a,b){return a.replace(/工程/gu,"")===b.replace(/工程/gu,"")}let q=/[0-90-9冬夏春秋汛台寒冻暑热旱涝雨雪]/u,r=/[设施系统工程系统项目技术管理措施方案服务配套专项建设]/u;function s(a,b){if(a.length<4||a.length>=b.length)return!1;let c=new Set(b.split("")),d=new Set(a.split(""));for(let a of d)if(!c.has(a))return!1;let e=[...c].filter(a=>!d.has(a));return 0!==e.length&&!(e.length>2)&&e.every(a=>r.test(a))}function t(a,b){let c=Math.max(a.length,b.length),d=c>=12?2:+(c>=8);if(0===d&&!s(a,b)&&!s(b,a))return!1;let e=new Set(a.split("")),f=new Set(b.split(""));for(let a of e)if(!f.has(a)&&q.test(a))return!1;for(let a of f)if(!e.has(a)&&q.test(a))return!1;return!!(s(a,b)||s(b,a))||function(a,b,c){if(a===b)return!0;if(Math.abs(a.length-b.length)>c)return!1;let d=Array.from({length:b.length+1},(a,b)=>b);for(let e=1;e<=a.length;e+=1){let f=[e],g=e;for(let c=1;c<=b.length;c+=1){let h=d[c-1]+ +(a[e-1]!==b[c-1]),i=Math.min(d[c]+1,f[c-1]+1,h);f.push(i),i<g&&(g=i)}if(g>c)return!1;d=f}return d[b.length]<=c}(a,b,d)}function u(a,b){let c=[...new Set(b.filter(Boolean))].map(a=>({title:a,normalized:m(a)})).filter(a=>a.normalized);if(0===c.length)return{markdown:a,aligned:[]};let d=a.split("\n").map(a=>m(a)).filter(Boolean),e=new Set(c.filter(a=>d.some(b=>b.includes(a.normalized))).map(a=>a.title)),f=new Set,g=[];return{markdown:a.split("\n").map(a=>{let b=/^(\s*####\s+)(.+)$/u.exec(a);if(!b)return a;let d=b[2].trim(),h=m(d);if(!h||c.some(a=>h.includes(a.normalized)))return a;let i=c.find(a=>!e.has(a.title)&&!f.has(a.title)&&t(h,a.normalized));return i?(f.add(i.title),g.push(`${d}→${i.title}`),`${b[1]}${i.title}`):a}).join("\n"),aligned:g}}function v(a){let b=a.split(/\r?\n/u),c="",d=new Map,e=[];for(let a of b){let b=/^(#{2,6})\s+(.+)$/u.exec(a.trim());if(!b)continue;let f=b[1].length;if(2===f){c="";continue}if(3===f){c=b[2].trim();continue}if(4!==f)continue;let g=`${c}::${m(b[2].trim())}`;if(!g)continue;let h=(d.get(g)||0)+1;d.set(g,h),h>=2&&e.push(b[2].trim())}return e}function w(a){let b=a.split(/\r?\n/u),c=[],d="",e=new Set,f=!1;for(let a of b){let b=/^(#{2,6})\s+(.+)$/u.exec(a.trim());if(b){let g=b[1].length;if(g<=3&&(d=3===g?b[2].trim():"",e.clear()),f=!1,4===g){let g=`${d}::${m(b[2].trim())}`;if(!g){c.push(a);continue}if(e.has(g)){f=!0;continue}e.add(g)}c.push(a);continue}f||c.push(a)}return c.join("\n")}function x(a,b,c,d,e=[]){let f=m(b),g=new Set(c.map(m).filter(Boolean)),h=new Set(d.map(m).filter(Boolean)),i=new Set(e.map(m).filter(Boolean)),j=[];for(let b of a.split(/\r?\n/u)){let a=/^(#{3,4})\s+(.+)$/u.exec(b.trim());if(!a)continue;let c=a[2].trim(),d=m(c);if(d){if(3===a[1].length){d===f||p(d,f)||j.push(c);continue}!h.has(d)&&(g.has(d)||i.has(d))||j.push(c)}}return j}function y(a,b,c,d=[]){let e=m(b),f=new Set(c.map(m).filter(Boolean)),g=new Set(d.map(m).filter(Boolean)),h=[];for(let b of a.split(/\r?\n/u)){let a=/^(#{3,4})\s+(.+)$/u.exec(b.trim());if(a){let c=m(a[2].trim());if(3===a[1].length){(c===e||p(c,e))&&h.push(b);continue}if(c&&!f.has(c)&&!g.has(c))continue}h.push(b)}let i=h.join("\n");return/^###\s+\S+/mu.test(i.trim())?i:`### ${b}
|
|
18
|
-
|
|
19
|
-
${i}`.trim()}let z=new Set(["施工准备","施工要点","质量控制","质量要求","质量保证措施","质量控制措施","质量通病防治","安全措施","安全要求","安全管理措施","安全技术交底","技术交底","注意事项","验收要求","验收标准","成品保护","环境保护","文明施工","进度控制","工期保障","材料管理","机械管理","人员管理","组织管理","应急预案","应急措施","劳动力配置","机械设备配置","施工概况","施工流程","施工方法"]),A=/^(?:\d+(?:\.\d+)*|[一二三四五六七八九十]+)[、..\s::-]/u,B=/主要分部分项工程施工方案|项目主要施工内容/u;function C(a){let b=a.split(/\r?\n/u),c=[];for(let a=0;a<b.length;a+=1)/^##\s+/u.test(b[a].trim())&&c.push(a);if(0===c.length)return a;let d=new Set;for(let a=0;a<c.length;a+=1){let e=c[a],f=c[a+1]??b.length,g=new Set,h=[],i="";for(let a=e;a<f;a+=1){let c=/^(#{3,4})\s+(.+)$/u.exec(b[a].trim());if(!c)continue;let d=c[2].trim(),e=m(d);e&&(3===c[1].length?(g.add(e),i=e):h.push({line:a,name:e,rawTitle:d,parentH3:i}))}let j=Array(f-e);{let a=f;for(let c=f-1;c>=e;c-=1)j[c-e]=a,/^#{2,4}\s+/u.test(b[c].trim())&&(a=c)}let k=new Map,l=new Set;for(let a of h){let c=b.slice(a.line+1,j[a.line-e]).join("").replace(/\s+/gu,""),f=l.has(a.name);f||k.set(a.name,c),l.add(a.name);let h=A.test(a.rawTitle),i=B.test(a.parentH3),m=g.has(a.name)&&!h&&!i,n=z.has(a.name),o=f&&(0===c.length||c===k.get(a.name));if(!(m||!n&&o))continue;let p=j[a.line-e];for(let b=a.line;b<p;b+=1)d.add(b)}}return 0===d.size?a:b.filter((a,b)=>!d.has(b)).join("\n")}function D(a,b,c={}){if(!c.fuzzy){let c=E(a,b,/^###\s+(?:\d+(?:\.\d+)*\s+)?/u);return c||E(a,b,/^#{3,4}\s+(?:\d+(?:\.\d+)*\s+)?/u)}return function(a,b){let c=a.split("\n"),d=F(b).replace(/\s+/gu,"").toLowerCase(),g=[],h=-1,i=0,j=!1,k=a=>{if(h<0)return;let b=c.slice(h,a).join("\n").trim();b&&g.push(b),h=-1,i=0,j=!1};for(let a=0;a<c.length;a+=1){if(!/^\s*#{2,4}\s+/u.test(c[a]))continue;let e=/^\s*(#{2,4})\s+/u.exec(c[a])?.[1].length||3;if(h>=0&&(j||3===i)&&4===e)continue;k(a);let g=F(c[a]).replace(/\s+/gu,"").toLowerCase();(g===d||g.includes(d)||H(c[a],b))&&(h=a+1,i=e,j=e<=4&&f.test(c[a]))}return k(c.length),g.sort((a,b)=>(0,e.V7)(b)-(0,e.V7)(a))[0]||""}(a,b)}function E(a,b,c){let d=a.split("\n"),e=d.findIndex(a=>c.test(a.trim())&&a.includes(b));if(e<0)return"";let g=/^(#{2,6})\s+/u.exec(d[e].trim())?.[1].length||3,h=4===g&&f.test(b),i=d.length;for(let a=e+1;a<d.length;a+=1){let b=/^(#{2,6})\s+/u.exec(d[a].trim());if(b&&b[1].length<=g&&!(h&&b[1].length===g)){i=a;break}}return d.slice(e,i).join("\n")}function F(a){return a.replace(/^\s*#{2,4}\s*/u,"").replace(/^\s*(?:\d+(?:\.\d+)*|[一二三四五六七八九十]+)(?:[、..]|\s+)\s*/u,"").trim()}function G(a){return F(a).replace(/\s+/gu,"").toLowerCase().replace(/施工(?=方案|流程|方法)/gu,"").replace(/专项(?=方案)/gu,"").replace(/项目|工程|主要|重点|技术/gu,"").replace(/[、,,;;·..//]+/gu,"").replace(/与|及|和|暨/gu,"")}function H(a,b){let c=G(a),d=G(b);return!!c&&!!d&&!(c.length<4)&&!(d.length<4)&&(c===d||c.includes(d)||d.includes(c))}function I(a,b,c,d){let e=[...new Set(b.filter(Boolean))];if(0===e.length)return a;let f=3===c?/^\s*###\s+/u:4===c?/^\s*####\s+/u:/^\s*#{3,4}\s+/u,g=new Set,h=a.split("\n").map(a=>{if(!f.test(a))return a;let b=F(a);if(!b)return a;let c=e.find(a=>!g.has(a)&&H(b,a));if(!c||c===b)return a;let d=/^(\s*#{3,4}\s+)/u.exec(a)?.[1];return d?(g.add(c),`${d}${c}`):a});if(!d?.nearMatch)return h.join("\n");let i=e.map(a=>({title:a,normalized:m(a)})).filter(a=>a.normalized);if(0===i.length)return h.join("\n");let j=h.filter(a=>f.test(a)).map(a=>m(F(a))).filter(Boolean),k=new Set(i.filter(a=>j.some(b=>b.includes(a.normalized))).map(a=>a.title)),l=new Set;return h.map(a=>{if(!f.test(a))return a;let b=m(F(a));if(!b||i.some(a=>b.includes(a.normalized)))return a;let c=i.find(a=>!k.has(a.title)&&!l.has(a.title)&&t(b,a.normalized));if(!c)return a;let d=/^(\s*#{3,4}\s+)/u.exec(a)?.[1];return d?(l.add(c.title),`${d}${c.title}`):a}).join("\n")}function J(a){return(0,d.createHash)("sha1").update(JSON.stringify(a)).digest("hex")}function K(a){if(null==a)return"";if("string"==typeof a)return a;if("number"==typeof a||"boolean"==typeof a)return String(a);try{return JSON.stringify(a)}catch{return String(a)}}function L(a){if(a?.aborted)throw Error("用户中止")}function M(a){return`【系统约束——仅指导写作,禁止写入正文,禁止复述本句】${a}`}let N=["评标纪律","投标纪律","行贿","打招呼","递条子","廉洁承诺","廉洁自律","串标","围标","弄虚作假","干扰评标","异常低价","评标基准价"];function O(a){return!!(N.some(b=>a.includes(b))||a.includes("廉洁从业"))||/纪律|廉洁/u.test(a)&&/投标|评标|行贿|串标|围标|弄虚作假/u.test(a)}function P(a){return!!(/否决[^。;\n]{0,8}投标|废标(?!准)|无效投标|投标无效|不予评审|取消[^。;\n]{0,6}投标资格/u.test(a)||/评审因素|评分因素|分值评分|详细评审标准|≤F≤/u.test(a))||/得\s*\d+(?:\.\d+)?\s*(?:-\s*\d+(?:\.\d+)?\s*)?分/u.test(a)}function Q(a){return a.filter(a=>!O(`${a.key||""} ${String(a.value)}`))}async function R(a,b,c){if(0===a.length)return[];let d=Math.max(1,Math.min(a.length,c.concurrency||Math.max(1,{total:a.length,kind:c.kind,targetWords:c.targetWords,highRisk:c.highRisk}.total))),e=Array(a.length),f=0;return await Promise.all(Array.from({length:d},async()=>{for(;f<a.length;){let c=f;f+=1,e[c]=await b(a[c],c)}})),e}class S{constructor(a){this.queue=[],this.available=Math.max(1,Math.floor(a))}async acquire(){if(this.available>0){this.available-=1;return}await new Promise(a=>{this.queue.push(a)})}release(){let a=this.queue.shift();a?a():this.available+=1}async run(a){await this.acquire();try{return await a()}finally{this.release()}}}},23500:(a,b,c)=>{c.d(b,{bj:()=>E,N6:()=>R,h0:()=>N,bV:()=>O,QJ:()=>G,jG:()=>F,dU:()=>D,Bh:()=>H,zY:()=>U,xm:()=>J,J5:()=>M,C1:()=>Q});var d=c(73024),e=c(76760),f=c(48161),g=c(77598),h=c(44533),i=c(25840),j=c(8753),k=c(6444),l=c(85441),m=c(92808),n=c(56942),o=c(2773),p=c(32434),q=c(78217),r=c(22157),s=c(80572),t=c(70208);function u(){let a=e.join(f.homedir(),".customize-agent");return d.mkdirSync(a,{recursive:!0}),a}function v(){return e.join(u(),"document-templates.json")}function w(a){let{version:b,updatedAt:c,changeLog:d,...e}=a;return(0,g.createHash)("sha256").update(function a(b){return Array.isArray(b)?`[${b.map(a).join(",")}]`:b&&"object"==typeof b?`{${Object.keys(b).sort().map(c=>`${JSON.stringify(c)}:${a(b[c])}`).join(",")}}`:JSON.stringify(b)}(e)).digest("hex")}function x(a){return{...a,id:a.id.replace(/[^a-zA-Z0-9_-]/gu,"-").slice(0,80)||`template-${Date.now()}`,name:a.name||"未命名模板",description:a.description||"",category:a.category||"自定义",outputTitle:a.outputTitle||a.name||"文档",version:Number.isFinite(a.version)&&a.version>0?Math.floor(a.version):1,updatedAt:Number.isFinite(a.updatedAt)?a.updatedAt:Date.now(),changeLog:Array.isArray(a.changeLog)?a.changeLog.filter(a=>a&&"object"==typeof a&&Number.isFinite(a.version)&&"string"==typeof a.summary).slice(0,50):[],projectRoleConfigId:a.projectRoleConfigId||void 0,chapters:Array.isArray(a.chapters)&&a.chapters.length>0?(0,r.H1)(a.chapters.map((a,b)=>({id:(a.id||`chapter-${b+1}`).replace(/[^a-zA-Z0-9_-]/gu,"-").slice(0,80),title:a.title||`第 ${b+1} 章`,purpose:a.purpose||"",queries:Array.isArray(a.queries)?a.queries.filter(Boolean):[],requiredFacts:Array.isArray(a.requiredFacts)?a.requiredFacts.filter(Boolean):[],sections:Array.isArray(a.sections)?a.sections.filter(Boolean):[],tableSections:Array.isArray(a.tableSections)?a.tableSections.filter(Boolean):[],tableRequirements:Array.isArray(a.tableRequirements)?a.tableRequirements.filter(Boolean):[],tablePlans:Array.isArray(a.tablePlans)?a.tablePlans:[],pinnedEvidenceFilePaths:Array.isArray(a.pinnedEvidenceFilePaths)?a.pinnedEvidenceFilePaths.filter(Boolean):[]}))):[{id:"document",title:a.outputTitle||a.name||"文档",purpose:a.description||"",queries:[],requiredFacts:[]}],exportSettings:a.exportSettings,generationSettings:a.generationSettings,promptIds:Array.isArray(a.promptIds)?a.promptIds.filter(Boolean):[],projectBindings:Array.isArray(a.projectBindings)?a.projectBindings.filter(a=>a.materialRootPath).map(a=>({materialRootPath:a.materialRootPath.replace(/^\/+|\/+$/gu,"")})):(0,o.qp)(a),promptBindings:Array.isArray(a.promptBindings)?a.promptBindings.filter(a=>a.promptId&&a.roleId):Array.isArray(a.promptIds)?a.promptIds.filter(Boolean).map(a=>({promptId:a,roleId:"chapter_generation"})):[],builtIn:!1}}function y(){try{let a=v();if(!d.existsSync(a))return[];let b=JSON.parse(d.readFileSync(a,"utf-8"));if(!Array.isArray(b))return d.renameSync(a,`${a}.corrupt-${Date.now()}`),[];return b.map(x)}catch{try{let a=v();d.existsSync(a)&&d.renameSync(a,`${a}.corrupt-${Date.now()}`)}catch{}return[]}}function z(a){d.writeFileSync(v(),JSON.stringify(a.map(x),null,2),"utf-8")}function A(a){return(0,g.createHash)("sha256").update(a).digest("hex").slice(0,12)}function B(a){return a.replace(/\s+/gu," ").trim().slice(0,160)}function C(a){let b=function(){try{let a=JSON.parse(d.readFileSync(e.join(u(),"prompts.json"),"utf-8"));return Array.isArray(a.customPrompts)?a.customPrompts:[]}catch{return[]}}();if(a.startsWith("custom:")){let c=b.find(b=>b.id===a);return c?{id:a,name:c.name,content:c.content,source:"custom"}:void 0}if(a.startsWith("file:")){let b=a.slice(5);if(d.existsSync(b))return{id:a,name:e.basename(e.dirname(b))||b,content:d.readFileSync(b,"utf-8"),source:"file"}}}function D(a=[]){if(0===a.length)return[];let b=[];for(let c of a){let a=C(c.promptId);a&&b.push({...a,roleId:c.roleId,contentHash:A(a.content),contentPreview:B(a.content)})}return b}function E(a){let b=S(a),c=(0,i.XB)("prompt"),d=U(a),e=[],f=[];if(b)for(let a of b.promptRoles){let b=c.find(b=>b.id===a.roleId);if(!b){e.push(a.roleId);continue}0===(b.resourceIds?.length?b.resourceIds:b.resourceId?[b.resourceId]:[]).length&&f.push(a.roleId)}let g=T(d),h=[];for(let a of g){let d=C(a.promptId);if(!d)continue;let e=c.find(b=>b.id===a.roleId),f=b?.promptRoles.find(b=>b.roleId===a.roleId),g=e?.executionType||function(a){var b;return b=a,/extract|extraction|抽取|清单|图纸|品牌/u.test(b)?"fact_extraction":/validation|校验|审查|审核/u.test(b)?"validation":/format|排版/u.test(b)?"formatting":/writer|method|schedule|quality|resource|safety|dangerous|施工|进度|质量|资源|安全|危大/u.test(b)?"chapter_generation":"reference"}(a.roleId),i=function(a,b,c=""){let d=`${a} ${b} ${c}`;return/extract|extraction|抽取|清单|图纸|品牌|识别/u.test(d)?"extraction":/format|排版/u.test(d)?"formatting":/总控|writer|施工组织设计总控|写作主控/u.test(d)?"writer":/chapter_generation|method|schedule|quality|resource|safety|dangerous|施工|进度|质量|资源|安全|危大/u.test(d)?"chapter":"reference"}(a.roleId,g,d.name),j=`projectRole:${b?.id||"unknown"}:${a.roleId}:order=${f?.order??0}`;h.push({...d,roleId:a.roleId,contentHash:A(d.content),contentPreview:B(d.content),executionType:g,category:i,bindingSource:j,roleConfigId:b?.id,roleName:e?.name,order:f?.order})}return{bindings:g,prompts:h,writerPrompts:h.filter(a=>"writer"===a.category),chapterPrompts:h.filter(a=>"chapter"===a.category),extractionPrompts:h.filter(a=>"extraction"===a.category),formattingPrompts:h.filter(a=>"formatting"===a.category),referencePrompts:h.filter(a=>"reference"===a.category),unresolvedRoles:[...new Set(e)],missingResourceRoles:[...new Set(f)]}}function F(){let a=(0,j.V)().templates,b=y().filter(b=>!a.some(a=>a.id===b.id));return[...a,...b]}function G(a){return F().find(b=>b.id===a)}function H(a){let b,c,d=x(a),e=y().find(a=>a.id===d.id),f=Date.now();if(e&&w(e)!==w(d)){b=(e.version||0)+1;let a=d.chapters.map(a=>a.title).join("、");c=[{version:b,timestamp:f,summary:a?`章节结构调整:${a.slice(0,80)}${a.length>80?"…":""}`:"模版内容已更新"},...e.changeLog||[]].slice(0,50)}else e?(b=e.version||1,c=e.changeLog||[]):(b=1,c=[{version:1,timestamp:f,summary:"创建模版"}]);let g={...d,version:b,updatedAt:f,changeLog:c},h=y().filter(a=>a.id!==d.id);return h.push(g),z(h),g}let I=/^(?:施工组织设计|技术标|投标文件|施工方案|技术方案)$/u;async function J(a,b=(0,h.aY)(),d={}){let f,g,j,r=G(a),u=[];if(!r)return{issues:[{level:"error",message:"文档模板不存在或已删除"}],fileDiagnostics:[],promptDiagnostics:[],roleDiagnostics:[],readiness:void 0,strategyPreview:void 0,config:void 0};let v=r.chapters||[],w=(0,i.XB)("prompt"),x=R(r),y=S(r);x||u.push({level:"error",message:"模板未绑定项目角色配置,且未匹配到自动专业角色配置"}),x&&!y&&u.push({level:"error",message:`项目角色配置不存在或已删除:${x}`}),r.promptIds?.length&&u.push({level:"warning",message:"模板存在旧 promptIds 字段残留,该字段已不参与生成,请清理模板历史数据。"}),r.promptBindings?.length&&u.push({level:"warning",message:"模板存在旧 promptBindings 字段残留,该字段已不参与生成,请清理模板历史数据。"});let z=U(r),A=(0,o.qp)(r);y&&0===y.promptRoles.length&&u.push({level:"error",message:"项目角色配置未配置提示词角色。"}),y&&y.promptRoles.length>0&&0===z.length&&u.push({level:"error",message:"项目角色配置中的提示词角色未绑定任何有效提示词资源。"});let B=e.resolve(b),C=(0,h.Yy)(B),E=function(a,b){if(0===a.length)return[];let c=new Set(b.map(a=>a.relativePath)),d=[],e=new Set;for(let f of a){let a=f.materialRootPath.replace(/^\/+|\/+$/gu,"");for(let f of c.has(a)?[a]:b.filter(b=>b.relativePath.startsWith(`${a}/`)&&(0,p.PZ)(b)).map(a=>a.relativePath))e.has(f)||(e.add(f),d.push(f))}return d}(A,C);if(0===A.length?u.push({level:"error",message:"模板未绑定项目资料包,请先选择需要参与生成的项目文件夹。"}):0===E.length&&u.push({level:"error",message:"模板绑定的项目资料包不存在或没有可用索引文件,请重新选择项目资料包。"}),E.length>0){let a=new Map,b=new Map;for(let c of E){let{kind:d}=(0,o.O)(c);a.set(d,(a.get(d)??0)+1);let f=b.get(d)??[];f.length<3&&f.push(e.basename(c)),b.set(d,f)}let c=c=>{let d=a.get(c)??0;return d>0?`${d} 份(${(b.get(c)??[]).join("、")}${d>3?" 等":""})`:"**缺失**"},d=`招标 ${c("tender_document")}|清单 ${c("bill_of_quantities")}|图纸 ${c("drawing")}|补疑 ${c("addendum")}`;for(let b of[{kind:"tender_document",label:"招标文件",hint:"缺招标文件则编制规格、评审要求与响应锚点无从提取,要求实体响应(权重 0.30)无判定对象"},{kind:"bill_of_quantities",label:"工程量清单",hint:"缺清单则工程量/规格/资源计划类权威值全部不可推导,蓝图不可用"},{kind:"drawing",label:"图纸/设计资料",hint:"缺图纸则施工方法、专业接口与构造做法无依据,针对性章无法成稿"}].filter(b=>(a.get(b.kind)??0)===0))u.push({level:"error",message:`资料不齐备:未识别到${b.label}。${b.hint}。请补充后重新索引再生成。(当前资料构成:${d})`});(a.get("addendum")??0)===0&&u.push({level:"warning",message:`未识别到补疑/答疑澄清资料(若本项目确无答疑可忽略)。当前资料构成:${d}`})}if(r&&(f=(0,l.P)(B,{requirement:d.requirement,boundFilePaths:E}),0===A.length&&!f.source.ambiguous&&f.source.selectedFiles>0)){let a=u.findIndex(a=>"error"===a.level&&"模板未绑定项目资料包,请先选择需要参与生成的项目文件夹。"===a.message);a>=0&&u.splice(a,1)}let F=new Map(C.map(a=>[a.relativePath,a])),H=[],K=E.map(a=>{let b=F.get(a);return b||u.push({level:"error",message:`知识库文件不存在:${a}`}),b&&("disk"===b.status||0===b.indexedAt)&&H.push({level:"warning",message:`知识库文件存在但尚未完成索引:${a}`}),b?.status==="error"&&u.push({level:"warning",message:`知识库文件索引失败:${a}${b.errorMessage?`,${b.errorMessage}`:""}`}),b&&0===b.chunkCount&&u.push({level:"warning",message:`知识库文件暂无可检索内容切片:${a}`}),{filePath:a,roleId:"project_material",roleName:"项目资料包",exists:!!b,indexed:!!(b&&b.indexedAt>0&&"disk"!==b.status),chunkCount:b?.chunkCount??0,vectorReady:!!(b&&b.chunkCount>0)}}),L=K.filter(a=>a.exists).length,M=K.filter(a=>a.exists&&!a.indexed).length;L>0&&M===L?u.push({level:"error",message:`模板绑定的项目资料包(${L} 份文件)均尚未完成解析入库,请等待后台索引完成后再运行模板`}):u.push(...H);let N=D(z),O=[{text:d.requirement||"",source:"用户需求"},{text:N.map(a=>a.content).join("\n"),source:"提示词角色"}],P=(0,t.cs)(O.map(a=>({...a,strict:!0}))),Q=P.length>=2;!Q&&v.length<2?u.push({level:"error",message:`模板章节结构不足且未提供显式大纲:当前 ${v.length} 章。请在模板中补充章节(至少 2 章,如「编制依据」+ 各类措施章),或在用户需求/提示词中给出显式大纲(章数 ≥ 2)。`}):!Q&&v.every(a=>(a.sections?.length??0)===0&&I.test((a.title||"").trim()))&&u.push({level:"error",message:"模板全部章节均为占位容器且未提供显式大纲(无小节且标题为文档类型名);请补充章节与小节,或在用户需求/提示词中给出显式大纲。"}),Q&&v.length<2&&u.push({level:"warning",message:`模板章节将被显式大纲覆盖:模板 ${v.length} 章 → 大纲 ${P.length} 章(大纲来源:用户需求或写作/章节提示词角色)`});let T=new Set(y?.promptRoles.map(a=>a.roleId)||[]);for(let a of y?.promptRoles||[]){let b=w.find(b=>b.id===a.roleId);if(!b){u.push({level:"error",message:`提示词角色不存在:${a.roleId}`});continue}0===(b.resourceIds?.length?b.resourceIds:b.resourceId?[b.resourceId]:[]).length&&u.push({level:"error",message:`提示词角色未绑定资源:${b.name}`})}let V=z.map(a=>{let b=w.find(b=>b.id===a.roleId),c=N.find(b=>b.id===a.promptId);return b||u.push({level:"error",message:`提示词角色不存在:${a.roleId}`}),T.has(a.roleId)||u.push({level:"error",message:`提示词绑定不属于当前项目角色配置:${a.roleId}`}),c||u.push({level:"error",message:`提示词不存在:${a.promptId}`}),c&&!c.content.trim()&&u.push({level:"warning",message:`提示词为空:${c.name}`}),{...a,roleName:b?.name,promptTitle:c?.name,promptSource:c?.source,contentLength:c?.content.length??0,contentHash:c?.contentHash,contentPreview:c?.contentPreview,exists:!!c}}),W=(y?.promptRoles||[]).map(a=>{let b=w.find(b=>b.id===a.roleId),c=b?b.resourceIds?.length?b.resourceIds:b.resourceId?[b.resourceId]:[]:[],d=z.filter(b=>b.roleId===a.roleId).map(a=>a.promptId),e=b?0===c.length?"missing_resource":0===d.length?"missing_prompt":"ok":"role_missing";return{roleId:a.roleId,roleName:b?.name,order:a.order,resourceIds:c,boundPromptIds:d,status:e}});if(N.length>1)try{let{detectPromptRuleConflicts:a}=await Promise.resolve().then(c.bind(c,71001));for(let b of a(N.map(a=>({promptId:a.id,name:a.name,roleId:a.roleId,content:a.content}))))u.push({level:b.level,message:`提示词规则冲突:${b.message}`})}catch{}if(r){let a=f||(0,l.P)(B,{requirement:d.requirement,boundFilePaths:E}),b=function(a,b){let c=function(a,b){let c=[a.name,a.category,a.description,a.outputTitle,...a.chapters.flatMap(a=>[a.title,a.purpose])].join("\n"),d=new Set(["project_overview","scope_description"]);return/需求|规则|响应|方案|实施|专项|安全|质量|进度|合规|施工组织|技术标/iu.test(c)&&["requirement_document","structured_data"].forEach(a=>d.add(a)),(/安全|质量|进度|工期|文明|环保|验收/iu.test(c)||b.materialInventory.schedule_quality_safety.length>0)&&d.add("schedule_quality_safety"),(/设计|图纸|平面|立面|剖面|做法/iu.test(c)||b.materialInventory.design_specification.length>0)&&d.add("design_specification"),(/风险|重点|难点|约束|现场|危大/iu.test(c)||b.materialInventory.risk_constraints.length>0)&&d.add("risk_constraints"),d}(a,b);return[...new Set([...function(a){let b=[a.name,a.description,a.outputTitle,...a.chapters.flatMap(a=>[a.title,a.purpose,...a.requiredFacts||[],...a.queries||[]])].join("\n"),c=new Set((0,m.t0)(b,m.hW));return c.add("project_overview"),c.add("scope_description"),[...c]}(a),...c])].map(a=>{let d=b.materialInventory[a]||[],e=c.has(a),f=d.length>0,g=f&&d.length<(e?2:1);return{role:a,required:e,satisfied:f,weak:g,evidenceCount:d.length,filePaths:d.map(a=>a.filePath),reason:f?`已匹配 ${d.length} 个资料文件`:e?"必需资料角色缺失":"可选资料角色缺失"}})}(r,a);for(let c of(g=(0,n.$)({template:r,spec:(0,k.x)(r).spec,summary:a,resolvedRoles:b})).blockingIssues)u.push({level:"error",message:`生成准备度不足:${c}`});for(let a of g.warnings)u.push({level:"warning",message:a})}try{let a=(0,k.x)(r).spec,{effectiveTemplateChapters:b}=await Promise.resolve().then(c.bind(c,70208)),e=b(r,a),f=r.generationSettings||r.exportSettings,g=(0,q.q6)(r.exportSettings||r.generationSettings),h=(0,q.py)(d.requirement||""),i=(0,q.py)(N.map(a=>a.content).join("\n")),l=h.targetChars||h.targetPages?h:i,m=f?.targetPages?.target||f?.targetPages?.min,n=l.targetChars||(l.targetPages?l.targetPages*g:void 0)||(m?m*g:void 0),o=e.reduce((b,c)=>b+Math.max(a.chapterRules.find(a=>a.id===c.id||a.title===c.title)?.minWords||0,a.dynamicChapterRule.minWordsPerChapter||0),0),p=Math.round(n||o||1200*e.length),t=E.reduce((a,b)=>a+(F.get(b)?.chunkCount??0),0),{previewGenerationBudgetForTemplate:u}=await c.e(4435).then(c.bind(c,79227));j=u({template:r,chapters:e,requirement:d.requirement,materialFileCount:E.length,evidenceCount:t,targetWords:p,hasVeryLargeExplicitChapter:e.some(a=>(a.sections||[]).filter(Boolean).length>=30),configuredChapterConcurrency:(0,s.z)().chapterConcurrency||0})}catch{}return{templateId:a,projectRoleConfigId:x,configName:y?.name,fileDiagnostics:K,promptDiagnostics:V,roleDiagnostics:W,readiness:g,issues:u,strategyPreview:j}}let K=new Map,L=Math.max(5e3,Number(process.env.DOCUMENT_TEMPLATE_VALIDATION_CACHE_TTL_MS??3e4));async function M(a,b=(0,h.aY)(),c={}){let d=e.resolve(b),f=G(a),g=(0,h.Yy)(d),i=JSON.stringify({templateId:a,templateVersion:f?.version??0,templateUpdatedAt:f?.updatedAt??0,projectRoot:d,requirement:c.requirement??"",fileCount:g.length,lastFileMtime:g.reduce((a,b)=>Math.max(a,b.mtime),0)}),j=K.get(i);if(j&&Date.now()-j.at<L)return j.result;let k=await J(a,d,c);return K.set(i,{at:Date.now(),result:k}),k}function N(a){if(new Set((0,j.V)().templates.map(a=>a.id)).has(a))throw Error("Configured template cannot be deleted");z(y().filter(b=>b.id!==a))}function O(a){let b=G(a);if(!b)throw Error("Document template not found");let c=Date.now(),d=x({...b,id:`${b.id}-copy-${c}`,name:`${b.name} Copy`,builtIn:!1,version:1,updatedAt:c,changeLog:[{version:1,timestamp:c,summary:`从 ${b.id} v${b.version||1} 复制`}]}),e=y();return e.push(d),z(e),d}function P(a,b){try{return RegExp(b,"iu").test(a)}catch{return a.includes(b)}}function Q(a,b){return(function(a){let b=`${a.name} ${a.category} ${a.outputTitle} ${a.description}`;return(0,j.V)().chapterTitleFilters.filter(a=>a.templateMatchers.some(a=>P(b,a)))})(b).some(b=>!!b.minLength&&a.length<b.minLength||!!b.maxLength&&a.length>b.maxLength||b.forbiddenPatterns.some(b=>P(a,b)))}function R(a){return a.projectRoleConfigId||void 0}function S(a){let b=R(a);return b?(0,i.Mu)(b):void 0}function T(a){let b=new Set,c=[];for(let d of a){let a=`${d.roleId}:${d.promptId}`;!d.promptId||!d.roleId||b.has(a)||(b.add(a),c.push(d))}return c}function U(a){let b=S(a);if(!b)return[];let c=(0,i.XB)("prompt"),d=[];for(let a of[...b.promptRoles].sort((a,b)=>a.order-b.order)){let b=c.find(b=>b.id===a.roleId),e=b?b.resourceIds?.length?b.resourceIds:b.resourceId?[b.resourceId]:[]:[];b&&0!==e.length&&d.push(...e.map(a=>({promptId:a,roleId:b.id})))}return T(d)}},28366:(a,b,c)=>{c.d(b,{TG:()=>j,bC:()=>i,ip:()=>g});var d=c(73024),e=c(76760),f=c(22157);let g={factGovernance:{thresholdComparison:"不低于|不少于|不高于|不超过|不得少于|不得高于|不得小于|不小于|不大于|大于等于|小于等于|≥|≤|≧|≦|以上|及以上|以内|之内",amendmentContext:"修正|调整|变更|更改|更正|改为|澄清|更新|修订",aspirationalPrefix:"拟|规划|目标|力争|预计|期望|远期|未来|设想|建议|预期|争取|拟建|规划建设",addendumSource:"补疑|答疑|澄清|补充|更正|修改",weakAnchorGapThreshold:9},writingSpec:{criticalSectionAnchors:["主要施工内容","工程概况","项目概况","重点难点","危大工程","应急预案","施工部署","总平面","主要分部分项工程施工方案","主要分部分项施工方案","主要施工方法"],majorContentSection:"项目主要施工\\s*内容|主要施工\\s*内容",divisionSection:"主要分部分项工程施工方案|主要分部分项施工方案|主要施工方法",divisionProcessLabel:"工艺流程|施工流程",criticalDeepSections:["项目特点.*重点.*难点|重点.*难点.*分析","项目主要施工\\s*内容|主要施工\\s*内容","主要分部分项工程施工方案|主要施工方法","危大工程专项施工方案审批流程","原材料进场复试|见证取样"],blockerMinChars:{emergency:650,majorContent:1800,division:1200,focus:1500},divisionQuality:{blockerMinPackages:3,minPackages:5,minParamsPerPackage:4,minPackageChars:150,balanceRatio:1/3},writeRules:{majorContent:"【项目主要施工内容专项结构】只能根据绑定材料中的当前项目事实识别施工对象和工作包;不得套用固定行业模板,不得复述完整工程概况,不得写“以图纸清单为准”式空话;不得使用 Markdown 表格。必须按专业工程/分部分项工程逐项展开,每个专业工程单独一个“#### 工作包名称”三级小节(不得把所有专业工程合并成一个小节),内容覆盖三方面要素:①作业对象与工程量(什么部位、什么规模)、②工序安排(先后顺序清晰)、③施工方法(怎么干、用什么参数验收)。呈现形式要求:三方面要素必须融入连贯散文叙述,禁止以“施工概况/施工流程/施工方法”等结构标签充当小节标题或段落开头引导(不得出现“施工概况:……”式标签行),标签词只是后台结构概念、不得入题入文。工作包小节必须与上下文“主要施工工作包”列表一一对应,每个工作包只允许展开一次;严禁把同一个工作包以“X工程”“X工作包”两种口径重复写成两个小节,也不得新增图谱之外的工作包小节。作业对象与工程量要素必须写该工作包对应的本项目作业对象、部位、规模/工程量、材料设备或系统边界,写成连贯叙述,避免“xxx|工程量”式清单原文罗列;工程量数值必须与工程量清单汇总值一致(只写项目总量,禁止写分部小计、单村分表量或估算值)。工序要素必须有明确的工序顺序表达(相邻小节不得同句式开头,同一句式全文不得反复使用,禁止以固定句模复读),每个工作包至少 1 处不少于 4 个环节的工序顺序表达,不得只把工序顺序局限在一处标签段;施工方法要素写成连贯叙述,落到具体工具机具、测量/检测方法、工艺参数、材料规格、穿插关系、质量验收、复试检测和资料闭环,每个工作包施工方法宜落位至少 3 个具体工艺参数(厚度、间距、偏差、含水率、饱满度、坡度、压实度等),参数来自绑定材料或行业通用规范值,禁止“按规范施工”“结合实际执行”式空话,严禁把工程量清单条目原样罗列成“xxx:2台;xxx:1台;”式参数堆砌。严禁出现工程量清单计价表内部口径词:分部小计、本页小计、合计、小计、按实、暂估、综合单价、措施项目费、规费、税金(这些是清单计价表专用标记,正式正文一律不得出现;“措施项目”作为专业工程类别名称可用,但不得与“清单/计价/费”连用)。施工方法写法要求:按“怎么做/用什么/参数多少/怎么验收”四要素落位,逐项写出具体做法;句式自然多样,严禁套用固定句式模板或段落间同句式复读。至少形成 5 个施工工作包,工作包必须来自绑定材料证据。本小节正文总量不少于 2200 字(每个工作包小节按 300 字以上展开,写足三要素、工序细节与验收要求,防止内容深度不足触发导出阻断)。",division:"【主要分部分项工程施工方案专项要求】每个“#### 分项工程方案”三级小节内容需覆盖三方面要素:①作业对象与工程量(本项目作业对象、部位、工程量)、②工序安排(先后顺序清晰)、③施工方法(工具机具、材料规格、工艺参数、验收标准)。呈现形式要求:三方面要素必须融入连贯散文叙述,禁止以“施工概况/施工流程/施工方法”等结构标签充当小节标题或段落开头引导(不得使用结构标签词作为分项小节名),标签词只是后台结构概念、不得入题入文。严禁用“**分项名**”粗体行代替“#### 分项名”小节标题,也不得把多个分项合并写在一个段落里。工程量数值必须与工程量清单汇总值一致(只写项目总量,禁止写分部小计、单村分表量或估算值),严禁出现工程量清单计价表内部口径词:分部小计、本页小计、合计、小计、按实、暂估、综合单价、措施项目费、规费、税金。工序要素必须有明确的工序顺序表达(相邻小节不得同句式开头,同一句式全文不得反复使用,禁止以固定句模复读),每个分项方案至少 1 处不少于 4 个环节的工序顺序表达,不得只把工序顺序局限在一处标签段;每个分项方案正文必须落位至少 4 个工艺参数(mm、MPa、间距、偏差、坡度、养护天数、试验压力、搭接长度等),参数来自绑定材料或行业通用规范值,不得编造;纯设备配置型小节必须写型号、规格、容量、数量参数;不得写“按规范施工”“结合实际执行”式空话。分项间深度必须均衡:门窗维修、立面修补、设备安装等小分项同样要写足作业对象、工序与工艺参数(每个分项不少于 150 字),不得一句话带过;严禁写“其他专业工序引用相应章节内容”“详见相关章节”等自我消解语,工序安排只能在本分项方案内展开,不得另行拆节复述。",labor:"【劳动力配置专项写作规则】工种构成表必须且只能使用锚点“工种构成”:各工种人数与合计(=劳动力峰值)与锚点完全一致,不得改写、不得自设其他工种构成;分阶段劳动力投入表各阶段人数必须与锚点“分阶段劳动力投入”一致,最大值等于劳动力峰值,任何阶段不得超过峰值;正文叙述与表格数值口径一致;规划了表格的小节必须输出正式 Markdown 表格;禁止将各工种人数相加推导峰值、禁止按定额自行估算劳动力数值。",material:"【材料配置专项写作规则】主要材料表必须且只能引用锚点“主要材料”清单:材料名称、型号、规格(混凝土强度等级、管径、功率、厚度、尺寸等)、数量与锚点完全一致;清单条目中明确给出的材料型号与参数是事实数据,必须原样引用,不得编造、改写或省略;锚点未列出的材料不得自行添加型号规格。施工方法与工艺叙述中提及的材料型号、规格、参数同样必须以清单特征原文或锚点清单为准。"},threeSourceRules:"【写作三源规则】正文中的每一个数字与事实只有三种合法来源,三源之外一律不得写入:\nF\xb7项目事实源:来自绑定材料、工程量清单、图纸与权威锚点的项目专属事实(工程量、规格、数量、工期、金额、地点、单位名称),一律原样引用,数值、单位、口径与源完全一致,不得改写、拆分或近似。\nD\xb7系统推导源:劳动力分配、工种构成、分阶段投入、机械台数、进度时间安排、材料进场时间、试验计划、检验批划分等计划类数值,已由蓝图统一推导并写入权威锚点,一律原样引用;严禁基于工程量、工期、定额或经验重新估算、换算或另设数值,锚点给出多少就写多少。\nP\xb7公共规范源:法律法规、标准规范(GB/JGJ/CJJ/DB 系列)与通用施工工艺参数可引用现行有效版本,规范必须带编号,不得虚构编号或引用已废止版本。\n三源均无依据时不得编造凑数:不得留空、不得写“另行确定”“按需配置”“根据进度灵活调配”“依据定额计算”等回避话术,也不得用行业先验数字冒充项目数据;此时只写已有三源事实、工艺细节与适用边界。"}},h=new Map;function i(a){let b=h.get(a);if(b)return b;let c=g,f=function(a){if(a)return e.join(a,".customize-agent","workflow-rules.json")}(a);if(f&&d.existsSync(f))try{let a=JSON.parse(d.readFileSync(f,"utf8"));c=function(a,b){if(!b)return a;let c={...a.factGovernance,...b.factGovernance||{}},d={...a.writingSpec.blockerMinChars,...b.writingSpec?.blockerMinChars||{}},e={...a.writingSpec.divisionQuality,...b.writingSpec?.divisionQuality||{}},f={...a.writingSpec.writeRules,...b.writingSpec?.writeRules||{}};return{factGovernance:c,writingSpec:{...a.writingSpec,...b.writingSpec||{},blockerMinChars:d,divisionQuality:e,writeRules:f}}}(g,a)}catch{}return h.set(a,c),c}function j(a){return(0,f.c6)(i(a))}},29055:(a,b,c)=>{c.d(b,{s:()=>e,y:()=>f});var d=c(70208);let e=[{type:"municipal",pattern:/市政|道路|管网|雨污|污水|给水|沟槽|交通导|沥青|水稳|检查井/u},{type:"renovation",pattern:/老旧小区|小区改造|改造|修缮|飞线|居民|雨污分流/u},{type:"decoration",pattern:/装饰|装修|精装|吊顶|墙地面|乳胶漆|瓷砖|石材|室内/u},{type:"building",pattern:/房建|住宅|办公楼|厂房|主体结构|基础|屋面|二次结构|塔吊|建筑/u}];function f(a){var b;let c=(b=`${a.materialText||""} ${a.template.name} ${a.template.outputTitle||""} ${a.requirement||""} ${a.chapters.map(a=>a.title).join(" ")}`,(0,d.GQ)(b).replace(/\s+/gu,"").toLowerCase()),f=e.filter(a=>a.pattern.test(c)).map(a=>a.type);return f.length?[...new Set(f)]:["general"]}},29281:(a,b,c)=>{c.d(b,{I:()=>f});var d=c(96770);let e=null;function f(){return e||(e=new d.ConfigStore),e}},31129:(a,b,c)=>{c.d(b,{$R:()=>i,F$:()=>l,Hp:()=>j,bs:()=>m,gJ:()=>k});var d=c(73024),e=c(48161),f=c(76760),g=c(70208);function h(){return f.join(process.env.CUSTOMIZE_AGENT_HOME?f.join(process.env.CUSTOMIZE_AGENT_HOME,".customize-agent"):f.join(e.homedir(),".customize-agent"),"section-fingerprints.json")}function i(){let a=h();if(!d.existsSync(a))return{version:1,entries:[]};try{let b=JSON.parse(d.readFileSync(a,"utf8")),c=Array.isArray(b?.entries)?b.entries.filter(a=>!!a&&"object"==typeof a&&"string"==typeof a.documentId):[];return{version:1,entries:c}}catch{return{version:1,entries:[]}}}function j(a){try{let b=i();for(b.entries=b.entries.filter(b=>b.documentId!==a.documentId),b.entries.push(a);b.entries.length>200;)b.entries.shift();let c=h();d.mkdirSync(f.dirname(c),{recursive:!0}),d.writeFileSync(c,JSON.stringify(b,null,2),"utf8")}catch(a){console.error(`[fingerprint] 指纹池写入失败(不阻断生成):${a instanceof Error?a.message:String(a)}`)}}function k(a,b){let c=String(a||"").trim(),d=String(b||"").trim();if(!c||!d)return!1;if(c===d)return!0;let e=(0,g.nz)(c).replace(/\s+/gu,""),f=(0,g.nz)(d).replace(/\s+/gu,"");if(!e||!f)return!1;if(e===f)return!0;let h=new Set(f);if([...new Set(e)].filter(a=>h.has(a)).length<3)return!1;let i=function(a,b){let c=0,d=Array(b.length+1).fill(0);for(let e=1;e<=a.length;e+=1){let f=0;for(let g=1;g<=b.length;g+=1){let h=d[g];d[g]=a[e-1]===b[g-1]?f+1:0,d[g]>c&&(c=d[g]),f=h}}return c}(e,f);return!(i<3)&&i/Math.min(e.length,f.length)>=.4}function l(a,b,c={}){let d=[],e=[];for(let a of b.entries)if(!c.excludeDocumentId||a.documentId!==c.excludeDocumentId)for(let b of[...a.h3||[],...a.h4||[]])"string"==typeof b&&b.trim()&&e.push({title:b,documentId:a.documentId});if(0===e.length)return d;for(let b of a){if(!b||!String(b).trim())continue;let a=e.find(a=>k(b,a.title));a&&d.push({title:b,collidedWith:a.title,documentId:a.documentId})}return d}function m(a){let b=[],c=[];for(let d of String(a||"").split(/\r?\n/u)){let a=d.trim(),e=/^(#{3,4})\s+(.+)$/u.exec(a);if(!e)continue;let f=e[2].replace(/#+\s*$/u,"").trim();f&&(3===e[1].length?b:c).push(f)}return{h3:b,h4:c}}},31920:(a,b,c)=>{c.d(b,{Nf:()=>g,St:()=>A,W:()=>h,eI:()=>z,rA:()=>j,vG:()=>o});var d=c(95294);let e=/[,。;:、·||,;:()()【】《》[\]{}<>「」'"“”\s]/gu,f=/^\s*[\d.]+\s*(?:[A-Za-z%℃²³]+|平方米|立方米|平方|立方|米|天|年|月|日|周|小时|分钟|元|万元|台|套|个|项|批|次|人|份|页|处|座|根|块|组|件|孔|盏|樘|扇|片)*\s*$/u;function g(a){let b=a.trim();if(!b||/^#{1,6}\s/u.test(b)||/^\|/u.test(b))return!1;if(/^(?:答|答复|回复|答疑)\s*[::]/u.test(b))return!0;if(b.length<30)return!1;for(let a of b.split(e)){if(a.length<25)continue;let b=(a.match(/[0-9]/gu)||[]).length,c=(a.match(/[+\-*/×@%·..,≤≥~~$]/gu)||[]).length;if(!((a.match(/[一-龥]/gu)||[]).length/a.length>.3)&&(b+c)/a.length>=.45)return!0}let c=b.split(/[、,,;;]/u).map(a=>a.trim()).filter(Boolean);return!!(c.length>=15)&&!!(c.filter(a=>f.test(a)).length/c.length>=.6)||!1}function h(a){return a?a.split(/\r?\n/u).map(a=>g(a)?"":a).join("\n").replace(/\n{3,}/gu,"\n\n"):a}let i=/(?:现澄清为如下|澄清为如下|澄清如下)[::][^。;\n]*/gu;function j(a){if(!a)return{text:a,removed:0};let b=0,c=a.replace(i,()=>(b+=1,"")),e=(0,d.r1)(c);return c=e.text,b+=e.removed,{text:c=c.replace(/[::,,;;]\s*(?=[。;;])/gu,""),removed:b}}let k=/[^。;\n]{0,30}(?:澄清|答疑|补遗)(?:文件)?[^。;\n]{0,10}(?:明确|载明|规定|说明)[^。;\n]{0,60}/gu,l=/[^。;\n]{0,20}原[^。;\n]{0,24}?(?:现|变更为|调整为|修改为)[^。;\n]{0,24}/gu,m=/[^。;\n,,]{0,20}(?:招标|原招标|原合同|原计划)[^。;\n]{0,20}?(?:现|已|均|将)?(?:澄清|变更|调整|修改|更正)为[^。;\n,,]{0,24}[,,]?/gu,n=/(?:经|根据)[^。;\n,,]{0,8}(?:澄清|答疑|补遗)(?:文件)?[^。;\n]{0,16}?(?:调整为|变更为|修改为|更正为)[^。;\n,,]{0,24}[,,]?/gu;function o(a){if(!a)return{text:a,removed:0};let b=0,c=String(a).replace(k,()=>(b+=1,""));return{text:(c=(c=(c=c.replace(l,a=>/原因|原则|原始|原本|原状|原地|原材料/.test(a)?a:(b+=1,""))).replace(m,()=>(b+=1,""))).replace(n,()=>(b+=1,""))).replace(/[,,;;]\s*(?=[。;])/gu,""),removed:b}}let p="(?:《[^》]{2,40}》|<[^<>]{2,40}>)",q=/(?:法|条例|办法|规定|规则|决定|细则|条文|标准|规范|规程|导则|准则|通则|技术要求|技术条件)$/u,r=/^\s*[((]?\s*[A-Z]{2,6}(?:\s*\/\s*[A-Z]{1,6})?\s*\d/u,s=[`(?:具体)?(?:做法|详见|参见|见|按|依据|参照)[^,,、;;。!?\\n]{0,6}(?:[,,]\\s*(?:具体)?(?:做法|详见|参见|见|依据|参照))?[^,,、;;。!?\\n]{0,8}?(${p})(?:[((][^))]{0,24}[))])?(?:[0-9A-Za-z//.\\-]{1,16})?(?:页|张)?`],t=[`(?:具体)?(?:做法|详见|参见|见|按|依据|参照)[^,,、;;\\n]{0,12}?(${p})[^,,、;;\\n]{0,12}`,`(?:参见|详见|参照|按|依照)[^,,、;;\\n]{0,6}?(?:(${p}))?[^,,、;;\\n]{0,6}?(?:[皖烷京沪苏浙粤鲁豫鄂湘川渝陕冀晋蒙辽吉黑闽赣桂黔滇甘青宁新藏]\\s?\\d{4}|\\d{2})\\s?[A-Z]{1,2}\\s?\\d{2,4}(?:[//]\\d{1,3})?[^,,、;;\\n]{0,10}`],u=[...t,`(?:详见|参见|见)[^,,、;;\\n]{0,16}?(?:大样图|详图|节点图|工艺图|做法表)`],v=[`按(?:设计)?(?:施工)?图纸(?:控制|计量|要求|施工|确定|执行|进行|处理|设置|选用|计算|调整)?`,`以(?:设计)?图纸为准`,`(?:资料|图纸|清单|设计文件)(?:中)?未(?:提供|明确|给出|注明)[^,,、;;\\n]{0,12}(?:参数|数据|做法|要求|规格)?`,`(?:具体(?:参数|做法|数值))?待(?:补充|确认|核实|明确)`],w=s.map(a=>RegExp(a,"u"));function x(a,b){return!!q.test(a.slice(1,-1))||r.test(b)}function y(a){if(!a)return{text:a,hits:[]};let b=[],c=[];for(let d of String(a).split(/(?<=[。;])/u)){if(!d.trim()){c.push(d);continue}let a=function(a){let b=a,c=[];for(let a of w)b=b.replace(RegExp(a.source,"gu"),(a,b)=>{if(void 0!==b){let c=a.slice(a.lastIndexOf(b)+b.length);if(x(b,c))return a}return c.push({sample:a.trim(),family:"atlas"}),""});return{text:b,hits:c}}(d);b.push(...a.hits);let e=a.text.split(/([,,、;;])/u),f=[];for(let a=0;a<e.length;a+=2){let c=e[a]??"",d=c.trim()?function(a){for(let b of t)for(let c of a.matchAll(RegExp(b,"gu"))){let a=c[1];if(void 0===a)return"atlas";let b=c[0].slice(c[0].lastIndexOf(a)+a.length);if(!x(a,b))return"atlas"}return u.slice(t.length).some(b=>RegExp(b,"u").test(a))?"atlas":v.some(b=>RegExp(b,"u").test(a))?"drawing":null}(c):null;if(d){b.push({sample:c.trim().slice(0,60),family:d});continue}f.push(c);let g=e[a+1];g&&a+2<e.length&&f.push(g)}let g=f.join("").replace(/^[,,、]+/u,"").replace(/[,,、]+$/u,"");g.replace(/[。;;\s]/gu,"")&&c.push(g)}return{text:c.join("").replace(/[,,、;;]{2,}/gu,",").replace(/[,,、;;]\s*(?=[。;])/gu,"").replace(/\n{3,}/gu,"\n\n"),hits:b}}function z(a){let b=y(a);return{text:b.text,removed:b.hits.length}}function A(a){return y(a).hits.filter(a=>"atlas"===a.family).map(a=>a.sample)}},32434:(a,b,c)=>{c.d(b,{IA:()=>y,PZ:()=>m,Qu:()=>v,SU:()=>x,US:()=>o,ZR:()=>p,cN:()=>w,hw:()=>q,rj:()=>u});var d=c(76760),e=c(19898),f=c(44533),g=c(40299),h=c(80439),i=c(22157);function j(a){return a.replace(/\\/gu,"/").replace(/^\/+|\/+$/gu,"")}function k(a){let b=j(a).split("/").filter(Boolean);return b.length>1?b[0]:d.basename(b[0]||"当前项目")}function l(a){return a.replace(/[\s_\-—()()【】、,,.。·]/gu,"").replaceAll("[","").replaceAll("]","").toLowerCase()}function m(a){return"disk"!==a.status&&"error"!==a.status&&Number(a.indexedAt||0)>0&&Number(a.chunkCount||0)>0}function n(a,b){let c=new Set((0,e.materialRootsOfFiles)(b));return(0,e.materialRootsOfScopeRoots)(a).filter(a=>c.has(a))}function o(a){let b=new Set;for(let c of a)for(let a of c.relativePath.match(/\b\d{4}[A-Z]{2,}\d{4,}\b/gu)||[])b.add(a);return[...b]}function p(a,b,c=""){let d=(0,f.Yy)(a).filter(m),e=(b.projectBindings||[]).filter(a=>a.materialRootPath).map(a=>({materialRootPath:j(a.materialRootPath)})).map(a=>a.materialRootPath).filter(Boolean),g=e.length?d.filter(a=>e.some(b=>j(a.relativePath)===b||j(a.relativePath).startsWith(`${b}/`))):d,h=function(a){let b=new Map;for(let c of a){let a=k(c.relativePath);b.set(a,[...b.get(a)||[],c])}return b}(g),q=c.trim(),r=[...h.keys()];if(q){let a=[...h.entries()].map(([a,b])=>({root:a,files:b,score:function(a,b){let c=l(a),d=l(b);if(c.length>=4&&d.includes(c.slice(0,Math.min(16,c.length))))return 100;let e=new Set(["项目","工程","施工","总承包","资料","招标","图纸","清单"]);return a.split(/(?:\s|_|-|—|(|)|\(|\)|【|】|\[|\]|、|,|,|\.)+/u).filter(a=>a.length>=2&&!e.has(a)).reduce((a,c)=>a+(b.includes(c)?Math.min(20,c.length):0),0)}(a,q)})).filter(a=>a.score>0).sort((a,b)=>b.score-a.score);if(1===a.length||a.length>1&&a[0].score>a[1].score){let b=[a[0].root],c=a[0].files.map(a=>a.relativePath),e=o(a[0].files);return e.length>=2?{selectedRoots:[],selectedMaterialRoots:[],selectedFiles:[],totalAvailableFiles:d.length,ambiguous:!0,locked:!1,reason:`资料组「${a[0].root}」内检测到 ${e.length} 个不同项目编号(${e.join("、")}),疑似多份项目资料混放,已阻断生成避免跨项目污染`,rejectedRoots:r,scopeHash:(0,i.c6)({ambiguous:!0,mixedProjectNos:e})}:{selectedRoots:b,selectedMaterialRoots:n(b,c),selectedFiles:c,totalAvailableFiles:d.length,ambiguous:!1,locked:!0,reason:`用户需求唯一匹配资料组:${a[0].root}`,rejectedRoots:r.filter(a=>!b.includes(a)),scopeHash:(0,i.c6)({selectedRoots:b,selectedFiles:c})}}if(a.length>1){let b=a.filter(b=>b.score===a[0].score).map(a=>a.root);return{selectedRoots:[],selectedMaterialRoots:[],selectedFiles:[],totalAvailableFiles:d.length,ambiguous:!0,locked:!1,reason:`用户需求同时匹配多个资料组:${b.join("、")}`,rejectedRoots:r,scopeHash:(0,i.c6)({ambiguous:!0,selectedRoots:b})}}}if(1===e.length){let a=g.map(a=>a.relativePath),b=o(g);return b.length>=2?{selectedRoots:[],selectedMaterialRoots:[],selectedFiles:[],totalAvailableFiles:d.length,ambiguous:!0,locked:!1,reason:`模板绑定资料组「${e[0]}」内检测到 ${b.length} 个不同项目编号(${b.join("、")}),疑似多份项目资料混放,已阻断生成避免跨项目污染`,rejectedRoots:r,scopeHash:(0,i.c6)({ambiguous:!0,mixedProjectNos:b})}:{selectedRoots:e,selectedMaterialRoots:n(e,a),selectedFiles:a,totalAvailableFiles:d.length,ambiguous:!1,locked:!0,reason:`模板绑定唯一资料组:${e[0]}`,rejectedRoots:r.filter(a=>!e.includes(a)),scopeHash:(0,i.c6)({selectedRoots:e,selectedFiles:a})}}return{selectedRoots:[],selectedMaterialRoots:[],selectedFiles:[],totalAvailableFiles:d.length,ambiguous:!0,locked:!1,reason:e.length>1?`模板绑定多个资料组但需求未唯一指定:${e.join("、")}`:"未绑定资料组且需求未唯一指定资料范围,禁止回退全量资料",rejectedRoots:r,scopeHash:(0,i.c6)({ambiguous:!0,boundRoots:e,requirement:c})}}function q(a,b){let c=new Map((0,f.Yy)(a).map(a=>[a.relativePath,a])),e=b.selectedFiles.map(a=>{let b=c.get(a),e=Number(b?.chunkCount||0);return{path:a,root:k(a),fileName:d.basename(a),chunkCount:e,indexedAt:b?.indexedAt,status:b?.status,hash:(0,i.c6)({filePath:a,chunkCount:e,indexedAt:b?.indexedAt,status:b?.status})}});return{files:e,totalFiles:e.length,totalChunks:e.reduce((a,b)=>a+b.chunkCount,0),roots:[...new Set(e.map(a=>a.root))],createdAt:Date.now(),snapshotHash:(0,i.c6)(e.map(a=>({path:a.path,hash:a.hash})))}}function r(a,b){return a.filter(a=>b.test(`${a.fieldId||""} ${a.fieldName||""} ${a.key} ${(0,i.lG)(a.value)}`))}function s(a){return(0,i.lG)(a.value).replace(/\s+/gu," ").trim()}let t=new Set(["资料文件","资料组","资料角色","章节意图候选","项目名称候选"]);function u(a){let b=a.facts.filter(a=>!t.has(a.key)&&s(a)),c=r(b,/项目名称|工程名称|招标项目名称|建设地点|建设规模|招标范围|施工范围|建设内容/u),d=r(b,/工期|日历天|进度|开工|竣工/u),e=r(b,/质量|验收|合格|标准|规范/u),f=r(b,/清单|工程量|材料|设备|机械|劳动力|资源/u),g=r(b,/安全|文明|环保|危大|风险/u),h=c.slice(0,8).map(a=>`${a.key}:${s(a)}`).join(";");return{works:h?[{name:a.materialSnapshot.roots[0]||"当前项目",scope:h,sourceFiles:[...new Set(c.map(a=>a.sourceFile).filter(Boolean))],relatedItems:f.slice(0,8).map(a=>s(a))}]:[],methods:[],resources:f.slice(0,30).map(a=>({name:a.key,type:"material",spec:s(a),quantity:"",unit:"",sourceFiles:a.sourceFile?[a.sourceFile]:[]})),schedule:d.slice(0,10).map(a=>({milestone:a.key,duration:s(a),startDate:"",endDate:"",sourceFiles:a.sourceFile?[a.sourceFile]:[]})),standards:e.slice(0,16).map(a=>({code:a.key,description:s(a),sourceFiles:a.sourceFile?[a.sourceFile]:[]})),risks:g.slice(0,16).map(a=>({risk:s(a),level:"medium",mitigation:"",sourceFiles:a.sourceFile?[a.sourceFile]:[]})),requirements:r(b,/招标|投标|合同|承包|响应|要求|补疑|澄清|答疑/u).slice(0,20).map(a=>({category:a.key,detail:s(a),sourceFiles:a.sourceFile?[a.sourceFile]:[]})),siteConditions:r(b,/现场|周边|交通|既有|保护|场地/u).slice(0,12).map(a=>({condition:s(a),impact:"",sourceFiles:a.sourceFile?[a.sourceFile]:[]})),addendumChanges:[],gaps:[],generatedAt:Date.now()}}function v(a){let b=a.materialScope||p(a.projectRoot,a.template,a.requirement||"");if(b.ambiguous||!b.locked||0===b.selectedFiles.length)throw Error(`资料范围未锁定:${b.reason}`);let c=q(a.projectRoot,b),d=a.projectGraph||u({facts:a.facts,materialSnapshot:c,requirement:a.requirement}),e=a.projectGraph?"project-graph":"project-graph-runtime",f=a.projectGraph?"预处理完整项目图谱":"运行期项目图谱草案",g=Date.now();return{runId:`run-${g}-${(0,i.c6)({templateId:a.template.id,requirement:a.requirement||"",scopeHash:b.scopeHash}).slice(0,8)}`,templateId:a.template.id,requirement:a.requirement||"",projectRoot:a.projectRoot,materialScope:b,materialSnapshot:c,nodes:[{id:"material-scope",type:"material_scope",status:"completed",startedAt:g,completedAt:g,outputSummary:b.reason,metrics:{selectedFiles:b.selectedFiles.length,rejectedRoots:b.rejectedRoots.length}},{id:"material-snapshot",type:"material_snapshot",status:"completed",startedAt:g,completedAt:g,outputSummary:`${c.totalFiles} 份资料,${c.totalChunks} 个切片`,metrics:{totalFiles:c.totalFiles,totalChunks:c.totalChunks}},{id:e,type:"project_graph",status:"completed",startedAt:g,completedAt:g,outputSummary:`${f}:${d.works.length}工程 ${d.resources.length}资源 ${d.schedule.length}工期 ${d.standards.length}标准`,metrics:{facts:a.facts.length,precomputed:!!a.projectGraph,source:a.projectGraphSource||"runtime"}}],facts:a.facts,baseProjectGraph:d,issues:[],createdAt:g}}function w(a,b=200,c=50){if(a.nodes.length<=b)return;let d=a.nodes.slice(-c),e=a.nodes.slice(0,a.nodes.length-c),f=e.filter(a=>"project_graph"!==a.type&&("completed"===a.status||"failed"===a.status||"skipped"===a.status)),g=e.filter(a=>!f.includes(a));if(0===f.length)return;let h={id:`nodes-archive-${Date.now()}`,type:"summary",status:"completed",startedAt:f[0].startedAt,completedAt:f[f.length-1].completedAt||Date.now(),outputSummary:`已归档 ${f.length} 个历史节点(${[...new Set(f.map(a=>a.type))].join("、")})`,metrics:{archivedNodes:f.length}};a.nodes.splice(0,a.nodes.length,...g,h,...d)}function x(a){let b=a.nodes.find(a=>"project_graph"===a.type),c=!!b?.metrics?.precomputed,d=[(0,h.X5)({type:"validation",roleId:"agent-material-scope",status:"success",message:`资料范围已锁定:${a.materialScope.selectedRoots.join("、")}`,details:[`${a.materialScope.reason}`,`入选资料:${a.materialScope.selectedFiles.length}/${a.materialScope.totalAvailableFiles}`,`已排除资料组:${a.materialScope.rejectedRoots.slice(0,8).join("、")||"无"}`]},{subtitle:"Agent 资料范围锁定"}),(0,h.X5)({type:"knowledge_retrieval",roleId:"agent-material-snapshot",status:"success",message:`资料快照已固定:${a.materialSnapshot.totalFiles} 份资料、${a.materialSnapshot.totalChunks} 个切片`,details:a.materialSnapshot.files.slice(0,10).map(a=>`${a.root}|${a.fileName}|${a.chunkCount}切片`)},{subtitle:"Agent 资料快照"})];return c||d.push((0,h.X5)({type:"file_understanding",roleId:"agent-project-graph-runtime",status:"success",message:`运行期项目图谱草案已建立:${a.baseProjectGraph.works.length}工程 ${a.baseProjectGraph.resources.length}资源 ${a.baseProjectGraph.schedule.length}工期 ${a.baseProjectGraph.standards.length}标准`,details:["缓存缺失时用于资料范围和 Planner 预备分析;正式完整项目图谱会随后由 LLM 构建",`事实数:${a.facts.length}`]},{subtitle:"Agent 项目图谱预备分析"})),d}function y(a){let b=a.split(/\r?\n/u),c=[];return b.forEach((a,b)=>{g.Rg.test(a)&&c.push({level:"error",severity:"blocker",category:"style",owner:"system",message:`正式正文不得出现后台或兜底话术:第 ${b+1} 行`,suggestion:"必须改为有事实依据的正式表达;非必填缺失字段应删除,必填事实缺失应阻断生成。"})}),[...c,...(0,g.bx)(a),...(0,g.uv)(a),...(0,g.nP)(a)].slice(0,20)}},33409:(a,b,c)=>{c.d(b,{Ik:()=>i,M2:()=>f});let d={top:"项目经理",second:["技术负责人","质量负责人","安全负责人","施工负责人","材料负责人","资料负责人"],third:["土建施工班组","钢结构安装班组","安装专业班组","装饰装修班组","试验与检测组"]},e={schedule:["工序","持续天数","起止天序","线路性质","依据"],tempLand:["设施","面积(平方米)","位置","使用时长","说明"],orgChart:["层级","岗位/班组","直接上级"]};function f(a){let b=String(a||"").replace(/\s+/gu,"");if(b){if(/项目管理机构|机构图|组织架构/.test(b))return`| ${[...e.orgChart].join(" | ")} |`;if(/横道图|网络图|进度计划|总进度/.test(b))return`| ${[...e.schedule].join(" | ")} |`;if(/总平面|平面布置/.test(b))return`| ${[...e.tempLand].join(" | ")} |`}}let g=/^(?:—+|--+|-|\/|待定|待补充|待确认|待查|暂无|无数据|无|若干|N\/A|n\/a|略)$/u;function h(a,b){let c=b.filter(b=>b.length===a.length&&b.every(a=>{let b=String(a??"").trim();return b.length>0&&!g.test(b)}));if(0!==c.length)return[`| ${a.join(" | ")} |`,`| ${a.map(()=>"---").join(" | ")} |`,...c.map(a=>`| ${a.join(" | ")} |`)]}function i(a,b){let c=String(b||"").replace(/\s+/gu,"");if(c){if(/项目管理机构|机构图|组织架构/.test(c)){let a=[["第一层",d.top,"公司管理层"],...d.second.map(a=>["第二层",a,d.top]),...d.third.map(a=>["第三层",a,"各专业负责人"])];return h([...e.orgChart],a)}if(a){if(/横道图|网络图|进度计划|总进度/.test(c)){let b=a.schedule||[];if(0===b.length)return;let c=b.map(a=>[a.label,Number.isFinite(a.duration)?String(a.duration):"",`第${a.startDay}~${a.endDay}天`,a.critical?"关键线路":"非关键线路",a.basis||""]);return h([...e.schedule],c)}if(/总平面|平面布置/.test(c)){let b=a.tempLand||[];if(0===b.length)return;let c=b.map(a=>[a.purpose,"number"==typeof a.area&&Number.isFinite(a.area)?String(a.area):"",a.location||"",a.duration||"",a.note||""]);return h([...e.tempLand],c)}}}}},36366:(a,b,c)=>{c.d(b,{TD:()=>h,a1:()=>o,u:()=>n,y$:()=>l});var d=c(73024),e=c(48161),f=c(76760),g=c(22157);let h=.85,i=[{name:"工序主线",prompt:"以施工先后工序为主线组织内容,小节按施工流程推进顺序展开"},{name:"专业系统",prompt:"以专业系统构成为主线,按各专业分系统独立成节"},{name:"空间区段",prompt:"以施工区段、单体与平面分区为主线,按空间单元组织小节"},{name:"资源要素",prompt:"以人材机等生产要素配置为主线,按资源要素组织小节"},{name:"目标管控",prompt:"以质量、安全、工期等管控目标为主线,按目标维度组织小节"},{name:"接口协同",prompt:"以专业接口与协同配合为主线,按接口关系与穿插顺序组织小节"}],j=[{name:"直述事务",prompt:"小节标题采用惯例事务名词直述(如「编制说明与工程概况」)"},{name:"目标牵引",prompt:"小节标题以目标与结果词收尾(如「工期目标与进度保障」)"},{name:"流程管控",prompt:"小节标题突出流程与衔接(如「施工流程与工序衔接」)"},{name:"要素配置",prompt:"小节标题突出要素与资源配置(如「劳动力配置与组织」)"},{name:"系统专业",prompt:"小节标题突出系统构成与专业对象(如「测量控制网建立」)"}];function k(a){return`${Math.floor(a/j.length)}-${a%j.length}`}function l(a,b=[]){let c=i.length*j.length,d=Number.parseInt((0,g.c6)(String(a||"default-document")).slice(0,8),16)%c,e=new Set(b.filter(Boolean)),f=d;for(let a=0;a<c;a+=1){let b=(d+a)%c;if(!e.has(k(b))){f=b;break}}let h=i[Math.floor(f/j.length)],m=j[f%j.length];return{id:k(f),perspective:h.name,style:m.name,prompt:`本次文档系统性差异化设定(全文一以贯之,除非与模板锁定小节冲突):
|
|
20
|
-
- 组织主线:${h.prompt}。
|
|
21
|
-
- 命名风格:${m.prompt}。
|
|
22
|
-
同一文档内不得混用多种命名风格。`}}function m(){let a=process.env.CUSTOMIZE_AGENT_HOME?f.join(process.env.CUSTOMIZE_AGENT_HOME,".customize-agent"):f.join(e.homedir(),".customize-agent");return f.join(a,"diversity-history.json")}function n(a){try{let b=m();if(!d.existsSync(b))return[];let c=JSON.parse(d.readFileSync(b,"utf8")),e=c?.history?.[a];return Array.isArray(e)?e.filter(a=>"string"==typeof a):[]}catch{return[]}}function o(a,b){try{let c=m();d.mkdirSync(f.dirname(c),{recursive:!0});let e={version:1,history:{}};if(d.existsSync(c))try{let a=JSON.parse(d.readFileSync(c,"utf8"));a&&"object"==typeof a&&a.history&&"object"==typeof a.history&&(e={version:1,history:a.history})}catch{}let g=(e.history[a]||[]).filter(a=>a!==b);e.history[a]=[b,...g].slice(0,12),d.writeFileSync(c,JSON.stringify(e,null,2),"utf8")}catch(a){console.error(`[diversity] 画像历史写入失败(不阻断生成):${a instanceof Error?a.message:String(a)}`)}}},37047:(a,b,c)=>{c.d(b,{Bd:()=>l,Eh:()=>h,Iu:()=>g,Mv:()=>o,VN:()=>f});var d=c(19898);let e=null;function f(){return e||(e=new d.LocalTransformersEmbeddingProvider({})),e}async function g(){if("1"!==process.env.DOCUMENT_SKIP_EMBED_PREFLIGHT)try{await f().embedQuery("生成前置检查")}catch(b){let a=b instanceof Error?b.message:String(b);throw Error(`本地语义模型预热失败(生成前置检查,可用 DOCUMENT_SKIP_EMBED_PREFLIGHT=1 跳过):${a}`,{cause:b})}}let h=.6,i=new Map,j=0,k=0;function l(){return{embedCacheHits:j,embedCacheMisses:k}}async function m(a,b){let c=b?await b(a):await f().embedDocuments(a);if(c.length!==a.length)throw Error(`本地语义模型嵌入数量不一致:期望 ${a.length} 条,实际 ${c.length} 条`);return c}async function n(a,b){if("0"===process.env.DOCUMENT_EMBED_CACHE)return m(a,b);let c=Array(a.length),d=[],e=new Map;for(let b=0;b<a.length;b+=1){let f=a[b];if(f.length<=2e3){let a=i.get(f);if(a){c[b]=a,j+=1,i.delete(f),i.set(f,a);continue}}let g=e.get(f);g?g.push(b):(e.set(f,[b]),d.push(f))}if(0===d.length)return c;let f=await m(d,b),g=function(){let a=Number(process.env.DOCUMENT_EMBED_CACHE_SIZE||4e4);return Number.isFinite(a)&&a>0?a:4e4}();for(let a=0;a<d.length;a+=1){let b=d[a],h=f[a],j=e.get(b);for(let a of j)c[a]=h;if(b.length<=2e3&&(k+=j.length,i.set(b,h),i.size>g)){let a=i.keys().next().value;void 0!==a&&i.delete(a)}}return c}async function o(a,b,c){if(0===a.length||0===b.length)return()=>0;let d=[...a,...b],e=await n(d,c),f=new Map;for(let a=0;a<d.length;a++)f.has(d[a])||f.set(d[a],e[a]);return(a,b)=>{let c=f.get(a),d=f.get(b);if(!c||!d)return 0;let e=Math.min(c.length,d.length),g=0;for(let a=0;a<e;a++)g+=c[a]*d[a];return g}}},38115:(a,b,c)=>{c.d(b,{G8:()=>n,JG:()=>i,SX:()=>l,UW:()=>j,qL:()=>m});var d=c(95734),e=c(70208),f=c(40299),g=c(36366),h=c(31129);function i(a){return(0,e.nz)(String(a||"")).replace(/[\s()()::.。;;,,、\-—·]/gu,"")}function j(a,b){let c=String(a||"").trim(),d=String(b||"").trim();if(!c)return d;if(!d)return c;let e=Math.min(c.length,d.length);for(let a=e;a>0;a-=1)if(c.slice(-a)===d.slice(0,a))return`${c.slice(0,-a)}${d}`;return`${c}${d}`}let k=["一","二","三","四","五","六","七","八","九","十"];function l(a){let b=a.map(a=>i(a.title)),c=new Map;for(let a of b)c.set(a,(c.get(a)||0)+1);let d=new Set,f=[];for(let g=0;g<a.length;g+=1){let h=a[g],l=String(h.title||"").trim();if((c.get(b[g])||0)>1){let a=String(h.owner||"").trim(),b=i(a);b&&!i(l).startsWith(b)&&(l=j(a,(0,e.nz)(l)))}let m=l,n=1;for(;d.has(i(m));)n+=1,m=`${l}(${k[n-1]||n})`;d.add(i(m)),f.push(m)}return f}function m(a){let b=(0,e.nz)(String(a||"")).replace(/\s+/gu,"");return!!(b.length<4||/^(.{2,5})\1$/u.test(b)||/(.)\1/u.test(b))}async function n(a){let b,c=a.blocks.map(a=>a.title),j=a.fingerprintPool?(0,h.F$)(c,a.fingerprintPool,{excludeDocumentId:a.excludeDocumentId}):[],k=c.filter(a=>m(a)),l=[...new Set([...j.map(a=>a.title),...k])];if(0===l.length)return{titles:c,renamed:0,summary:null};try{let c=await (0,d.bb)([(0,f.y4)("你是施工组织设计目录命名审查专家。"),"输入某章的小节标题清单与点名需改名的标题(与历史文档撞名或命名退化),只输出改名映射。","改名规则:只改点名标题,不改未点名标题;新标题必须仍是同一专业对象或同一工程内容的具体表述,不得改变小节实质;16 个汉字以内;不得仅通过添加“工作/内容/相关/方案”等尾词规避撞名,必须实质性更换措辞;不得与本章其他小节标题用词高度相似(防章内撞名)。",a.profile?a.profile.prompt:"","只返回 JSON。"].filter(Boolean).join("\n"),[`章标题:${a.chapterTitle}`,`本章小节清单:
|
|
23
|
-
${a.blocks.map(a=>`- ${a.title}${a.pointTitles.length?`(要点:${a.pointTitles.slice(0,3).join("、")})`:""}`).join("\n")}`,`需要改名的标题:${l.join("、")}`,j.length?`历史撞名对照(本次 ↔ 历史文档):
|
|
24
|
-
${j.map(a=>`「${a.title}」↔「${a.collidedWith}」`).join("\n")}`:"",k.length?`命名退化(重复/残片)标题:${k.join("、")}`:"",'JSON 格式:{"renames":{"原标题":"新标题"}}(只包含需要改名的标题)'].filter(Boolean).join("\n\n"),{maxTokens:800,temperature:g.TD,signal:a.signal,diagnostics:a.diagnostics});b=c?.renames&&"object"==typeof c.renames?c.renames:{}}catch(b){return console.error(`[naming] 定名轮调用失败(保留原命名):${a.chapterTitle},${b instanceof Error?b.message:String(b)}`),{titles:c,renamed:0,summary:null}}let n=0;for(let[d,f]of Object.entries(b)){let b=i(d);if(!b)continue;let g=c.flatMap((a,c)=>i(a)===b?[c]:[]);if(0===g.length||!l.some(a=>i(a)===b))continue;let j=(0,e.nz)(String(f||""));if(!(!j||j.length>24||m(j)||c.some((a,b)=>!g.includes(b)&&(0,h.gJ)(a,j)))&&(!a.fingerprintPool||!((0,h.F$)([j],a.fingerprintPool,{excludeDocumentId:a.excludeDocumentId}).length>0))){for(let a of g)c[a]=j;n+=1}}return 0===n?{titles:c,renamed:0,summary:null}:{titles:c,renamed:n,summary:`命名定名轮:改名 ${n} 个(撞名 ${j.length} 个/退化 ${k.length} 个信号)`}}},40299:(a,b,c)=>{c.d(b,{BJ:()=>V,Bl:()=>ad,CK:()=>aA,Ed:()=>aB,FD:()=>m,Fo:()=>aH,K7:()=>N,KX:()=>Y,NN:()=>aG,Re:()=>E,Rg:()=>o,UG:()=>aE,V3:()=>aK,XU:()=>aC,ao:()=>ax,bR:()=>ak,b_:()=>_,bx:()=>O,cf:()=>af,dh:()=>al,kT:()=>W,kt:()=>K,nP:()=>U,p8:()=>ai,pG:()=>ah,pV:()=>T,r4:()=>aj,rs:()=>aJ,uv:()=>S,wV:()=>ay,wi:()=>z,xT:()=>ag,xw:()=>aD,y4:()=>aa,z1:()=>J});var d=c(58965),e=c(22157),f=c(54185),g=c(70208),h=c(95622),i=c(41991),j=c(3063),k=c(43378);let l=/((?:图位|此处插入)[^)]{0,40})|([^)]{0,12}图件占位[^)]{0,40})|\((?:图位|此处插入)[^)]{0,40}\)|\([^)]{0,12}图件占位[^)]{0,40}\)/gu;function m(a,b){return b?a.replace(/^[ \t]*(?:[-*+]|\d+[.、])?\s*!\[[^\]]*\]\([^)]*\)\s*$/gmu,"").replace(/!\[[^\]]*\]\([^)]*\)/gu,"").replace(/<img\b[^>]*\/?>/giu,"").replace(l,"").replace(/\n{3,}/gu,"\n\n"):a}let n=/^.*(?:知识库证据|知识库已确认事实|资料类型|提示词角色|后台自动规范|规范包(?!括|含)|事实字段|资料未提供|未检索到|待确认事项|证据来源|来源清单|校验结果|修复任务包|修复类型|修复对象|输出要求|当前项目绑定资料|已召回证据|证据边界|可审查草稿|Reviewer|Repairer).*$(?:\s)?|^.*本节围绕.+确保各项措施与本工程实施条件相匹配。?\s*$(?:\s)?|^.*建立施工准备、过程控制、检查验收和资料归档要求.*$(?:\s)?|^.*形成责任明确、过程可控、资料完整的管理闭环。?\s*$(?:\s)?|^.*确保现场管理要求与施工进度、资源组织和验收节点同步推进。?\s*$(?:\s)?|^\s*(?:管理闭环|责任明确、过程可控、资料完整|与本工程实施条件相匹配)[。;;]?\s*$(?:\s)?/gmu,o=/知识库|系统暂未|项目资料暂未|资料未明确|暂未明确|待确认|待资料复核|待系统|通用兜底(?:段落|模板)?|兜底(?:占位|模板|内容)|未检索到|资料不足|无法确认|建议补充|不适用|COL\d+|可核验信息|以本项目招标文件明确内容为准/u,p=/(?<![申提报呈])(?:请|望)(?:招标人|发包人|建设单位|贵方|贵单位|招标方)?(?:予|予以|尽快|及时|明确)?(?:回复|答复|澄清)|(?<![申提报呈])(?:请|望)(?:予|予以)(?:明确|指示|确认)|未(?:明确|予|予以)?(?:回复|答复|澄清)/u,q=/^\s*(?:#{1,6}\s*)?(?:PDF\s*第\s*\d+\s*页|rule\b|文件[::]|片段[::]|来源[::]).*$/gimu,r=/^\s*(?:[│┃┆┊┌┐└┘├┤┬┴┼─━╭╮╰╯]|[↓↑→←⇒⇨➡])+\s*$/gmu,s=/^#{2,6}\s+(?:\d+(?:\.\d+)*\s*)?(?:[-—–]\s*)?(?:判断|判定|识别|确认)?是否(?:涉及|涉|需要|适用)|^#{2,6}\s+(?:\d+(?:\.\d+)*\s*)?(?:[-—–]\s*)?(?:如|若|如果)(?:涉及|不涉及|适用|不适用)|^#{2,6}\s+.*(?:根据|结合).{0,12}(?:实际情况|项目情况|资料情况).{0,8}(?:判断|确定|编写|生成)|^#{2,6}\s+.*(?:按需(?:生成|编写)|视情况|判断后|生成要求|编写要求|说明要求|注意事项)\s*$/gmu,t=/^(?:\d+(?:\.\d+)*\s*)?(?:[-—–]\s*)?(?:(?:判断|判定|识别|确认)?是否(?:涉及|涉|需要|适用).*|(?:如|若|如果)(?:涉及|不涉及|适用|不适用).*|.*(?:根据|结合).{0,12}(?:实际情况|项目情况|资料情况).{0,8}(?:判断|确定|编写|生成).*|.*(?:按需(?:生成|编写)|视情况|判断后|生成要求|编写要求|说明要求|注意事项))\s*$/u,u=/注意事项|如何|怎么写|按需|视情况|是否/u,v=["如何编写施工方案的写作说明标题","根据项目情况判断的注意事项标题","按需生成的编写要求与说明标题"],w=["危大工程专项施工方案与安全措施","质量验收标准与检测要求","成品保护与移交管理措施"];async function x(a){return(0,i.A)({prototypes:[...v],negativePrototypes:[...w],embedDocuments:a})}function y(a){let b=a.replace(/^#{1,6}\s+/u,"").replace(/^\s*\d+(?:\.\d+)*(?:[..、]|\s)+/u,"").replace(/^第[一二三四五六七八九十百千万\d]+[章节篇部分]\s*/u,"").trim(),c=(0,g.GQ)(b);return t.test(b)||t.test(c)||(0,g.mq)(b)||(0,g.mq)(c)}function z(a){return a.replace(/PDF\s*第\s*\d+(?:\s*[-—至到~~]\s*\d+)?\s*页/giu,"相关资料").replace(/PDF\s*第(?![ \t]*[0-90-9])/giu,"").replace(/第\s*\d+\s*页\s*(?:\/|共)\s*\d+\s*页/gu,"").replace(/第\s*\d+\s*(?:[-—至到~~]\s*\d+)?\s*页/gu,"相关资料").replace(/(装饰工程|土建工程|加固工程|给排水工程|电气工程|智能化工程|消防工程|弱电智能化工程|室外道排工程|建筑结构加固工程)\s*(?:(?:施工)?图纸|资料|文件)?\s*[((]?\s*(?:(?:共|多达|约|合计)\s*)?\d+\s*页\s*[))]?/gu,"$1施工图纸").replace(/\d+\s*页\s*(装饰|土建|加固|给排水|电气|智能化|消防|弱电智能化|室外道排|建筑结构加固)\s*(?:专业)?\s*(?:(?:施工)?图纸)?/gu,"$1专业图纸").replace(/(装饰|土建|加固|给排水|电气|智能化|消防|弱电智能化|室外道排|建筑结构加固)\s*(?:专业)?\s*(?:[((]\s*)?\d+\s*页\s*(?:(?:施工)?图纸)?\s*[))]?/gu,"$1专业图纸").replace(/([\u4e00-\u9fa5A-Za-z0-9、及与和]{2,24})\s*(?:共|多达|约|合计)\s*\d+\s*页/gu,"$1相关专业图纸").replace(/([\u4e00-\u9fa5A-Za-z0-9()()、·-]{2,24}工程)\s*(?:图纸|资料|文件)?\s*[((]?\s*(?:(?:共|多达|约|合计)\s*)?\d+\s*页\s*[))]?/gu,"$1施工图纸").replace(/([\u4e00-\u9fa5A-Za-z0-9()()、·-]{2,24})(?<!施工)\s*(?:施工)?图纸\s*[((]?\s*(?:(?:共|多达|约|合计)\s*)?\d+\s*页\s*[))]?/gu,"$1施工图纸").replace(/(给排水|电气|智能化|消防|暖通|人防)\s*[((]\s*\d+\s*页\s*[))]/gu,"$1专业图纸").replace(/(?:依据|按照|结合)?\s*图纸\s*[((]\s*\d+\s*页\s*[))]/gu,"依据相关专业图纸").replace(/(?:依据|按照|结合)?\s*清单\s*[((]?\s*\d+\s*页\s*[))]?/gu,"依据工程量清单").replace(/资料\s*[((]?\s*\d+\s*页\s*[))]?/gu,"项目资料").replace(/[((]?[\u4e00-\u9fa5A-Za-z0-9、及与和]*(?:图纸|清单|资料|文件|工程)?[\u4e00-\u9fa5A-Za-z0-9、及与和]*(?:(?:共|多达|约|合计)\s*)?\d+\s*页[\u4e00-\u9fa5A-Za-z0-9、及与和]*(?:图纸|清单|资料|文件)?[))]?/gu,a=>/图纸|工程|装饰|土建|加固|给排水|电气|智能化|消防/u.test(a)?"相关专业图纸":/清单/u.test(a)?"工程量清单":"相关资料").replace(/(?:位于|详见|见|参见|依据|按照|结合)?\s*相关资料(?:\s*相关资料)+/gu,"相关资料")}let A=String.raw`(?:\d+[.、](?=\s|\*\*)\s*|[((]\d+[))]\s*|[-*+]\s+)`;function B(a){return/^\s*\|/u.test(a)||/^\s*\|?\s*:?-{3,}:?/u.test(a)?a:a.replace(/([。;;::])\s*(?=(?:\d+[.、](?=\s|\*\*)\s*|[((]\d+[))]\s*|[-*+]\s+)\S)/gu,"$1\n").replace(/([^\n])\s+(?=(?:\d+[.、](?=\s|\*\*)\s*|[((]\d+[))]\s*|[-*+]\s+)\*\*)/gu,"$1\n")}RegExp(String.raw`\S.+(?:\s|[。;;])${A}\S.+(?:\s|[。;;])${A}\S`,"u");let C=RegExp(`\r?
|
|
25
|
-
`,"u"),D=RegExp(`
|
|
26
|
-
{3,}`,"gu");function E(a){return a.split(C).map(B).join("\n").replace(D,"\n\n")}function F(a){return/^\s*\|?\s*:?-{3,}:?\s*(\|\s*:?-{3,}:?\s*)+\|?\s*$/u.test(a)}function G(a){let b=a.trim();return/^\|.*\|$/u.test(b)&&b.split("|").length>=3}function H(a){return a.trim().replace(/^\|/u,"").replace(/\|$/u,"").split(/(?<!\\)\|/u).length}function I(a){return`| ${Array.from({length:Math.max(2,a)},()=>"---").join(" | ")} |`}function J(a){let b=a.split(/\r?\n/u),c=[],d=0;for(let a=0;a<b.length;a+=1){let e=b[a];if(F(e)){c.push(e);continue}if(!(G(e)||d>0&&function(a){let b=a.trim();return b.startsWith("|")&&b.length>1}(e))){d=0,c.push(e);continue}let f=b[a+1]||"",g=F(f)?H(e):d||H(e);if(c.push(function(a,b){let c=a.trim().replace(/^\|/u,"").replace(/\|$/u,"").split(/(?<!\\)\|/u).map(a=>a.trim());for(;c.length<b;)c.push("");return`| ${c.slice(0,b).join(" | ")} |`}(e,g)),F(f)){c.push(I(g)),d=g,a+=1;continue}!d&&G(f)&&function(a){let b=a.trim().replace(/^\|/u,"").replace(/\|$/u,"").split(/(?<!\\)\|/u).map(a=>a.replace(/\*\*/gu,"").trim());return!(b.length<2)&&b.filter(a=>/^(?:序号|信息项|内容|控制项目|控制内容|执行要求|责任主体|检查(?:与验收)?|验收标准|备注|名称|规格(?:型号)?|单位|数量|阶段|措施|风险|应急物资名称|资源类别|投入计划|管理要求)$/u.test(a)).length>=Math.min(2,b.length)}(e)&&(c.push(I(g)),d=g)}return c.join("\n").replace(/\n{3,}/gu,"\n\n")}let K=/(?<=^|[。;;\n])(?:本方案|本施工组织设计|本工程|本项目|项目部|我方|我公司|投标人)?(?:根据|依据|结合|按照)?(?:本项目|项目)?(?:招标文件|补疑澄清文件|补遗澄清文件|补疑补遗|答疑(?:回复)?文件|答疑修正口径|补充答疑修正口径|澄清文件|工程量清单|设计图纸|施工图纸|图纸资料|设计修改通知单)(?:[、,,及和与\s]*(?:招标文件|补疑澄清文件|补遗澄清文件|补疑补遗|答疑(?:回复)?文件|答疑修正口径|补充答疑修正口径|澄清文件|工程量清单|设计图纸|施工图纸|图纸资料|设计修改通知单|现行规范|规范)){1,}(?:[^。;;\n]{0,40})?[,,]/gmu,L=RegExp(K.source,"mu"),M=/编制依据|编制说明|法律法规|规范标准|标准依据/u;function N(a){let b=a.split(/\r?\n/u),c=[],d=!1;for(let a of b){let b=a.trim();if(/^#{2,4}\s+/u.test(b)){d=M.test(b.replace(/^#{2,4}\s+/u,"")),c.push(a);continue}if(/^\s*\|/u.test(b)||d){c.push(a.trimEnd());continue}let e=a.replace(K,"").replace(/(?:施工图设计说明|工程量清单项目特征|补充答疑修正口径|答疑修正口径)(?:[、,,及和与\s]*(?:施工图设计说明|工程量清单项目特征|补充答疑修正口径|答疑修正口径)){1,}/gu,"项目技术文件").replace(/(?<=^|[。;;\n])(?:根据|依据)(?:[^。;;\n]{0,30})?(?:招标文件|补疑澄清文件|补遗澄清文件|补疑补遗|答疑(?:回复)?文件|答疑修正口径|补充答疑修正口径|澄清文件|工程量清单|设计图纸|施工图纸)(?:[^。;;\n]{0,40})(?:编制|确定|要求|为编制基础)[。;;]?/gmu,"").replace(/(?<=\S)\s{2,}(?=\S)/gu," ").trimEnd();/^(?:本节|本小节|本章)?(?:内容|措施)?(?:根据|依据)(?:招标文件|补疑澄清文件|补遗澄清文件|答疑(?:回复)?文件|澄清文件|工程量清单|设计图纸|施工图纸)[^。;;\n,,]*[。;;]?$/u.test(e.trim())||c.push(e)}return c.join("\n").replace(/\n{3,}/gu,"\n\n")}function O(a){let b=[],c=!1;return a.split(/\r?\n/u).forEach((a,d)=>{let e=a.trim();if(/^#{2,4}\s+/u.test(e)){c=M.test(e.replace(/^#{2,4}\s+/u,""));return}!/^\s*\|/u.test(e)&&(L.test(a)&&!c&&b.push({level:"error",severity:"blocker",category:"style",owner:"system",message:`正式正文不得出现资料来源罗列话术:第 ${d+1} 行`,suggestion:"删除“根据/依据招标文件、清单、图纸”等来源罗列,直接保留项目事实、施工内容和控制措施;编制依据类小节可集中罗列依据文件。"}),/^\s*\*\*[^*]{2,40}表\*\*\s*$/u.test(a)&&b.push({level:"error",severity:"blocker",category:"format",owner:"system",message:`正式正文不得用粗体段落充当表名:第 ${d+1} 行`,suggestion:"表名必须转换为 #### 四级标题,避免导出后混入正文段落。"}))}),b.slice(0,20)}let P=/(?:安全|管理|施工|质量|工期|进度|保障|体系|措施|控制|工程|项目|技术|方案|计划|组织|标准|规范|验收|方法|工艺|文明|绿色)/u,Q=/(?:工程施工方案|安装工程施工方案|专业工程施工方案|专项施工方案)$/u;function R(a){let b=[],c=[new Set],d=0;return a.forEach((a,e)=>{let f=a.trim();/^##\s+/u.test(f)&&(d+=1,c.push(new Set)),b[e]=d;let g=/^###\s+(.+)$/u.exec(f);g&&c[d].add(g[1].trim().replace(/^\d+(?:\.\d+)*\s*/u,""))}),{chapterOfLine:b,titleSets:c}}function S(a){let b=a.split(/\r?\n/u),c=[],{chapterOfLine:d,titleSets:e}=R(b);return b.forEach((a,b)=>{let f=/^####\s+(.+)$/u.exec(a.trim());if(!f)return;let g=f[1].trim(),h=g.replace(/^\d+(?:\.\d+)*\s*/u,"").trim();if(!h)return;let i=e[d[b]]||new Set;if(i.has(h)||i.has(g))return void c.push({level:"warning",severity:"warning",category:"structure",owner:"system",repairability:"llm_repairable",message:`H4 标题与本章三级小节同名:${g}(第 ${b+1} 行)`,suggestion:`删除该 H4 块或改为三级小节「${h}」下的独立子主题标题,禁止与三级小节同名造成结构重复。`});let j=h.slice(-2);if(h.length>2&&!P.test(j)&&h.slice(0,-2).includes(j)){let a=new Map;for(let b=0;b<h.length-1;b+=1){let c=h.slice(b,b+2);P.test(c)||a.set(c,(a.get(c)||0)+1)}let d=[...a.entries()].filter(([,a])=>a>=2).map(([a])=>a);c.push({level:"warning",severity:"warning",category:"structure",owner:"system",repairability:"llm_repairable",message:`H4 标题疑似词尾粘连或多主题拼接:${g}(重复词:${d.join("、")},第 ${b+1} 行)`,suggestion:"重写为单一主题的短标题,去掉粘连重复的尾部词语。"});return}h.length>16&&!Q.test(h)&&c.push({level:"warning",severity:"warning",category:"structure",owner:"system",repairability:"llm_repairable",message:`H4 标题过长疑似多主题拼接:${g}(${h.length} 字,第 ${b+1} 行)`,suggestion:"拆分为多个独立 H4 或压缩为单一主题短标题。"})}),c.slice(0,20)}function T(a){let b=a.split(/\r?\n/u),{chapterOfLine:c,titleSets:d}=R(b),e=0;return{markdown:b.map((a,b)=>{let f=/^(####\s+)(.*)$/u.exec(a);if(!f)return a;let g=f[2].trim(),h=g.replace(/^\d+(?:\.\d+)*\s*/u,"").trim(),i=d[c[b]]||new Set;return h&&(i.has(h)||i.has(g))?(e+=1,`${f[1]}${g}要点`):a}).join("\n"),fixedCount:e}}function U(a){let b=a.split(/\r?\n/u),c=[],d=[],e=null,f=null,g=a=>{if(f)for(let b of a.replace(/^#{1,6}\s+/u,"").replace(/^\|.*\|$/u,"").trim().split(/[。;;]/u)){let a=b.trim();a.length>=24&&f.sentences.push(a.replace(/[\s\p{P}]+/gu,"").toLowerCase())}};for(let a of b){let b=/^##\s+(.+)$/u.exec(a.trim());if(b){e&&d.push(e),e={title:b[1].trim(),sections:[]},f=null;continue}let c=/^###\s+(.+)$/u.exec(a.trim());if(c&&e){f={title:c[1].trim(),sentences:[]},e.sections.push(f);continue}/^####\s+/u.test(a.trim())||g(a)}for(let a of(e&&d.push(e),d))for(let b=0;b<a.sections.length;b+=1)for(let d=b+1;d<a.sections.length;d+=1){let e=new Set(a.sections[b].sentences),f=new Set(a.sections[d].sentences);if(0===e.size||0===f.size)continue;let g=0;for(let a of e)f.has(a)&&(g+=1);let h=g/Math.min(e.size,f.size);h>=.3&&g>=3&&c.push({level:"warning",severity:"warning",category:"structure",owner:"system",repairability:"llm_repairable",message:`${a.title} 内「${a.sections[b].title}」与「${a.sections[d].title}」正文重复(${g} 句重合,占 ${Math.round(100*h)}%)`,suggestion:"两个小节正文出现大量重复句子:后写的小节必须围绕本小节主题差异化重写,删除复制自另一小节的内容,只保留本小节专属做法与参数。"})}return c.slice(0,20)}function V(a){let b=a.split(C),c=[];for(let a=0;a<b.length;a+=1){let d=b[a]||"",e=d.trim();if(!(e&&!/^\|/u.test(e)&&(e.match(/\|/gu)||[]).length>=2&&!/^#{1,6}\s/u.test(e)&&!F(e)&&c.length>0&&G(c[c.length-1]||""))){c.push(d);continue}let f=e.split("|").map(a=>a.trim()).filter(Boolean);if(f.length<2){c.push(d);continue}if(F(c[c.length-1]||"")){c.push(`| ${f.join(" | ")} |`);continue}let g=c[c.length-1]||"",h=`${g.replace(/\s*\|\s*$/u,"")}${f[0]}`,i=f.slice(1).join(";");c[c.length-1]=`${h}${i?`;${i}`:""} |`}return c.join("\n")}function W(a){return function(a){let b=a.split("\n"),c=a=>/^\s*\|/u.test(a)||F(a),d=[];for(let a=0;a<b.length;){let e=b[a]||"";if(!c(e)){d.push(e),a+=1;continue}let f=a;for(;f<b.length&&c(b[f]||"");)f+=1;let g=b.slice(a,f);if(g.length<2){d.push(e),a+=1;continue}d.length>0&&(d[d.length-1]||"").trim()&&d.push(""),d.push(...g),(a=f)<b.length&&(b[a]||"").trim()&&d.push("")}return d.join("\n")}((function(a){let b=a.split(/\r?\n/u),c=[],d=a=>{let b=a.map(a=>a.trim().replace(/^\|/u,"").replace(/\|$/u,"").split(/(?<!\\)\|/u).map(a=>a.trim())),d=Array.from({length:Math.max(...b.map(a=>a.length))},(a,c)=>b.some((a,b)=>1!==b&&!!a[c]?.trim())),e=b.map((a,b)=>{let c=d.map((b,c)=>b?a[c]||"":null).filter(a=>null!==a);return 1===b?I(c.length):`| ${c.join(" | ")} |`});c.push(...e)};for(let a=0;a<b.length;a+=1){if(!G(b[a])||!F(b[a+1]||"")){c.push(b[a]);continue}let e=[];for(;a<b.length&&G(b[a])&&!(e.length>0&&F(b[a+1]||""));)e.push(b[a]),a+=1;d(e),a-=1}return c.join("\n")})(J(V(E(z(N(function(a){let b=a.trim(),c=/^```(?:markdown|md)?\s*\n([\s\S]*?)\n```\s*$/iu.exec(b);return c?c[1].trim():a}(a)).replace(/(\d[ \t]*)\b(m|㎡)\s*2\b(?!\.\d)/giu,"$1平方米").replace(/(\d[ \t]*)\bm\s*[²2]\b(?!\.\d)/giu,"$1平方米").replace(/(\d[ \t]*)\b(m|㎥)\s*3\b(?!\.\d)/giu,"$1立方米").replace(/(\d[ \t]*)\bm\s*[³3]\b(?!\.\d)/giu,"$1立方米").replace(/\bmm2\b/giu,"平方毫米").replace(/\bcm2\b/giu,"平方厘米").replace(/\bkm2\b/giu,"平方千米").replace(/(\d+(?:\.\d+)?)平方(?:\d+(?:\.\d+)?)?(?=\d|[,,;;))]|\s|$)/gu,"$1平方米").replace(/原则上/gu,"").replace(/(?<=\d)[ \t]*[xX*xX*][ \t]*(?=\d)/gu,"\xd7").replace(/\s*×\s*/gu,"\xd7").replace(/\s*≤\s*/gu,"≤").replace(/\s*≥\s*/gu,"≥").replace(/\s*±\s*/gu,"\xb1")))))).replace(/^####\s+(.*?)(.{2,4})\2\s*$/gmu,"#### $1$2").split(/\r?\n/u).map(a=>(a=(a=a.replace(/(?<=[。;;])(?=#{3,4}\s+\S)/gu,"\n\n")).replace(/^([^|]*[。;;])\s*(\|[^|\n]+\|\s*)$/u,"$1\n$2"),p.test(a)&&(a=a.split(/(?<=[。;!?])/u).filter(a=>!p.test(a)).join("")),a)).join("\n").replace(/^\*\*([^*\n]{4,40})\*\*\s*$/gmu,(a,b)=>{let c=b.trim();return/[::。!!??,,、]$/u.test(c)||/^(?:注意|提示|备注|警告|说明)/u.test(c)?a:`#### ${c}`}).replace(/承包人案/gu,"方案").replace(/承包人法(?=[::])/gu,"施工方法").replace(/承包人法/gu,"方法").replace(n,"").replace(/(^|\n)---\s*\n+(?=以上内容已依据)/gu,"$1").replace(/^以上内容已依据[\s\S]*?(?=\n\s*\n)/gmu,"").replace(q,"").replace(r,"").replace(s,"").replace(d.tK,"").replace(/^#\s+/gmu,"").replace(d.VX,"").split(/\r?\n/u).filter((a,b,c)=>{let d=b>0?(c[b-1]||"").trim():"",e=d&&!/^\s*\|/u.test(d)?(0,g.GQ)(d.replace(/^#{1,6}\s+/u,"")):"",f=(0,g.GQ)(a.trim().replace(/^#{1,6}\s+/u,""));if(e&&e.length<=30&&y(e)&&f.length>0&&f.length<=12&&!/^#{1,6}\s/u.test(a.trim())&&!/^\s*\|/u.test(a.trim()))return!1;let h=a.trim();if(!h)return!0;if(/^####\s+.*(?:补充条款|评标办法|投标须知)/u.test(h)||/该小节围绕.+进行补充说明/u.test(h)||/仅作为内部事实提取依据|正式正文不得引用文件名|后台事实|内部事实/u.test(h))return!1;if(/^\s*\|/u.test(h)||/^\s*\|?\s*:?-{3,}:?/u.test(h))return!0;let i=(0,g.GQ)(h.replace(/^#{1,6}\s+/u,""));if(/^(?:雨季|冬季|高温|台风|大风等特殊气候|雨季、冬季、高温、台风、大风等特殊气候)$/u.test(i)||i.length<=1)return!1;let j=/^#{1,6}\s/u.test(h),k=i.length<=30&&!/[。;!?]$/u.test(i);if((j||k)&&y(i))return!1;if(!j&&/[和与在为对将]$/u.test(i)){let a=c.slice(b+1).map(a=>a.trim()).find(a=>a.length>0)||"";if(!a||/^#{1,6}\s/u.test(a))return!1}let l=i.length<=40;if(l&&/[,、]$/u.test(i))return!1;if(!j&&l&&/(通过|包括|如下|主要包括)$/u.test(i)){let a=c.slice(b+1).map(a=>a.trim()).find(a=>a.length>0)||"";return/^#{1,6}\s/u.test(a)||!a}return!0}).join("\n").replace(/\n{3,}/gu,"\n\n").trim())}let X=["以下规则仅用于保障导出格式正确和事实安全,不得覆盖用户在提示词中已明确的要求。\n严禁使用“根据/依据招标文件、补疑澄清文件、工程量清单及设计图纸”等资料来源罗列开头;正文必须直接写项目事实、施工内容、控制措施、验收节点。编制依据类小节除外:该小节可集中罗列编制依据文件清单。\n禁止模板化空话与流程套话:不同小节必须写各自专属的专业内容,逐节落位本项目工程量、设备规格、工艺参数与验收标准,不得复制相同段落,不得用泛化的流程描述代替专业内容;正文末尾不得输出自我总结或合规声明段落。",f.yF,"【内容落地五要素】每项管控措施必须写全五要素:方案 + 流程 + 责任人 + 时间节点 + 验收标准;责任人落到具体岗位(项目经理/技术负责人/施工员/质检员/安全员/材料员等),检查频次量化到每日/每周/每月/不少于X次,整改落到“整改→复查→销项”闭环。禁止只写“加强、落实、确保”式无责任、无标准、无频次的空话。\n【闭环句式密度硬约束】全文每 1500 字至少 1 段完整闭环句式:同一自然段内必须同时出现责任岗位(项目经理/技术负责人/施工员/质检员/安全员/材料员/试验员等)+ 检查频次(每日/每周/每月/不少于X次/定期)+ 整改闭环(整改/复查/销项/复验)三要素,缺一不可;禁止措施段落只有频次数字而无责任岗位,或只有岗位口号而无量化频次。\n【闭环句式变体池(硬约束)】上述闭环三要素必须用**至少 5 种不同的句式结构**表达,例如:①「由X岗位每Y检查Z,发现问题即时整改并复查销项」;②「X工序由X岗位负责,每日不少于N次检查,不合格返工后由X复查确认」;③「实行X岗位每日巡查制度,问题登记后限期整改、由X验收销项」;④「X岗位每周检查并留存记录,整改结果经X复核后销项」;⑤「对X项由X岗位每月专项检查,问题整改完成后复查验收」。**同一句式结构的使用次数不得超过全文闭环句式总数的五分之一**(句模复读检测按结构帧计数,单一结构帧超阈值即判模板化并扣分);相邻小节不得以同一句式开头。\n【空话禁用】措施句不得使用无动作对象、无量化标准的宣传口号式短语作为核心表述,不得以单字虚词(合理、充分、完善、切实、尽量、适时)作为措施句核心动词;一律改写为“责任岗位 + 执行动作 + 量化标准 + 检查频次 + 整改闭环”句式。\n【评分点响应】段落首句先回应本节评分点或招标评审关键词,再展开具体措施;一段只写一个主题,避免多个得分点混在大段文字中;三级标题尽量直接放置评分关键词。\n【数据表格化】关键数据(建筑面积、层数、总工期、开工竣工节点、设备型号数量、管理人员配置、劳动力人数、材料批次、养护天数、检测频次、检验批划分)优先用表格呈现,不藏在正文大段文字中;正文中数据密集型内容(多组对比数值、多岗位职责分工、多阶段资源配置、多节点工期安排、多类管控指标、多工种劳动力分配)宁可多用表格,直观性优于纯文字叙述。表格前必须有 1~2 句引导叙述说明表格作用与关键结论,表格不能替代小节正文。每张表格应有说明性标题或表前引导句点名用途;同一主题同一数据不得重复堆叠凑数,但内容较多的主题可合理分组为多张表。\n【工艺参数密度】正文每 1000 字至少落位 6 处带单位的量化工艺参数(如 20mm、C30、0.5MPa、养护 28 天、搭接长度 500mm、压实度 95%、含水率 3%),均匀分布在各章节而非集中在个别小节;参数必须来自绑定材料或行业通用规范值,不得编造。当绑定材料可提供的参数不足该密度时,以材料全部参数落位为准,禁止用行业先验虚构参数凑数。\n【工序顺序表达】施工流程、施工方法、检验验收类叙述必须有清晰的工序顺序表达,工序环节按先后顺序分步展开(相邻小节不得同句式开头,同一句式全文不得反复使用,禁止以固定句模复读)。每个分部分项方案至少 1 处 3 环节以上的工序顺序表达,全文含工序顺序表达的段落占比不低于 8%。\n【数据自洽】全文核心数据(工程名称、建设地点、总工期、建筑面积、层数、人员、机械、材料批次、施工阶段划分、危大工程清单)必须前后一致,任何跨章冲突、参数矛盾即为内容缺陷;数据以绑定材料与计划推导结果为准,不得一处一改。\n【工艺黄金公式】工艺描述按“工艺名称 + 来源依据 + 适用范围 + 核心工序(按施工顺序 3~5 步)+ 质量控制要点(1~2 个量化指标)”展开;提及规范标准必须带编号(如 GB 50204-2015)并采用现行有效版本,不得虚构或引用已废止版本。\n【重难点公式】重难点 = 项目具体条件 + 难度分析 + 影响后果;工程重点 3~5 条、工程难点 3~4 条,每个重难点必须在后续对应章节给出解决措施形成跨章闭环。\n【低雷同】不同章节不得复制相同段落;同类措施必须通过句式重构、数据替换、流程细化差异化表达;项目概况叙述(位置+规模+建设内容+工期+质量目标的连写段)全文只允许在项目基本信息表引导段出现一次,特点分析、重难点分析等小节直接切入特点与对策,禁止再次粘贴项目概况段;不写“本工程严格执行国家有关标准规范”式通用万能句。\n项目概况只交代一次:工程地点、建设规模(总建筑面积)、计划工期、改造范围、保留商铺等总述信息,只在项目概况/工程概况类章节集中交代。其他章节不得以“本项目为……”开头整段复述项目概况;正文直接写本专业内容,确需数据支撑时只引用所需的具体数字(如“按计划工期倒排”“针对改造范围面积”),不复述面积、商铺、工期的完整概况段。\n【导出格式】章标题用 ## ,节标题用 ### 加数字编号(如 1.1),小节标题用 #### 加数字编号(如 1.1.1)。禁止用数字编号或粗体代替 ###/#### 标题。\nMarkdown 表格格式硬约束:凡是输出 Markdown 表格,必须使用标准 GFM 表格格式。\n表格必须包含表头行、分隔线和数据行;表头下一行必须是分隔线,例如 |---|---|。\n禁止只输出连续的“| 字段 | 值 |”裸表格行;两列键值信息表默认使用表头 | 信息项 | 内容 |。\n表头、分隔线和数据行必须连续,中间不得插入正文、说明、空行或补充段落。\n表格数据完整性硬约束:数据行每一列都必须有具体数据值,不得出现空单元格;不得用“—/若干/约/待定/暂无/不适用”等占位或模糊表达代替具体数据(**仅**合计/小计/总计/累计行的“—”为不适用语义,可保留)。**规格型号列必须写具体型号或规格**:机械设备由投标人自行选型时,选型结论本身就是必须写出的值(小型机具写型号或额定参数),不得以“—”留空;不得凭空编造型号。数据优先取自本项目资料与蓝图权威锚点;计划类数值(人数、台班、进度时间)必须原样引用蓝图推导值,不得按工程量、工期或定额自行推算另设。\n表格名称/标题不得占用表格单元格(如“竣工清理与移交计划表”作为表头第一格导致整表错位);表名写在表格上方的正文叙述中,表内第一行从表头列名开始。\n正文表格不得展示后台溯源列或系统过程列,如“资料来源/说明”“资料来源/证明”“知识库来源”等。\n项目名称、项目编号、招标人/业主/建设单位、建设地点、建设规模、计划工期、质量标准、合同估算价等项目基础信息,只能在项目基本信息表中集中输出一次;后续章节如需引用,应写入正文或专业表格的业务字段,不得重复生成项目基础信息键值表。\n表头差异化硬约束:全文各表格表头不得完全相同——各章同构控制表(如“关键节点|计划完成时间|责任岗位|投入资源|检查频次|滞后纠偏措施”)必须加本章主题限定,如首列表名改为“进度关键节点”“质量关键节点”“劳动力关键节点”等主题词,或表前引导句点名用途;禁止全文 3 处及以上完全相同的表头堆叠(同表头多表属模板化凑数形态,评标低分项)。\n【段落格式】段落之间必须空行(双换行)分隔,不得用单换行连续写大段文字。列表项逐行独占。步骤描述之间加空行。",j.Ru].join("\n"),Y=['只生成当前节及其节内三级小节正文,不生成其他同级节,不重复章节一级标题。\n优先使用当前模板、用户要求、绑定提示词和绑定材料中的事实;项目专属事实(具体数值、时间、规格、人名、品牌、责任主体)缺少依据时不得编造。\n禁止编造具体日期:开工日期、竣工日期、具体某月某日只有在绑定材料明确提供时才可写入;材料未提供具体日期时,进度安排一律用相对工期表达(如"开工令下发后第7日""第1日~第7日"),不得写"2026年8月8日"等绝对日期。\n小节应有实质正文;除非用户或模板明确要求纯表格,否则表格只能作为辅助表达,不能整节只有表格。\n不得用通用兜底段落、空泛管理话术或后台缺料说明冒充正文;信息不足时只写已有事实、适用边界和待复核口径。\n小节标题中的工程类别必须在本节正文有对应施工内容;不得照抄工程量清单章节汇总行名称,本项目未实施的工程类别不得出现在标题与正文中。\n除非绑定材料明确提供图集编号,否则不得写“执行/参照XX图集”类引用;做法描述直接写构造层次与材料规格。',f.ch].join("\n"),Z="你是专业施工组织设计文档生成智能体,承担文档结构规划、正文写作、质量评审与局部修复任务。\n通用硬约束:\n1. 事实分级:项目专属事实(工期、金额、工程量、建设规模、人名、公司、品牌、供应商、材料规格、日期节点)必须来自绑定材料,不得编造;公共专业知识(法律法规名称、标准规范编号 GB/JGJ/CJJ/DB 系列、通用施工工艺与行业惯例)可依据现行有效版本直接引用,不得虚构编号或引用已废止版本。\n2. 输出中不得出现后台流程话术(知识库、检索、资料类型、提示词角色、规范包、事实字段、缺失项、校验结果、资料未提供、未检索到等)。\n3. 严格遵守调用点给出的输出契约:JSON 调用只返回 JSON,正文调用遵循 Markdown 结构要求。";function $(){return[Z,X].join("\n\n")}function _(){return[$(),"你是施工组织设计文档写作专家。",Y].join("\n\n")}function aa(a){return[$(),a].join("\n\n")}function ab(a){return(0,g.GQ)(a.replace(/^#+\s*/u,"")).replace(/^(?:第)?[一二三四五六七八九十百千万\d]+章\s*/u,"").trim().replace(/\s+/gu,"")}function ac(a,b){let c=ab(a),d=ab(b);return!!(c&&d&&c===d)}function ad(a){let b=a.split(/\r?\n/u),c=[],d="";for(let a of b){let b=a.trim(),e=/^##\s+(#{2,5})\s+(.+)$/u.exec(b);if(e){let a=e[1]||"",b=(e[2]||"").trim();b&&!ac(b,d)&&(c.push(`${a} ${(0,g.GQ)(b)}`),d=b);continue}let f=/^(#{1,6})\s+(.+)$/u.exec(b);if(f){let b=(f[2]||"").trim();if(b){if(ac(b,d))continue;d=b}c.push(a);continue}b&&(d=""),c.push(a)}return c.join("\n").replace(/\n{3,}/gu,"\n\n")}function ae(a,b,c){let d=new Set;for(let e=b;e<c;e+=1){let b=a[e].trim();if(!(/^#{1,6}\s/u.test(b)||/^\|.*\|$/u.test(b)))for(let a of b.split(/[。;;]/u)){let b=a.trim();b.length>=16&&d.add(b.replace(/[\s\p{P}]+/gu,""))}}return d}function af(a){let b=a.split(/\r?\n/u),c=[];for(let a=0;a<b.length;a+=1){let d=/^(#{2,3})\s+(.+)$/u.exec(b[a].trim());d&&(c.length>0&&(c[c.length-1].end=a),c.push({level:d[1].length,title:d[2].trim(),normalized:d[2].trim().replace(/^\d+(?:\.\d+)*\s*/u,"").replace(/[\s::、。,,;;/|—-]/gu,""),start:a,end:b.length}))}if(0===c.length)return a;let d=[];for(let a=0;a<c.length;a+=1){let e=c[a];if(2!==e.level)continue;let f=c.findIndex((b,c)=>c>a&&2===b.level),g=f>=0?c[f].start:b.length,h=c.find(a=>a!==e&&3===a.level&&a.normalized===e.normalized&&a.start>e.start&&a.start<g);if(!h)continue;let i=ae(b,e.start+1,e.end),j=ae(b,h.start+1,h.end),k=[...i].filter(a=>j.has(a)).length,l=Math.min(i.size,j.size);if((l>0?k/l:0)>=.5){let a=b.slice(e.start+1,e.end).join("\n").length>=b.slice(h.start+1,h.end).join("\n").length?h:e;d.push({start:a.start,end:a.end,downgrade:!1})}else d.push({start:e.start,end:e.start,downgrade:!0})}if(0===d.length)return a;let e=[];for(let a=0;a<b.length;a+=1){if(d.some(b=>!b.downgrade&&a>=b.start&&a<b.end))continue;let c=d.find(b=>b.downgrade&&b.start===a);e.push(c?b[a].replace(/^##\s+/,"### "):b[a])}return e.join("\n").replace(/\n{3,}/gu,"\n\n")}function ag(a){return az(a)}function ah(a){let b=a.split(/\r?\n/u),c=[],d=!1;for(let a of b)/^\s*(?:```|~~~)/u.test(a)&&(d=!d),c.push(d);let e=a=>{for(let d=a+1;d<b.length;d+=1)if(!c[d]&&/^#{1,3}\s/u.test(b[d].trim()))return d;return b.length},f=new Map,g=new Set,h=new Map,i=[],j=0;for(let a=0;a<b.length;a+=1){if(c[a])continue;let d=b[a].trim();if(/^#{1,2}\s/u.test(d)){j+=1;continue}let k=/^###\s+(.+)$/u.exec(d);if(!k)continue;let l=az(k[1]||"");if(l.length<2)continue;let m=`${j}::${l}`,n=e(a),o=f.get(m);if(!o){f.set(m,{start:a,end:n,fingerprints:ae(b,a+1,n)});continue}let p=b.slice(a+1,n).join("\n").trim(),q=ae(b,a+1,n),r=[...q].filter(a=>o.fingerprints.has(a)).length,s=Math.min(o.fingerprints.size,q.size);if(!p||s>0&&r/s>=.5)i.push(`删除重复同名小节:${d}`);else{let c=b.slice(a+1,n).join("\n").trim(),e=h.get(o.end)||[];e.push("",...c.split("\n"),""),h.set(o.end,e),i.push(`合并同名小节内容:${d}`)}for(let b=a;b<n;b+=1)g.add(b)}if(0===i.length)return{markdown:a,fixedCount:0,details:i};let k=[];for(let a=0;a<b.length;a+=1){let c=h.get(a);c&&k.push(...c),g.has(a)||k.push(b[a])}let l=h.get(b.length);return l&&k.push(...l),{markdown:k.join("\n").replace(/\n{3,}/gu,"\n\n"),fixedCount:i.length,details:i}}function ai(a){let b=a.split(/\r?\n/u),c=[],d=[],e=[],f=()=>{if(0===e.length)return;let a=e.join("\n").trim();if(e=[],!a)return;let b=a.replace(/[\s\p{P}]+/gu,"");if(!(b.length>=24&&d.includes(b)))for(let e of(d=[...d,b].slice(-3),a.split(/\n/u)))c.push(e)};for(let a of b){let b=a.trim();if(/^#{1,6}\s/u.test(b)){f(),c.push(a),d=[];continue}if(""===b){f(),c.push(a);continue}e.push(a)}return f(),c.join("\n")}function aj(a){return[...new Set([...a.matchAll(/^###\s+(.+)$/gmu)].map(a=>(0,g.GQ)(a[1]||"")).filter(a=>a.length>=2&&a.length<=80).filter(a=>!y(a)).filter(a=>!/^\d+(?:\.\d+){2,}\s+/u.test(a)))]}function ak(a){let b=a.split(/\r?\n/u),c="",d=0;return b.map(a=>{let b=/^\*\*([^*]{2,40}表)\*\*\s*$/u.exec(a.trim());if(b&&c)return d+=1,`#### ${c}.${d} ${(0,g.GQ)(b[1]||"")}`;let e=/^###\s+(\d+\.\d+)\s+.+$/u.exec(a.trim());if(e)return c=e[1],d=0,a;if(/^##\s+/u.test(a.trim()))return c="",d=0,a;let f=/^(#{4,5})\s+(.+)$/u.exec(a.trim());if(f){if(!c)return"#####"===f[1]?a.replace(/^\s*#####/u,"####"):a;let b=(f[2]||"").trim(),e=(0,g.GQ)(b.replace(/^\d+\.\d+\.\d+\s+/u,""));return e?(d+=1,`#### ${c}.${d} ${e}`):a}return a}).join("\n").replace(/\n{3,}/gu,"\n\n").trim()}function al(a){let b=[],c="";for(let d of a.split(/\r?\n/u)){let a=d.trim(),e=/^###\s+(\d+\.\d+)\s+.+$/u.exec(a);if(e){c=e[1];continue}if(/^##\s+/u.test(a)&&(c=""),!c)continue;let f=/^####\s+(.+)$/u.exec(a);if(f){let a=(f[1]||"").trim();RegExp(`^${av(c)}\\.\\d+\\s+\\S`,"u").test(a)||b.push({level:"warning",message:`三级小节缺少 ${c}.x 编号:${(0,g.GQ)(a)}`,suggestion:"三级小节必须使用“#### 章号.节号.序号 标题”。"})}}return b}function am(a){let b=a.replace(/\*+/gu,"").trim();if(y(b))return"";let c=(0,g.GQ)(b).replace(/^[-—–]\s*/u,"").trim();return y(c)||/^(?:雨季|冬季|高温|台风|大风)(?:[、,](?:雨季|冬季|高温|台风|大风))*等特殊气候$/u.test(c)||/^(?:雨季|冬季|高温|台风|大风)$/u.test(c)?"":c}function an(a=[]){return[...new Set(a.map(am).filter(a=>a.length>=2))]}function ao(a){return["## 目录","",...a.flatMap((a,b)=>{let c=an(a.sections||[]);return[`${(0,g.tb)(b,a.title)}`,...c.map((a,c)=>` ${function(a,b,c){let d=(0,g.GQ)(c);return!function(a){let b=/^\s*(\d+)\.(\d+)[..、]?\s+(.+)$/u.exec(a);return!!b&&(0,g.GQ)(b[3]||"").trim()===(0,g.GQ)(a).trim()}(c)?`${a+1}.${b+1} ${d}`:d}(b,c,a)}`)]})].join("\n")}function ap(a){return a.replace(/<div class="document-cover">[\s\S]*?<\/div>\s*(?:<div class="page-break"><\/div>\s*)?/giu,"").replace(/^#\s+.+\n{1,2}/u,"")}function aq(a){return a.replace(/^##\s+目录\s*$[\s\S]*?(?=\n<div class="page-break"><\/div>|\n##\s+第[一二三四五六七八九十百千万\d]+章|\n##\s+)/gmu,"").replace(/^<div class="page-break"><\/div>\s*(?=##\s+第[一二三四五六七八九十百千万\d]+章)/gmu,"")}function ar(a){let b=!1;return a.replace(/^##\s+目录\s*$[\s\S]*?(?=\n<div class="page-break"><\/div>|\n##\s+)/gmu,a=>b?"":(b=!0,a)).replace(/\n{3,}/gu,"\n\n").trim()}function as(a,b){let c=ar(a);b.forEach((a,b)=>{let d=(0,g.GQ)(a.title),e=RegExp(`^##\\s+(?:第[一二三四五六七八九十百千万\\d]+章\\s*)?${av(d)}\\s*$`,"mu");c=e.test(c)?c.replace(e,`## ${(0,g.tb)(b,a.title)}`):c});let d=c.split(/\r?\n/u),h=[];d.forEach((a,b)=>{/^##\s+第[一二三四五六七八九十百千万\d]+章\s+/u.test(a.trim())&&h.push(b)});let i=h.map((a,b)=>{let c=h[b+1]??d.length,e=!1;return d.slice(a+1,c).some(a=>{let b=a.trim();if(e){if(!/^##\s/u.test(b))return!1;e=!1}return/^##\s+目录\s*$/u.test(b)?(e=!0,!1):/^##\s+.+/u.test(b)||/^###\s+.+/u.test(b)})}),j=-1,k=0,l=0,m="",n="",o=new Set,p="",q=a=>{let c=b[j]?.sections||[],d=az(a),e=c.findIndex(a=>az(a)===d);if(e>=0)return e;let g=(0,f.zd)(a,c);if(!g)return -1;let h=(0,f.T9)(g.plannedTitle);return c.findIndex(a=>(0,f.T9)(a)===h)},r=(a,c)=>{let d=am(a);if(!d||y(a)||y(d))return"";let e=q(d),h=b[j]?.sections||[],i=k+1,r=e>=0?az(h[e]):az(d);if(o.has(r))return l+=1,`#### ${j+1}.${k}.${l} ${d}`;k=i,l=0,m=c||`${j+1}.${k}`,n=e>=0?(0,g.GQ)(h[e]):d,o.add(r);let s=`### ${j+1}.${k} ${e>=0?(0,g.GQ)(h[e]):d}`;if(e>=0){let a=(0,f.zd)(d,[h[e]]);if(a){let b=(0,f.RM)(a.remainder,p);if(b)return`${s}
|
|
27
|
-
|
|
28
|
-
${b}`}}return s},s=(a,c)=>{let d=az(a),e=q(a)>=0&&!o.has(d);return!k||c&&c!==m&&(0===(b[j]?.sections||[]).length||e)?r(a,c):(l+=1)<=4?`#### ${j+1}.${k}.${l} ${a}`:`**${a}**`},t=!1;return d.map((a,c)=>{let f=a.trim();if(/^#{2,4}\s/u.test(f)){let a=[];for(let b=c+1;b<d.length&&a.length<8&&!/^\s*#{1,6}\s/u.test(d[b]);b+=1)a.push(d[b]);p=a.join("\n")}else p="";if(/^##\s+目录\s*$/u.test(f))return t=!0,a;if(t){if(!/^##\s/u.test(f))return a;t=!1}if(/^##\s+第[一二三四五六七八九十百千万\d]+章\s+/u.test(f))return j+=1,k=0,l=0,m="",n="",o=new Set,a;let h=/^##\s+第[一二三四五六七八九十百千万\d]+节\s+(.+)$/u.exec(f);if(j>=0&&h)return r(h[1]||"");let u=/^##\s+\d+[..、]\s+(.+)$/u.exec(f);if(j>=0&&u)return r(u[1]||"");let v=/^##\s+(\d+)\.(\d+)\s+(.+)$/u.exec(f);if(j>=0&&v)return r(v[3]||"",`${v[1]}.${v[2]}`);let w=/^##\s+(.+)$/u.exec(f);if(j>=0&&w){let b=(0,g.GQ)(w[1]||"");return/^本章目录$/u.test(b)?"":/^附录/u.test(b)||/^附表\s*[一二三四五六七八九十\d]{1,3}/u.test(b)?a:r(b)}let x=/^###\s+(?:(\d+)\.(\d+)\s+)?(.+)$/u.exec(f);if(j>=0&&x)return r(x[3]||"",x[1]&&x[2]?`${x[1]}.${x[2]}`:void 0);let y=/^####\s+(\d+)\.(\d+)(?!\.)\s+(.+)$/u.exec(f);if(j>=0&&y){let a=(0,g.GQ)(y[3]||""),c=e.V.test(n),d=0===(b[j]?.sections||[]).length,f=q(a)>=0;return!i[j]&&!c&&(f||d)?r(y[3]||"",`${y[1]}.${y[2]}`):s(a,m)}let z=/^####\s+(?:(\d+)\.(\d+)\.(\d+)\s+)?(.+)$/u.exec(f);if(j>=0&&z){let a=z[1]&&z[2]?`${z[1]}.${z[2]}`:m;return s((0,g.GQ)(z[4]||""),a)}return a}).filter(a=>""!==a).join("\n")}function at(a,b){let c=a.replace(/^\*\*([^*\n]{4,40})\*\*\s*$/gmu,(a,b)=>{let c=b.trim();return/[::。!!??,,、]$/u.test(c)||/^(?:注意|提示|备注|警告|说明)/u.test(c)?a:`#### ${c}`}).replace(/承包人案/gu,"方案").replace(/承包人法(?=[::])/gu,"施工方法").replace(/承包人法/gu,"方法").replace(/(?:本|我)施工方/gu,"我公司").replace(/(?:本|我)投标人/gu,"我公司").replace(/高度重视/gu,"严格落实").replace(/重中之重/gu,"关键控制事项");for(let a of b?.forbiddenTerms||[])a&&/^(?:报价明细表|最高投标限价|招标控制价)$/u.test(a)&&(c=c.split(/\r?\n/u).filter(b=>!RegExp(av(a),"u").test(b)).join("\n"));return c}function au(a,b,c){if(!b)return at(a);let d=c?a:function(a,b){let c=a;for(let a of b?.requiredTables||[])c=function(a,b){if(/项目基本信息/u.test(b)&&(/项目基本信息/u.test(a)||/\|\s*信息项\s*\|\s*内容\s*\|/u.test(a)||/\|\s*项目名称\s*\|[^\n|]+\|/u.test(a))||RegExp(av(b),"u").test(a))return a;let c=/项目基本信息/u.test(b)?"":`**${b}**
|
|
29
|
-
|
|
30
|
-
| 控制项目 | 控制内容 | 执行要求 | 复核要求 |
|
|
31
|
-
|---|---|---|---|
|
|
32
|
-
| ${b.replace(/表$/u,"")} | 依据招标文件、施工图设计文件、工程量清单和施工组织安排填写 | 实施前完成专业复核、审批确认和交底闭环 | 不采用无依据的工程实体参数 |`;if(!c)return a;let d=/项目基本信息|概况/u.test(b)?/工程概况|项目概况/u:/应急/u.test(b)?/主要施工方法|应急|安全/u:/材料|物资/u.test(b)?/物资|材料/u:/机械|设备/u.test(b)&&!/检测|试验/u.test(b)?/机械|设备/u:/检测|试验/u.test(b)?/质量|检测|试验/u:/劳动力/u.test(b)?/劳动力/u:/进度|工期/u.test(b)?/工期|进度/u:void 0,e=[...a.matchAll(/^##\s+(.+)$/gmu)],f=e.find(a=>d?.test(a[1]||""))||e[0];if(!f?.index&&f?.index!==0)return`${a.trim()}
|
|
33
|
-
|
|
34
|
-
${c}`;let g=e.find(a=>(a.index||0)>(f.index||0)),h=g?.index??a.length;return`${a.slice(0,h).trimEnd()}
|
|
35
|
-
|
|
36
|
-
${c}
|
|
37
|
-
|
|
38
|
-
${a.slice(h).trimStart()}`}(c,a);return c}(a,b);for(let a of(b.forbidCover&&(d=ap(d)),b.forbidToc&&(d=aq(d)),b.preferredTerms||[]))if(a.from&&a.from!==a.to&&!(a.from.length<2)){if("施工方"===a.from){d=d.replace(/施工方(?!法|案|式|针|向|面)/gu,a.to);continue}d=d.replace(RegExp(av(a.from),"gu"),a.to)}return(d=at(d,b)).replace(/\n{3,}/gu,"\n\n").trim()}function av(a){return a.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&")}function aw(a){return/\|[^\n]+\|\s*\n\s*\|\s*:?-{3,}:?\s*\|/u.test(a)}function ax(a){return a.split(/\r?\n/u).filter(a=>/^\s*\|(?:\s*:?-{3,}:?\s*\|)+\s*$/u.test(a)).length}function ay(a){let b=a.split(/\r?\n/u),c=[],d=0;for(;d<b.length;){let a=(b[d]||"").trim(),e=(b[d+1]||"").trim();if(a.startsWith("|")&&/^\|\s*:?-{3,}/u.test(e)){let a=[b[d],b[d+1]];for(d+=2;d<b.length&&(b[d]||"").trim().startsWith("|");)a.push(b[d]),d+=1;c.push(a.join("\n"));continue}d+=1}return c}function az(a){return(0,g.GQ)(a.replace(/^\s*\d+(?:\.\d+)*(?:[..、]|\s)+/u,"")).replace(/^第[一二三四五六七八九十百千万\d]+[章节篇部分]\s*/u,"").replace(/[()]/gu,a=>"("===a?"(":")").replace(/(?:\s*\(\s*(?:\d{1,3}|[一二三四五六七八九十]{1,3})\s*\))+\s*$/u,"").replace(/[\s::.。;;,,、]+$/gu,"").replace(/的(?=保障体系|管理体系|控制体系|措施|方案|计划|要求)/gu,"").replace(/[\s()()::.。;;,,、-]/gu,"").trim()}function aA(a){return a.chapters.map(a=>[`- ${a.title}`,a.sections?.length?` 规划小节:${a.sections.join("、")}`:"",a.tableSections?.length?` 表格小节:${a.tableSections.join("、")}`:"",a.tableRequirements?.length?` 表格内容要求:${a.tableRequirements.join(";")}`:"",a.tablePlans?.length?` 结构化表格规划:${a.tablePlans.map(a=>`${a.title}(${a.fields.map(a=>a.name).join("/")})`).join(";")}`:""].filter(Boolean).join("\n")).join("\n")}async function aB(a,b,c,d){if(!b)return[];let e=[],f=[...a.matchAll(s)].map(a=>(a[0]||"").replace(/^#{2,6}\s+/u,"").trim()).filter(Boolean),h=RegExp(s.source,"mu"),i=[...a.matchAll(/^#{2,6}\s+(.+)$/gmu)].map(a=>({raw:a[0]||"",title:a[1]?.replace(/^\d+(?:\.\d+)*[、..\s]*\s*/u,"").trim()||""})).filter(a=>a.title&&!h.test(a.raw)&&u.test(a.title));if(i.length>0){let a=await x(c),b=await a(i.map(a=>a.title));i.forEach((a,c)=>{b[c]&&f.push(a.title)})}f.length>0&&e.push({level:"error",message:`正文存在疑似提示词指令标题:${f.slice(0,5).join("、")}`,suggestion:"请删除或改写为正式施工组织设计小节标题。"});let j=/document-cover|^#\s+/mu.test(a),k=/^##\s+目录\s*$/mu.test(a);"required"!==b.coverPolicy||j||d?.coverForbidden||e.push({level:"error",message:"正文缺少提示词要求的封面",suggestion:"用户明确要求封面时,应保留封面内容。"}),"required"!==b.tocPolicy||k||e.push({level:"error",message:"正文缺少提示词要求的目录",suggestion:"用户明确要求目录时,应基于最终合法正文标题生成目录。"}),b.forbidCover&&j&&e.push({level:"error",message:"正文残留封面内容",suggestion:"总控提示词禁止封面时,正式正文必须直接进入第一章。"}),b.forbidToc&&k&&e.push({level:"error",message:"正文残留目录内容",suggestion:"总控提示词禁止目录时,正式正文不得生成目录或导航页。"});let l=d?.bodyTableForbidden?[]:(b.requiredTables||[]).filter(b=>!RegExp(av(b),"u").test(a)||!function(a,b){let c=a.search(RegExp(av(b),"u"));return!(c<0)&&aw(a.slice(c,Math.min(a.length,c+1600)))}(a,b));l.length>0&&e.push({level:"error",message:`正文缺少总控提示词要求的正式表格:${l.join("、")}`,suggestion:"请在对应章节补齐表名、表头、分隔线和数据行,不得只写表名或空表。"});let m=(b.requiredKeywords||[]).filter(b=>b&&!RegExp(av(b),"u").test(a));m.length>0&&e.push({level:"warning",message:`正文缺少提示词要求覆盖的关键词:${m.join("、")}`,suggestion:"请在相关章节自然补齐这些要点,避免堆砌关键词。"});let n=(b.forbiddenPatterns||[]).filter(b=>b&&RegExp(av(b),"u").test(a));n.length>0&&e.push({level:"warning",message:`正文出现提示词禁止内容:${n.join("、")}`,suggestion:"请删除或替换为正式交付表述。"});let o=(b.forbiddenTerms||[]).filter(b=>b&&!/^(?:工程造价|造价|报价|投标报价|综合单价|单价|合价|金额|税率|增值税|利润|预留金|暂列金额|兜底)$/u.test(b)&&RegExp(av(b),"u").test(a));o.length>0&&e.push({level:"warning",message:`正文残留总控提示词禁止词:${o.join("、")}`,suggestion:"请改为正式交付语言,删除后台话术、第三人称和口号式表达。"});let p=b.exactHeadings||[];if(p.length>0){let c=[...a.matchAll(/^##\s+(.+)$/gmu)].map(a=>(0,g.GQ)(a[1]||"")).filter(a=>"目录"!==a&&!/^附录/u.test(a)&&!/^附表\s*[一二三四五六七八九十\d]{1,3}/u.test(a)),d=p.map(g.GQ),f=p.filter(a=>!c.includes((0,g.GQ)(a))),h=b.forbidExtraHeadings?c.filter(a=>!d.includes((0,g.GQ)(a))):[];f.length>0&&e.push({level:"error",message:`正文缺少提示词指定一级章节:${f.join("、")}`,suggestion:"请严格按用户提示词 OUTLINE 输出一级章节。"}),h.length>0&&e.push({level:"warning",message:`正文出现提示词未允许的一级章节:${h.join("、")}`,suggestion:"请检查是否为正文内部层级误升;如不影响指定 OUTLINE 完整性,可在后续排版中并入所属章节。"})}let q=(b.forbiddenSubjects||[]).filter(b=>b&&RegExp(av(b),"u").test(a));q.length>0&&e.push({level:"warning",message:`正文残留禁用主体表达:${q.join("、")}`,suggestion:"请统一改为用户提示词指定的表达主体。"});let r=a.replace(/\s/gu,"").length;return b.minChars&&r<Math.floor(.95*b.minChars)&&e.push({level:"warning",message:`正文长度低于字数目标:当前 ${r} 字,目标不少于 ${b.minChars} 字`,suggestion:"请按章节深度扩写,但不得编造资料外事实。"}),e.map(a=>"warning"===a.level&&/提示词|禁止|禁用|必含关键词|必需表格|主体表达/u.test(a.message)?{...a,level:"error",severity:a.severity||"blocker"}:a)}function aC(a,b){if(b)return[];let c=a.search(/^##\s+附表\s*[一二三四五六七八九十\d]{1,3}/mu),d=c>=0?a.slice(0,c):a,e=(0,k.BL)(d).filter(a=>!a.captioned);if(0===e.length)return[];let f=e.slice(0,5).map(a=>a.title?`「${a.title}」`:"(无表题行)").join("、");return[{level:"error",category:"format",owner:"user",repairability:"manual_review",message:`正文 ${e.length} 张表格缺少题注编号(表X-Y):${f}${e.length>5?" 等":""}`,suggestion:"题注由系统在成稿归一阶段按「表{章号}-{表序} 表名」确定性注入;未注入的通常是无表题行的表格形态,请人工核对该表格并补表名后重新生成。"}]}function aD(a,b){if(b)return{total:0,captioned:0};let c=a.search(/^##\s+附表\s*[一二三四五六七八九十\d]{1,3}/mu),d=c>=0?a.slice(0,c):a,e=(0,k.BL)(d);return{total:e.length,captioned:e.filter(a=>a.captioned).length}}function aE(a,b,c){let d=[];for(let e of b.chapters){let b=function(a,b){let c=(0,g.YZ)(b),d=[...a.matchAll(/^##\s+(.+)$/gmu)].map(a=>({index:a.index||0,raw:a[0],title:(0,g.YZ)(a[1]||"")})),e=d.find(a=>a.title===c);if(!e)return;let f=d.find(a=>a.index>e.index&&a.title!==c),h=e.index+e.raw.length,i=f?.index??a.length;return{start:e.index,end:i,heading:e.raw,body:a.slice(h,i)}}(a,e.title);if(!b){d.push({level:"error",message:`${e.title} 正文缺少章节标题`,suggestion:"请重新生成,确保模板章节完整输出。"});continue}let f=b.heading+b.body;if(c)continue;let h=e.tablePlans||[];if(0===h.length){e.tableSections?.length&&!aw(f)&&d.push({level:"warning",category:"table",message:`${e.title} 缺少必要的正式表格`,suggestion:"建议按模板 tableSections/tableRequirements 在对应小节补充正式 Markdown 表格。"});continue}for(let a of(0,k.iv)(h,f))d.push({level:"error",category:"table",owner:"llm",repairability:"llm_repairable",message:`${e.title} 缺少计划表格:${a.title}${a.required?"(提示词必需表)":""}${a.fields.length?`(表头:${a.fields.map(a=>a.name).join("、")})`:""}`,suggestion:`请按规划表头在相关小节补齐 markdown 表格「${a.title}」,表名独立成行、表格前有引导句;表内项目特有数值必须来自项目资料或项目图谱,不得编造。`})}return d}function aF(a){return(a||"").replace(/[\s::.。;;,,、()()【】[\]「」“”"]/gu,"").replace(/表$/u,"")}function aG(a,b){let c=a.search(/^##\s+附表\s*[一二三四五六七八九十\d]{1,3}/mu),d=(c>=0?a.slice(0,c):a).replace(/<div class="document-cover">[\s\S]*?<\/div>/gu,"");if(b?.bodyTableForbidden){let a=ax(d);return 0===a?[]:[{level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"llm_repairable",message:`正文残留 Markdown 表格 ${a} 处(招标正文禁表:显式禁表句,图表仅限文末附表区)`,suggestion:"请把表格承载的数据改写为段落式连贯叙述(数值、口径保持不变),删除表格表头与分隔线结构;不得新增或删除其它正文内容。"}]}let e=b?.plannedChapterTitles;if(!e)return[];let f=new Set(e.map(a=>(0,g.YZ)(a)).filter(Boolean)),h=(b?.requiredTableTitles||[]).map(aF).filter(Boolean),i=[],j=[...d.matchAll(/^##\s+(.+?)\s*$/gmu)];return j.forEach((a,b)=>{let c=a[1]||"",e=(0,g.YZ)(c);if(!e||f.has(e))return;let l=(a.index||0)+a[0].length,m=b+1<j.length&&j[b+1].index||d.length,n=d.slice(l,m),o=ax(n);if(0===o)return;let p=(0,k.BL)(n),q=p.filter(a=>!h.some(b=>(function(a,b){let c=aF(a);return!!c&&!!b&&(c.includes(b)||b.includes(c))})(a.title,b))),r=Math.max(0,o-(h.length>0?p.length-q.length:0));if(0===r)return;let s=q.map(a=>a.title?`「${a.title}」`:"(无表题行)");i.push({level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"llm_repairable",message:`${c} 出现 ${r} 张未列入表格计划的正文表格(${s.slice(0,3).join("、")}${s.length>3?" 等":""})——正文表格须来自系统表格计划,不得自设`,suggestion:"请将表格承载数据改写为段落式连贯叙述(数值、口径保持不变),删除表格表头与分隔线结构;确属必要的表格由系统在表格计划中补齐,不得新增其它正文内容。"})}),i}function aH(a,b){if(!b)return[];let c=a.search(/^##\s+附表\s*[一二三四五六七八九十\d]{1,3}/mu),d=(c>=0?a.slice(0,c):a).replace(/<div class="document-cover">[\s\S]*?<\/div>/gu,""),e=[...d.matchAll(/!\[[^\]]*\]\([^)]*\)|<img\b[^>]*\/?>/giu)].length+[...d.matchAll(l)].length;return 0===e?[]:[{level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"llm_repairable",message:`正文残留图片/图件占位 ${e} 处(招标要求正文不得出现图片:图类内容数据化输出,图件归文末附表区)`,suggestion:"请删除图片语法、HTML 图片标签与图件占位,图片承载的信息改以段落式文字叙述补充;不得改动其它正文内容。"}]}function aI(a){let b=[...a.matchAll(/^##\s+.+$/gmu)];if(0===b.length)return a;let c=a.slice(0,b[0].index||0);for(let d=0;d<b.length;d+=1){let e=b[d].index||0,f=b[d+1]?.index??a.length,g=a.slice(e,f),h=[...g.matchAll(/^###\s+(\d+)\.(\d+)\s+.+$/gmu)];if(h.length<2){c+=g;continue}let i=h[0].index||0;c+=g.slice(0,i)+h.map((a,b)=>{let c=a.index||0,d=h[b+1]?.index??g.length;return{order:Number(a[2]||b+1),content:g.slice(c,d).trim()}}).sort((a,b)=>a.order-b.order).map(a=>a.content).join("\n\n")+"\n\n"}return c.replace(/\n{3,}/gu,"\n\n").trim()}function aJ(a,b,c={}){let d=au(m(a,!!c.forbidDrawingImages),c.promptRules,c.bodyTableForbidden),e=aI(function(a){let b=[...a.matchAll(/^##\s+(.+)$/gmu)].filter(a=>/^第[一二三四五六七八九十百千万\d]+章\s+/u.test(a[1]||""));if(0===b.length)return a;let c=a.slice(0,b[0].index||0);for(let d=0;d<b.length;d+=1){let e=b[d].index||0,f=b[d+1]?.index??a.length,h=a.slice(e,f),i=[...h.matchAll(/^###\s+(\d+)\.(\d+)\s+(.+)$/gmu)];if(1!==i.length){c+=h;continue}let j=i[0],k=(0,g.GQ)((b[d][1]||"").replace(/^第[一二三四五六七八九十百千万\d]+章\s*/u,"")),l=(0,g.GQ)(j[3]||""),m=j.index||0,n=[...h.slice(m).matchAll(/^####\s+\d+\.\d+\.\d+\s+(.+)$/gmu)];if(n.length<2||!ac(l,k)){c+=h;continue}let o=h.slice(0,m).trimEnd(),p=h.slice(m),q=p.search(/^####\s+/mu),r=q>0?p.slice(j[0].length,q).trim():"",s=n.map((a,b)=>{let c=a.index||0,e=n[b+1]?.index??p.length,f=(0,g.GQ)(a[1]||""),h=p.slice(c+a[0].length,e).trim(),i=`### ${d+1}.${b+1} ${f}`;return`${i}
|
|
39
|
-
|
|
40
|
-
${0===b&&r?`${r}
|
|
41
|
-
|
|
42
|
-
`:""}${h}`.trim()}).join("\n\n");c+=`${o}
|
|
43
|
-
|
|
44
|
-
${s}
|
|
45
|
-
|
|
46
|
-
`}return c.replace(/\n{3,}/gu,"\n\n").trim()}(ak(W(as(c.promptRules?"required"!==c.promptRules.coverPolicy||c.coverForbidden?"required"===c.promptRules.tocPolicy?ap(d):ap(aq(d)):"required"===c.promptRules.tocPolicy?d:aq(d):c.coverForbidden?ap(d):d,b))))),f=function(a,b){let c=as(ar(aq(a)),b),d=[...c.matchAll(/^##\s+(.+)$/gmu)];return b.map((a,e)=>{let f=(0,g.tb)(e,a.title),h=d.find(b=>ac(b[1]||"",a.title)||ac(b[1]||"",f));if(!h||void 0===h.index)return a.sections||[];let i=d.find(a=>(a.index||0)>(h.index||0)&&b.some(b=>ac(a[1]||"",b.title))),j=aj(c.slice(h.index,i?.index??c.length));return j.length>0?j:a.sections||[]})}(e,b),h=b.map((a,b)=>({...a,sections:(a.sections||[]).filter(Boolean).length>0?a.sections:f[b]?.length?f[b]:[]})),i=au(aI(ak(W(c.promptRules?.tocPolicy!=="forbidden"?function(a,b){let c=as(a,b),d=aq(c),e=[...d.matchAll(/^##\s+(.+)$/gmu)],f=ao(b.map(a=>{let c=e.find(b=>ac(b[1]||"",a.title));if(!c||void 0===c.index)return a;let f=e.find(a=>(a.index||0)>(c.index||0)&&b.some(b=>ac(a[1]||"",b.title))),g=d.slice(c.index,f?.index??d.length),h=aj(g),i=h.length>0?h:a.sections?.length?a.sections:[];return{...a,sections:i,content:g}})),g=/^##\s+目录\s*$/mu.exec(c);if(g?.index!==void 0){let a=g.index+g[0].length,b=c.slice(a).search(/\n##\s+第[一二三四五六七八九十百千万\d]+章/u),d=[...c.slice(a).matchAll(/\n<div class="page-break"><\/div>/gu)],e=d[0]?.index??(b>=0?b:c.length-a),h=a+e;return`${c.slice(0,g.index)}${f.trim()}${c.slice(h)}`.replace(/\n{3,}/gu,"\n\n")}let h='<div class="page-break"></div>',i=c.indexOf(h);if(i>=0){let a=i+h.length;return`${c.slice(0,a)}
|
|
47
|
-
|
|
48
|
-
${f}
|
|
49
|
-
|
|
50
|
-
${h}
|
|
51
|
-
|
|
52
|
-
${c.slice(a).trimStart()}`}return`${f}
|
|
53
|
-
|
|
54
|
-
<div class="page-break"></div>
|
|
55
|
-
|
|
56
|
-
${c}`}(e,h):as(e,h)))),c.promptRules,c.bodyTableForbidden);return{markdown:c.bodyTableForbidden?i:(0,k.gA)(i),chapters:h}}function aK(a,b={}){let c=a.chapters.map(a=>({...a,sections:an(a.sections||[])})),d=c.map((a,b)=>(function(a,b){let c=`## ${(0,g.tb)(b,a.title)}`,d=W(a.content);var e=/^##\s+.+$/mu.test(d)?d.replace(/^##\s+.+$/mu,c):`${c}
|
|
57
|
-
|
|
58
|
-
${d}`,f=a.title;let h=e.split(/\r?\n/u),i=!1;return h.filter((a,b)=>{let d=a.trim(),e=/^##\s+(.+)$/u.exec(a.trim())?.[1]||"";if(e){if(ac(e,c))return!i&&(i=!0,!0);if(b>0&&ac(e,f))return!1}return!(d&&!/^#{1,6}\s+/u.test(d)&&ac(d,f))}).join("\n").replace(/\n{3,}/gu,"\n\n").trim()})(a,b)),e=d.filter(Boolean).join("\n\n"),f=c.map((a,b)=>{if(a.sections?.length)return a;let c=as(d[b]||"",[a]),e=aj(c);return e.length?{...a,sections:an(e),content:c}:{...a,content:c}});return aJ([(0,h.nd)(a.title,a.facts),'\n<div class="page-break"></div>\n',ao(f),'\n<div class="page-break"></div>\n',e].join("\n"),c,b).markdown}[Z,"你是施工组织设计文档写作专家。",X,Y].join("\n\n")},41991:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(37047);function e(a,b){let c=Math.min(a.length,b.length),d=0;for(let e=0;e<c;e++)d+=a[e]*b[e];return d}async function f(a){if(0===a.prototypes.length)return async a=>a.map(()=>!1);let b=a.threshold??d.Eh,c=a.negativePrototypes??[],f=[...a.prototypes,...c],g=a.prototypes.length,h=a.embedDocuments?null:(0,d.VN)(),i=a.embedDocuments?await a.embedDocuments(f):await h.embedDocuments(f);if(i.length!==f.length)throw Error(`本地语义模型嵌入数量不一致:期望 ${f.length} 条,实际 ${i.length} 条`);return async d=>{if(0===d.length)return[];let f=d.map(()=>!1),j=d.map((b,c)=>a.lexicalHints&&!a.lexicalHints.test(b)?-1:c).filter(a=>a>=0);if(0===j.length)return f;let k=j.map(a=>d[a]),l=a.embedDocuments?await a.embedDocuments(k):await h.embedDocuments(k);return j.forEach((a,d)=>{let h=l[d];if(!h)return;let j=Math.max(...i.slice(0,g).map(a=>e(h,a))),k=c.length?Math.max(...i.slice(g).map(a=>e(h,a))):0;j>=b&&(0===c.length||j>k)&&(f[a]=!0)}),f}}},43378:(a,b,c)=>{c.d(b,{BL:()=>y,CG:()=>A,F4:()=>ak,K9:()=>X,T4:()=>V,Xi:()=>T,Xj:()=>C,Y$:()=>Z,aH:()=>ah,c$:()=>Y,cA:()=>aj,cR:()=>ai,gA:()=>P,iv:()=>S,l9:()=>O,lR:()=>h,n7:()=>z,nn:()=>i});var d=c(33409);function e(a){return a.replace(/\s+/gu,"").toLowerCase()}function f(a){return[...new Set(a)]}function g(a,b){let c=a=>{let b=new Set;for(let c=0;c<a.length-1;c+=1)b.add(a.slice(c,c+2));return b},d=c(e(b)),f=[...c(e(a))];return 0===f.length?0:f.filter(a=>d.has(a)).length/f.length}function h(a){if("forbidden"===a.bodyTablePolicy)return{chapters:a.chapters,unattachedRequiredTables:[]};let b=new Map,c=(a,c)=>{let d=c.title.trim();if(!d)return;let e=b.get(a)||[];e.some(a=>a.title===d||a.title.includes(d)||d.includes(a.title))||(e.push({id:`planned-table-${a}-${e.length+1}`,title:d,chapterTitle:"",section:c.section||"",required:c.required,reason:c.reason,fields:c.fields.filter(Boolean).map(a=>({name:a})).slice(0,12)}),b.set(a,e))};for(let b of a.chapters)for(let d of a.plannedTables.get(b.id)||[])c(b.id,{title:d.title,fields:d.fields,required:!1,reason:"本章小节规划产出的表格需求(按章按节规划)。"});let d=[];for(let b of a.requiredTables||[]){let f,h=b.trim();if(!h)continue;let i=0;for(let b of a.chapters){let a=function(a,b){let c=e(a).replace(/表$/u,"");if(!c)return 0;let d=0;for(let a of[b.title,...b.sections||[]]){let b=e(a);if(b){if(b.includes(c)||c.includes(b)){d=Math.max(d,1);continue}d=Math.max(d,g(c,b))}}return d}(h,b);a>i&&(i=a,f=b)}if(!f||i<.3){d.push(h);continue}c(f.id,{title:h,fields:[],required:!0,reason:"用户提示词声明的必需表格。"})}return{chapters:a.chapters.map(a=>{let c=b.get(a.id);return c?.length?{...a,tableSections:f([...a.tableSections||[],...c.map(a=>a.title)]),tableRequirements:f([...a.tableRequirements||[],...c.filter(a=>a.required).map(a=>`${a.title}:用户提示词声明的必需表格,必须真实输出为 markdown 表格,表头与行数据必须与本章内容一致。`)]),tablePlans:c.map(b=>({...b,chapterTitle:a.title}))}:a}),unattachedRequiredTables:d}}function i(a,b){let c=a.tablePlans||[];return 0===c.length?[]:c.filter(c=>!b.some(b=>(function(a,b){let c=a.tablePlans||[];if(0===c.length)return[];let d=e(b||"");return d?c.filter(a=>{let b=e(a.section||"");if(b&&(d.includes(b)||b.includes(d)))return!0;let c=e(a.title);if(c&&(d.includes(c)||c.includes(d)))return!0;let f=c.replace(/表$/u,"");return!!(f&&(d.includes(f)||f.includes(d))||f&&g(d,f)>=.6)}):c})(a,b).some(a=>a.id===c.id)))}let j=RegExp(`^.{2,36}?表`,"u"),k=/(详见|参见|参照|如[下上]|如下|如上|[下上]表|所示|附表|后表)[::。]?$/u,l=/详见下表|参见下表|参照下表|按[下上]表|如下表所示|如下表|见下表|如上表|如下所示|如下所列|列举如下|列表如下|如下[::]/u,m=/(表|计划|清单|台账|汇总|统计|安排|措施|要求|标准|参数|要点|记录|配置|情况|指标|一览|明细|方案)$/u,n=/(?:编制|建立|形成|汇总|列出|统计|整理|绘制|制定)([^,。;;::]{2,28}?(?:表|台账|清单|一览表))/u,o=/(汇总|计划|记录|清单|台账|一览|配置|控制|检查|要点|情况|措施|方案|安排|表)/gu,p="[\\d一二三四五六七八九十]+",q="[::、..]?",r=RegExp(`^表\\s*${p}(?:[--..—]\\s*${p})?\\s*${q}\\s`,"u");function s(a){return a.replace(r,"").trim()}let t=RegExp(`^表\\s*${p}\\s*[-—–-..]\\s*(?=[^\\d\\s])`,"u"),u={一:1,二:2,三:3,四:4,五:5,六:6,七:7,八:8,九:9};function v(a){if(/^\d+$/u.test(a))return Number(a);let b=0,c=0;for(let d of a)"十"===d?(b+=10*(c||1),c=0):"百"===d?(b+=100*(c||1),c=0):u[d]&&(c=u[d]);return b+c}function w(a){return a.length>=3&&a.length<=30&&m.test(a)&&/^[\u4e00-\u9fa5A-Za-z0-9()()、与及的]+$/u.test(a)}function x(a,b){let c=b-1,d=(a[c]||"").trim().replace(/^\|/u,"").replace(/\|$/u,"").split("|").map(a=>a.trim()).filter(Boolean);if(0===d.length)return;let e=d[0]||"";if(d.length>=3&&e.length>=3&&e.length<=20&&/表$/u.test(e))return{headerIndex:c,dividerIndex:b,kind:"headerCell",rawTitle:e,headerCells:d.slice(1)};for(let e=b-2;e>=0&&b-e<=8;e-=1){let f=(a[e]||"").trim();if(!f)continue;if(f.includes("|"))break;if(f.startsWith("#")){let a=f.replace(/^#{1,6}\s+/u,"").replace(/^\d+(?:\.\d+)*[、..\s]*/u,"").trim();if(/表$/u.test(a)&&a.length>=2&&a.length<=30)return{headerIndex:c,dividerIndex:b,titleIndex:e,kind:"leadIn",rawTitle:a,headerCells:d};break}let g=/^\*\*([^*\n]{2,40})\*\*$/u.exec(f);if(g)return{headerIndex:c,dividerIndex:b,titleIndex:e,kind:"line",rawTitle:g[1].trim(),headerCells:d};if(r.test(f))return{headerIndex:c,dividerIndex:b,titleIndex:e,kind:"line",rawTitle:f,headerCells:d};let h=function(a){let b="",c=l.exec(a);if(c){if(c.index<3)return"";b=a.slice(0,c.index);let d=-1;for(let a of b.matchAll(/按/gu)){let c=(a.index||0)+1,e=b.slice(c,c+30),f=e.indexOf("、"),g=e.search(/[,。;::]/u);f>=0&&(g<0||f<g)&&(d=a.index||0)}d>0&&w(b.slice(0,d).replace(/\s+/gu,""))&&(b=b.slice(0,d));let e=Math.max(...["。",";","!","?",",","、",":",":",";"].map(a=>b.lastIndexOf(a)));e>=0&&(b=b.slice(e+1)),b=b.replace(/^(?:现将|兹将|并将|现拟|以下|下面|下列)/u,"").trim()}else{let c=n.exec(a);if(!c)return"";b=(c[1]||"").trim()}return w(b=b.replace(/\s+/gu,""))?b:""}(f);if(h)return{headerIndex:c,dividerIndex:b,titleIndex:e,kind:"leadIn",rawTitle:h,headerCells:d};let i=j.exec(f)?.[0];if(i&&!/表$/u.test(f)&&!/[下上如附]表$/u.test(i)){let a=f.slice(i.length);if(a.length>=2&&!/^[::;;,,、。]/u.test(a))return{headerIndex:c,dividerIndex:b,titleIndex:e,kind:"attached",rawTitle:i,headerCells:d}}if(!(k.test(f)||/[::;;,,、]$/u.test(f)||f.includes("。"))){if(f.length<=40)return{headerIndex:c,dividerIndex:b,titleIndex:e,kind:"line",rawTitle:f,headerCells:d};break}}return{headerIndex:c,dividerIndex:b,kind:"none",rawTitle:"",headerCells:d}}function y(a){let b=a.replace(/\r/gu,"").split("\n"),c=[];for(let a=1;a<b.length;a+=1){let d=b[a];if(!(/^\s*\|?\s*:?-{3,}:?/u.test(d)&&d.includes("|")))continue;let e=x(b,a);e&&c.push({title:s(e.rawTitle),headerCells:e.headerCells,captioned:r.test(e.rawTitle.trim())})}return c}function z(a){let b=a.replace(/\r/gu,"").split("\n"),c=[];for(let a=1;a<b.length;a+=1){let d=b[a];if(!(/^\s*\|?\s*:?-{3,}:?/u.test(d)&&d.includes("|")))continue;let e=x(b,a);if(!e||"none"!==e.kind)continue;let f=[b[e.headerIndex]||"",d];for(let c=a+1;c<b.length&&c-a<=10&&(b[c]||"").trim().startsWith("|");c+=1)f.push(b[c]);c.push({headerIndex:e.headerIndex,headerCells:e.headerCells,blockText:f.join("\n")})}return c}function A(a,b){if(0===b.length)return{markdown:a,completed:0};let c=z(a);if(0===c.length)return{markdown:a,completed:0};let d=[];if(b.forEach((a,b)=>{a.fields.length<3||c.forEach((c,e)=>{let f=R(a.fields,c.headerCells);f>=.6&&d.push({planIndex:b,blockIndex:e,score:f})})}),0===d.length)return{markdown:a,completed:0};d.sort((a,b)=>b.score-a.score);let e=new Set,f=new Set,g=new Map;for(let a of d){if(e.has(a.planIndex)||f.has(a.blockIndex))continue;let d=(b[a.planIndex].title||"").trim();d&&(e.add(a.planIndex),f.add(a.blockIndex),g.set(c[a.blockIndex].headerIndex,d))}if(0===g.size)return{markdown:a,completed:0};let h=a.replace(/\r/gu,"").split("\n"),i=[];for(let a=0;a<h.length;a+=1){let b=g.get(a);b&&i.push(b,""),i.push(h[a])}return{markdown:i.join("\n"),completed:g.size}}function B(a){return a.length<2?"":a.map(a=>a.replace(/\s+/gu,"")).join("\0")}function C(a,b){let c=z(a);if(0===c.length)return{markdown:a,recovered:0,details:[]};let d=function(a){let b=new Map;for(let c of a){let a=(c||"").replace(/\r/gu,"").split("\n");for(let c=1;c<a.length;c+=1){let d=a[c];if(!(/^\s*\|?\s*:?-{3,}:?/u.test(d)&&d.includes("|")))continue;let e=x(a,c);if(!e||"none"===e.kind)continue;let f=s(e.rawTitle).trim();if(!f)continue;let g=B(e.headerCells);if(!g)continue;let h=b.get(g)??new Set;h.add(f),b.set(g,h)}}let c=new Map;for(let[a,d]of b)1===d.size&&c.set(a,[...d][0]);return c}(b);if(0===d.size)return{markdown:a,recovered:0,details:[]};let e=new Map,f=[];for(let a of c){let b=d.get(B(a.headerCells));b&&(e.set(a.headerIndex,b),f.push(`「${b}」`))}if(0===e.size)return{markdown:a,recovered:0,details:[]};let g=a.replace(/\r/gu,"").split("\n"),h=[];for(let a=0;a<g.length;a+=1){let b=e.get(a);b&&h.push(b,""),h.push(g[a])}return{markdown:h.join("\n"),recovered:e.size,details:f}}let D=/(上述|前述|相关|该项|该表|本表|该计划|此项|本项|据此|为此)/u;function E(a){return w(a)&&!/[。;!?,,.;!?]/u.test(a)}function F(a){let b=a.replace(/\r/gu,"").split("\n"),c=[];for(let a of b){let b=a.trim(),d=/^表\s*(\d+(?:[-—–]\d+)?)\s+(\S.*)$/u.exec(b);if(!d){let d=function(a){if(!a||a.startsWith("#")||a.includes("|"))return null;let b=[...a.matchAll(/表\s*(\d+)\s*[-—–-..]\s*(\d+)\s*[::]?\s*(?=\S)/gu)];for(let c=b.length-1;c>=0;c-=1){let d=b[c],e=d.index??0,f=a.slice(0,e).trimEnd();if(!/[。;!?::]$/u.test(f))continue;let g=a.slice(e+d[0].length).trim();if(E(g))return{body:f,caption:`表${d[1]}-${d[2]} ${g}`}}return null}(b);if(d){c.push(d.body,"",d.caption);continue}c.push(a);continue}let e=d[2],f=-1,g="",h=j.exec(e)?.[0];if(h&&E(h)&&e.slice(h.length).length>=8&&(f=h.length,g=h),f<0){let a=D.exec(e);if(a&&a.index>=3){let b=e.slice(0,a.index).trim();E(b)&&e.slice(a.index).length>=8&&(f=a.index,g=b)}}if(f<0){c.push(a);continue}c.push(`表${d[1]} ${g}`,"",e.slice(f).trim())}return c.join("\n")}let G=/^(?:上述|前述|相关|该项|该表|本表|该计划|此项|本项|据此|为此)/u;function H(a){let b=a.replace(/\r/gu,"").split("\n"),c=[],d=0;for(;d<b.length;){let a=(b[d]||"").trim(),e=/^表\s*\d+(?:[-—–-]\d+)?\s+(\S.*)$/u.exec(a),f=function(a,b,c){if(!c||!E(c))return null;let d=b+1;for(;d<a.length&&!(a[d]||"").trim();)d+=1;let e=d<a.length?(a[d]||"").trim():"";if(!e||!G.test(e)||e.length<8||/^(?:[#|>]|[-*]\s|\d+[.、)])/u.test(e))return null;let f=d+1;for(;f<a.length&&!(a[f]||"").trim();)f+=1;if(f>=a.length||!/^\s*\|/u.test(a[f]||""))return null;let g=f+1;for(;g<a.length&&!(a[g]||"").trim();)g+=1;let h=g<a.length?(a[g]||"").trim():"";if(!(/^\s*\|?\s*:?-{3,}:?/u.test(h)&&h.includes("|")))return null;let i=g+1;for(;i<a.length&&(a[i]||"").trim().startsWith("|");)i+=1;return{followIndex:d,nextTableStart:f,tableEnd:i}}(b,d,e?e[1].trim():"");if(!f){c.push(b[d]),d+=1;continue}let g=f.nextTableStart,h=f.tableEnd;c.push(b[d]);for(let a=d+1;a<f.followIndex;a+=1)c.push(b[a]);for(let a=g;a<h;a+=1)c.push(b[a]);c.push("",(b[f.followIndex]||"").trim()),d=h}return c.join("\n")}function I(a,b){let c=b+1;for(;c<a.length&&!(a[c]||"").trim();)c+=1;return c<a.length&&/^\s*\|/u.test(a[c]||"")}function J(a){return a.replace(/[—–-]/gu,"-")}let K=`表\\s*${p}(?:\\s*[--..—]\\s*${p})*\\s*${q}\\s*`,L=RegExp(`^${K}\\S`,"u");function M(a){return L.test((a||"").trim())}let N=RegExp(`^${K}`,"u"),O="表格题注(表名行)不要写「表X-Y」编号前缀,只写表名本身(如「主要施工机械设备配置表」)——题注编号由系统在成稿后按章内表序机械生成;正文引用表时用表名指代(如「见主要施工机械设备配置表」),不要写编号。";function P(a){let{markdown:b,stripped:c}=function(a){let b=a.replace(/\r/gu,"").split("\n"),c=b.findIndex(a=>/^##\s+附表\s*[一二三四五六七八九十\d]{1,3}/u.test(a)),d=c>=0?c:b.length,e=0;for(let a=0;a<d;a+=1){let c=b[a]||"";if(!M(c)||!I(b,a))continue;let d=c.trim();for(let a=0;a<3&&N.test(d);a+=1)d=d.replace(N,"").trim();E(d)&&(b[a]=d,e+=1)}return 0===e?{markdown:a,stripped:e}:{markdown:b.join("\n"),stripped:e}}(H(F(function(a){let b=a.replace(/\r/gu,"").split("\n"),c=new Set;for(let a=0;a<b.length;a+=1){if(!M(b[a]||""))continue;let d=a;for(;d+1<b.length&&M(b[d+1]||"");)d+=1;if(d===a)continue;let e=d+1;for(;e<b.length&&""===(b[e]||"").trim();)e+=1;if(!/^\s*\|/u.test(b[e]||"")){a=d;continue}for(let b=a+1;b<=d;b+=1)c.add(b);a=d}return 0===c.size?a:b.filter((a,b)=>!c.has(b)).join("\n")}(function(a){let b=a.replace(/\r/gu,"").split("\n"),c=[];for(let a=0;a<b.length;a+=1){if(!M(b[a]||""))continue;let d=a+1,e=0,f=-1;for(;d<b.length;){let a=(b[d]||"").trim();if(""===a){d+=1;continue}if(/^\s*\|/u.test(b[d]||"")){f=d;break}if(/^#{1,6}\s/u.test(a)||M(a)||(e+=1)>2)break;d+=1}f<0||0===e||c.push({from:a,to:f})}if(0===c.length)return a;c.map(a=>[a.from,a.to]);let d=new Set(c.map(a=>a.from)),e=new Map;for(let a of c){let c=e.get(a.to)||[];c.push(b[a.from]||""),e.set(a.to,c)}let f=[];for(let a=0;a<b.length;a+=1){let c=e.get(a);c&&f.push(...c),d.has(a)||f.push(b[a])}return f.join("\n")}(a)))));return c>0&&console.warn(`[table-caption] 4.59 R-B3 剥离模型自写题注编号 ${c} 处(编号改由注入器按章内表序机械分配)`),function(a){let b=H(F(a)),c=b.replace(/\r/gu,"").split("\n"),d=c.findIndex(a=>/^##\s+附表\s*[一二三四五六七八九十\d]{1,3}/u.test(a)),e=d>=0?d:c.length,f=[],g=0;for(let a=0;a<e;a+=1){let b=/^##\s+(.+?)\s*$/u.exec(c[a]);if(b&&!/^(目录|附表)/u.test(b[1])){let a=/^第\s*([一二三四五六七八九十百\d]+)\s*章/u.exec(b[1]);g=a?v(a[1]):g+1}if(g<1)continue;let d=(c[a]||"").trim(),e=/^表\s*(\d+(?:[-—–-]\d+)?)\s+(\S.*)$/u.exec(d);if(!e)continue;let h=e[2].trim();(I(c,a)||E(h))&&f.push({index:a,chapterNo:g,oldKey:J(e[1]),name:h})}let h=new Map;for(let a of f){let b=h.get(a.oldKey)??[];b.push(a),h.set(a.oldKey,b)}let i=new Set,j=new Set;for(let[a,b]of h)if(!(b.length<=1))for(let c of(j.add(a),b))i.add(c.chapterNo);if(0===i.size)return b;let k=new Map,l=new Map;for(let a of i)f.filter(b=>b.chapterNo===a).sort((a,b)=>a.index-b.index).forEach((b,c)=>{let d=`${a}-${c+1}`;d!==b.oldKey&&(k.set(b.index,`表${d} ${b.name}`),j.has(b.oldKey)||l.set(b.oldKey,d))});if(0===k.size&&0===l.size)return b;let m=[];for(let a=0;a<c.length;a+=1){let b=k.get(a);if(b){m.push(b);continue}if(a>=e||0===l.size){m.push(c[a]);continue}m.push((c[a]||"").replace(/(?<!附)表\s*(\d+(?:[-—–-]\d+)?)\s*(?![份个张条页行列项次台套人天年月日])/gu,(a,b)=>{let c=l.get(J(b));return c?`表${c}`:a}))}return m.join("\n")}(function(a){let b=a.replace(/\r/gu,"").split("\n"),c=b.findIndex(a=>/^##\s+附表\s*[一二三四五六七八九十\d]{1,3}/u.test(a)),d=c>=0?c:b.length,e=new Map,f=0,g=0;for(let a=0;a<d;a+=1){let c=/^##\s+(.+?)\s*$/u.exec(b[a]);if(c&&!/^(目录|附表)/u.test(c[1])){let a=/^第\s*([一二三四五六七八九十百\d]+)\s*章/u.exec(c[1]);f=a?v(a[1]):f+1,g=0}let d=b[a];if(a<1||!(/^\s*\|?\s*:?-{3,}:?/u.test(d)&&d.includes("|")))continue;let h=x(b,a);if(!h||"none"===h.kind||(g+=1,r.test(h.rawTitle.trim())))continue;let i=h.rawTitle.replace(t,"").trim();if(!i)continue;let j=`表${f}-${g} ${i}`;if("headerCell"===h.kind){let a=`| ${h.headerCells.join(" | ")} |`;e.set(h.headerIndex,[j,"",a]);continue}let k=h.titleIndex;if("line"===h.kind){e.set(k,[j]);continue}if("leadIn"===h.kind){e.set(k,[b[k]||"","",j]);continue}let l=(b[k]||"").trim().slice(h.rawTitle.length).trim();e.set(k,l?[j,"",l]:[j])}if(0===e.size)return a;let h=[];for(let a=0;a<b.length;a+=1){let c=e.get(a);c?h.push(...c):h.push(b[a])}return h.join("\n")}(b))}function Q(a){return e(a).replace(/[((][^))]*[))]/gu,"").replace(/表$/u,"")}function R(a,b){if(0===a.length||0===b.length)return 0;let c=b.map(a=>e(a)).filter(Boolean);if(0===c.length)return 0;let d=0;for(let b of a){let a=e(b.name).replace(/[((][^))]*[))]?/gu,"");a&&c.some(b=>b.includes(a)||a.includes(b))&&(d+=1)}return d/a.length}function S(a,b){if(0===a.length)return[];let c=y(b);if(0===c.length)return[...a];let d=[];a.forEach(a=>{c.forEach((b,c)=>{let e=function(a,b){let c=Q(a.title),d=Q(a.title).replace(o,"");return c&&g(c,b.title)>=.5?.9:d&&g(d,b.title)>=.5?.7:.5*(R(a.fields,b.headerCells)>=.5)}(a,b);e>0&&d.push({plan:a,index:c,score:e})})}),d.sort((a,b)=>b.score-a.score);let e=new Set,f=new Set;for(let a of d)e.has(a.plan.id)||f.has(a.index)||(e.add(a.plan.id),f.add(a.index));return a.filter(a=>!e.has(a.id))}function T(a,b){let c=[];for(let d of a){let a=d.tablePlans||[];if(0===a.length)continue;let e=b.find(a=>a.title===d.title)||b.find(a=>d.title.includes(a.title)||a.title.includes(d.title));if(!e)continue;let f=S(a,e.content);0!==f.length&&c.push({chapterTitle:d.title,planned:a.length,actual:function(a){let b=0;for(let c of a.split(/\r?\n/u))/^\s*\|?\s*:?-{3,}:?/u.test(c)&&c.includes("|")&&(b+=1);return b}(e.content),plans:f})}return c}let U=["【表格排版硬约束】每个表格的表名必须独立成行写在表格上方(表题,如“劳动力动态投入计划表”单独一行),不得并入表头首格、不得顶替首列名;表头行必须以“|”开头单独占一行,下一行紧跟“|---|”分隔行,数据行逐行以“|”开头;严禁把表头接在正文段落同一行(如“正文……。| 表头1 | 表头2 |”),输出表格前必须先换行。","每个表格前必须写 1~2 句引导叙述(说明该表的作用、数据口径与关键结论),表格不能替代所在小节全部正文;表格输出后还应围绕表中关键节点、责任分工与纠偏措施展开至少一段实施性正文。","只输出表格/清单本体和用户提示词明确要求的文字;不得输出系统来源说明、后台溯源列、固定表前后说明或占位话术。","【字段填写约束】项目特有数字、日期、工程量、规格必须来自项目资料或项目图谱,不得编造;人数、台班、进度时间等计划类数值必须原样引用蓝图权威锚点(劳动力峰值、工种构成、分阶段投入、机械台数、总工期节点),不得基于工程量或定额自行推算另设,不得留空、不得写“按需配置”“根据进度灵活调配”等空话。","【空话禁令】下列写法在表格单元格中一律禁止(视同留空,终检阻断):“按清单工程量”“按设计标高/按图纸/按设计”“按规范”“按方案”“符合设计要求/规范要求”“根据现场情况”“相关人员及时处理”“加强管理”“严格控制”。工程量列必须写**清单原值(数值+单位)**(如 12792.800m3、1200m2),规格/净距列必须写**图纸或清单给出的具体数值**;资料未给出该字段值的,写具体来源与判定依据(如“按施工图结施-03 基础平面图”),不得用“按……”搪塞。"];function V(a){let b=a.tablePlans||[];return 0===b.length?"":["【本章表格/清单结构化生成要求(硬性验收项)】","以下表格来自用户提示词声明与本章小节规划,不得按数量机械增减;每个应输出的表格都必须真实输出为 markdown 表格;输出后按本清单逐表自检,缺失即视为正文不足。",...U,...b.map((a,b)=>[`${b+1}. ${a.required?"必写":"应写"}:${a.title}`,a.fields.length?` - 表头必须为:${a.fields.map(a=>a.name).join(" | ")}(不得擅自改字段、删字段或增加后台溯源列)`:"",a.section?` - 归属小节:${a.section}`:"",` - 来源:${a.reason}`].filter(Boolean).join("\n"))].filter(Boolean).join("\n")}let W=[{pattern:/横道图|甘特图/u,instruction:"以表格式时间轴呈现(阶段与节点、起止时间、与工期目标的关系);表中时间节点必须与总工期及开工竣工日期一致"},{pattern:/网络图|关键线路/u,instruction:"以文字框图呈现(工作节点、先后衔接关系、关键线路标注),节点划分必须与本工程施工组织一致"},{pattern:/组织机构图|组织框图|机构框图|机构图/u,instruction:"以文字框图呈现组织机构层级(部门或岗位、隶属关系)"},{pattern:/平面布置图|布置图/u,instruction:"以分区布置的文字框图或布置要点表呈现(分区、布置内容、管控要求)"},{pattern:/流程图|工艺流程图/u,instruction:"以文字框图呈现流程步骤与衔接关系"}];function X(a){let b=[],c=new Set;for(let d of a){let a=`${d.text}
|
|
59
|
-
${d.coreTerms.join(" ")}`;for(let e of W){let f=e.pattern.exec(a);!f||c.has(f[0])||(c.add(f[0]),b.push({name:f[0],instruction:e.instruction,source:d.text}))}}return b}function Y(a,b,c,d=.45){if(0===b.length||0===a.length)return{chapters:a,unattached:[]};let e=new Map,g=[];for(let f of b){let b=-1,h=0;if(a.forEach((a,d)=>{let e=c(f.source,a.title);e>h&&(h=e,b=d)}),b<0||h<d){g.push(f);continue}let i=e.get(b)||[];i.push(`「${f.name}」${f.instruction}(招标要求原文:「${f.source.length>80?`${f.source.slice(0,80)}…`:f.source}」)`),e.set(b,i)}return{chapters:a.map((a,b)=>{let c=e.get(b);return c?.length?{...a,diagramRequirements:f([...a.diagramRequirements||[],...c])}:a}),unattached:g}}function Z(a){let b=a.diagramRequirements||[];return 0===b.length?"":["【本章图表化呈现要求(硬性验收项)】","以下要素必须以 Markdown 数据表(表头字段 + 数据行,数据取自资料,禁止编造)或结构化的「文字框图」「表格式时间轴」在正文中实际呈现(≥3 行要点);每项呈现内容结束处另起一行输出规范图题行(格式「图 X-X 图名」,X-X 为章序号与本章图序号,图名即要素名),图题行独立成行、不附加任何说明文字;不得引用未在正文出现的其他图号,不得编造图中数据;**只输出图题行而无数据表/框图内容视为该项未落实**:",...b.map((a,b)=>`${b+1}. ${a}`)].join("\n")}let $=/^图\s*(\d+(?:[-—–-]\d+)?)\s+(\S.*)$/u,_=/^图\s+(\S.*)$/u,aa=/(图|图表)$/u,ab=/(计划|机构|布置|流程|示意|系统|架构|组织|网络|横道|曲线|关系|框图|简图|大样|剖面|平面|立面|结构|工艺|路线|流向|时序|方案|安排)$/u;function ac(a){let b=(a||"").trim();return!b||aa.test(b)?b:ab.test(b)?`${b}图`:b}function ad(a){let b=a.replace(/[((][^))]*[))]/gu,"").trim();return!(b.length<2||b.length>36||!aa.test(b)||/[。;!?,,.;!?::]/u.test(a))&&/^[\u4e00-\u9fa5A-Za-z0-9()()、与及\-—-]+$/u.test(a)}function ae(a){return e(a).replace(/[((][^))]*[))]/gu,"").replace(/[图表]+$/u,"")}function af(a,b){let c=ae(a),d=ae(b);return!(c.length<2)&&!(d.length<2)&&(c.includes(d)||d.includes(c))}function ag(a){let b=a.trim(),c=$.exec(b);if(c){let a=c[2].trim();return ad(a)?{name:a,oldKey:J(c[1])}:null}let d=_.exec(b);if(!d)return null;let e=d[1].trim();return ad(e)?{name:e,oldKey:""}:null}function ah(a,b,c={}){let d=a.replace(/\r/gu,"").split("\n"),f=/^图\s*\d+(?:[-—–-]\d+)?\s+\S/u,g=a=>!!ag(a)||f.test(a.trim()),h=function(a){let b=a.findIndex(a=>/^##\s+附表\s*[一二三四五六七八九十\d]{1,3}/u.test(a));return b>=0?b:a.length}(d),i=[],j=new Set,k=(a,b)=>{if(!b||0===b.length)return;let c=`${a}|${b[0]||""}`;if(!j.has(c))return j.add(c),b},l=new Map,m=new Set;for(let a=0;a<h;a+=1){let h=(d[a]||"").trim();if(!g(h))continue;let j=ag(h),n=j?.name||h.replace(f,"").trim()||h,o=j?.name||"",p=o?b.find(a=>af(o,ac(a.name))):void 0;p&&m.add(p.name);let q=k(e(function(a,b){for(let c=b;c>=0;c-=1){let b=/^##\s+(.+?)\s*$/u.exec((a[c]||"").trim());if(b)return b[1]}return""}(d,a)),c.substituteTable?.(o||n));q&&l.set(a,q),i.push(`移除图题「${n.slice(0,24)}」${q?"改为等效数据表":"(无对应数据,仅移除)"}`)}let n=b.filter(a=>!m.has(a.name)),o=a=>{let b=e(a),c=[];for(let a=0;a<h;a+=1){let b=/^##\s+(.+?)\s*$/u.exec(d[a]||"");b&&!/^(目录|附表)/u.test(b[1])&&c.push(a)}if(!b)return h;for(let a=0;a<c.length;a+=1){let f=e((d[c[a]]||"").replace(/^##\s+/u,""));if(f.includes(b)||b.includes(f))return a+1<c.length?c[a+1]:h}return h},p=new Map;for(let b of n){let d=o(b.chapterTitle),f=c.substituteTable?.(ac(b.name));if(!f||0===f.length||a.includes(f[0]||"")||!k(e(b.chapterTitle),f))continue;let g=p.get(d)||[];g.push("",...f,""),p.set(d,g),i.push(`${b.chapterTitle}:图类要求「${b.name}」以数据表落实`)}if(0===i.length)return{markdown:a,inserted:[]};let q=[];for(let a=0;a<d.length;a+=1){let b=l.get(a);if(b){q.push("",...b,"");continue}if(g(d[a]||""))continue;let c=p.get(a);c&&q.push(...c),q.push(d[a])}let r=p.get(d.length);return r&&q.push(...r),{markdown:q.join("\n"),inserted:i}}function ai(a,b){let c=[...a];for(let a of b){if("diagram"!==a.form&&"org_chart"!==a.form)continue;let b=(a.element||"").trim();b&&(c.some(a=>af(a.name,b))||c.push({name:b,instruction:"org_chart"===a.form?"以文字框图呈现组织机构层级(部门或岗位、隶属关系)":"以文字框图或表格式时间轴呈现(内容要点完整)",source:a.sourceText}))}return c}function aj(a){let b=[],c=(a,c)=>{let d=(a||"").trim(),e=ac((c||"").trim());d&&e&&!(e.length>60)&&(b.some(a=>a.chapterTitle===d&&af(a.name,e))||b.push({chapterTitle:d,name:e}))};for(let b of a.structureItems||[])("diagram"===b.form||"org_chart"===b.form)&&c(b.chapterTitle,b.element);for(let b of a.chapters||[])for(let a of b.diagramRequirements||[]){let d=/^「([^」]+)」/u.exec(a)?.[1];d&&c(b.title,d)}return b}function ak(a,b){if(0===a.length)return{total:0,covered:0,missing:[]};let c=[],e=0;for(let f of a){let a=(0,d.M2)(ac(f.name));a&&b.includes(a)?e+=1:c.push(f)}return{total:a.length,covered:e,missing:c}}},44533:(a,b,c)=>{c.d(b,{NW:()=>j,Qh:()=>k,VS:()=>o,Yy:()=>n,a2:()=>i,aY:()=>m});var d=c(19898),e=c(33873),f=c(21820),g=c(29021);let h=null;function i(){return e.join(f.homedir(),".customize-agent")}function j(a){return(0,d.getProjectKbPath)(e.resolve(a))}function k(){return h||(h=new d.MultiProjectManager(i())),h}function l(a){let b=e.resolve(a),c=e.resolve(e.join(f.homedir(),".customize-agent"));return!(g.existsSync(e.join(b,"pnpm-workspace.yaml"))&&g.existsSync(e.join(b,"apps","server")))&&(b===c||b.includes(`${e.sep}.customize-agent${e.sep}`)||b.endsWith(`${e.sep}apps${e.sep}server`)||b.endsWith(`${e.sep}apps${e.sep}cli`))}function m(){let a=process.env.CUSTOMIZE_PROJECT_ROOT??process.env.INIT_CWD;if(a&&g.existsSync(a)&&!l(a))return e.resolve(a);let b=function(){let a=e.join(i(),"projects","registry.db");if(!g.existsSync(a))return[];let b=new((0,d.loadBetterSqlite3)())(a,{readonly:!0});try{return b.prepare("SELECT project_root FROM project_registry ORDER BY last_opened_at DESC").all().map(a=>e.resolve(a.project_root)).filter(a=>!l(a))}finally{b.close()}}();return b.length>0?b[0]:process.env.INIT_CWD&&!l(process.env.INIT_CWD)?process.env.INIT_CWD:e.resolve(process.cwd(),"../..")}function n(a,b={}){let c=new Map;for(let b of function(a){let b=e.join(f.homedir(),".customize-agent","projects",(0,d.computeProjectId)(e.resolve(a)),"kb.db");if(!g.existsSync(b))return[];let c=new d.IndexStateStore(b);try{return c.listRecords().map(a=>({...a,matchedBy:"metadata"}))}finally{c.close()}}(a))c.set(b.relativePath,b);for(let b of function(a){let b=j(a);if(!g.existsSync(b))return[];let c=[],d=a=>{for(let f of g.readdirSync(a,{withFileTypes:!0})){let h=e.join(a,f.name);if(f.isDirectory()){d(h);continue}if(f.name.endsWith(".source.txt"))continue;let i=g.statSync(h),j=e.relative(b,h).split(e.sep).join("/");c.push({relativePath:j,category:j.includes("表格数据/")?"spreadsheet":j.includes("图片素材/")?"image":j.includes("图纸文件/")?"cad":j.includes("文档资料/")?"document":"other",format:e.extname(j).slice(1).toLowerCase()||"text",contentHash:"",fileSize:i.size,mtime:i.mtimeMs,chunkCount:0,collectionName:"",indexedAt:0,lastVerifiedAt:0,status:"disk",matchedBy:"disk"})}};return d(b),c}(a)){let a=c.get(b.relativePath);c.set(b.relativePath,a?{...a,fileSize:b.fileSize,mtime:b.mtime,matchedBy:"metadata"}:b)}return Array.from(c.values()).filter(a=>!b.category||a.category===b.category).sort((a,b)=>b.mtime-a.mtime||a.relativePath.localeCompare(b.relativePath,"zh-CN"))}async function o(a,b={}){let c=(b.query||"").trim(),d=Math.max(1,Math.min(500,b.limit??50)),e=new Map,f=n(a,{category:b.category});for(let a of f)(!c||`${a.relativePath}
|
|
60
|
-
${a.category}
|
|
61
|
-
${a.format}
|
|
62
|
-
${a.status}`.toLowerCase().includes(c.toLowerCase()))&&e.set(a.relativePath,{...a,matchedBy:c?"path":a.matchedBy});if(c&&!1!==b.includeContent)try{for(let b of(await k().search(a,c,{limit:Math.max(20,d)})).results){let a=b.filePath,c=e.get(a)||f.find(b=>b.relativePath===a);e.set(a,{...c||{relativePath:a,category:"content",format:"knowledge",fileSize:0,mtime:0,chunkCount:0,indexedAt:0,lastVerifiedAt:0,status:"active"},matchedBy:"content",score:b.score})}}catch{}let g=Array.from(e.values()).sort((a,b)=>{let c=a=>"content"===a.matchedBy?3:"path"===a.matchedBy?2:+("metadata"===a.matchedBy);return c(b)-c(a)||(b.score??0)-(a.score??0)||b.mtime-a.mtime||a.relativePath.localeCompare(b.relativePath,"zh-CN")});return{files:g.slice(0,d),total:g.length}}},51144:(a,b,c)=>{function d(a,b,c,e="items"){let f=c.maxItems??Number.MAX_SAFE_INTEGER,g=c.maxChars??Number.MAX_SAFE_INTEGER,h=c.charFn??(a=>JSON.stringify(a).length),i=a.map(a=>({item:a,score:b(a)}));i.sort((a,b)=>b.score-a.score);let j=[],k=[],l=0;for(let{item:a}of i){let b=h(a);j.length<f&&l+b<=g?(j.push(a),l+=b):k.push(a)}let m=[];if(k.length>0){for(let a of(m.push(`[selection] ${e}: 预算 ${f}项/${g}字符 → 选中 ${j.length}项(${l}字符),丢弃 ${k.length}项`),k.slice(0,10))){let b="string"==typeof a?a.slice(0,80):JSON.stringify(a).slice(0,80);m.push(` - 丢弃: ${b}`)}k.length>10&&m.push(` ... 及其他 ${k.length-10} 项`)}return{selected:j,dropped:k,droppedLog:m}}function e(a){let b=0,c=a.length;return 0===c?0:(b+=3*(a.match(/\d+(?:\.\d+)?/gu)||[]).length,/m[23²³]?|mm|cm|km|t|kg|台|套|个|项|批|次|份|人|日历天|天|月|万元|元|%|MPa|kPa|kN|℃/iu.test(a)&&(b+=2),/GB|JGJ|ISO|CJJ|CECS|DL|YB|SH|HG|SY|NB/iu.test(a)&&(b+=3),/验收|质量|安全|工期|进度|成本|风险|危大|重点|难点|关键|控制|标准|规范|设计|施工|材料|设备/u.test(a)&&(b+=1),c<20&&(b-=1),/项目名称|工程名称|招标人|建设地点|计划工期|质量标准|合同估算/u.test(a)&&(b+=2),b)}c.d(b,{C:()=>d,O:()=>e})},54185:(a,b,c)=>{c.d(b,{C4:()=>v,D9:()=>k,G9:()=>$,Lw:()=>R,P_:()=>H,Q1:()=>ac,Q9:()=>u,RM:()=>ab,T9:()=>_,TN:()=>O,V0:()=>n,be:()=>N,ch:()=>j,cq:()=>h,gn:()=>q,o0:()=>G,p5:()=>P,p_:()=>l,sO:()=>I,uj:()=>Y,uw:()=>X,vL:()=>L,v_:()=>r,y9:()=>K,yF:()=>E,yp:()=>Q,z9:()=>C,zd:()=>aa});var d=c(78217),e=c(22157);let f=/^(?:主要施工|施工)?(?:工艺流程|概况|概述|流程|工序|工艺|方法|方案|步骤|顺序|做法|安排|要点|内容)(?:要点|概述|简介|说明)?$/u,g=new Set(["主要施工方法","主要施工内容","项目主要施工内容"]);function h(a){let b=(0,e.Sw)(a);return!(!b||g.has(b))&&f.test(b)}let i=/^(\s*(?:[-*•]\s+)?)\*{0,2}(?:施工概况|施工概述|施工流程|工艺流程|施工工艺|施工工序|施工方法|施工步骤|施工顺序|施工做法|施工安排|施工要点)\*{0,2}[::]\s*/u,j="正文禁止以“施工概况/施工流程/施工方法/工艺流程/施工步骤”等结构标签充当小节标题或段落开头引导(不得出现“施工概况:本项目……”式标签行),要素内容直接融入连贯段落叙述。";function k(a){let b=[],c=[],d=0,e=[],f=0;for(let b of a.split(/\r?\n/u)){let a=b.trim();if(!a)continue;let g=/^(#{3,6})\s+(.+?)\s*$/u.exec(a);if(g){h(g[2])&&(d+=1,c.length<5&&c.push(`${g[1]} ${g[2]}`));continue}i.test(b)&&(f+=1,e.length<5&&e.push(a.slice(0,24)))}return d>0&&b.push({level:"error",severity:"blocker",category:"structure",owner:"system",repairability:"local_deterministic",message:`正文存在结构标签充当小节标题 ${d} 处:“${c.join("”、“")}”`,suggestion:"结构标签(施工概况/施工流程/施工方法/工艺流程等)不得独立成题;确定性修复器已接入删除标签标题行(正文保留),要素内容融入上级小节连贯叙述。"}),f>0&&b.push({level:"error",severity:"blocker",category:"structure",owner:"system",repairability:"local_deterministic",message:`正文段首结构标签前缀 ${f} 处:“${e.join("”、“")}…”`,suggestion:"禁止“施工概况:……”“施工流程:……”式段首标签引导;确定性修复器已接入剥离标签前缀(正文保留),要素直接以连贯段落表述。"}),b}function l(a){let b=a.split(/\r?\n/u),c=[],d=0,f=0,g=0,j=new Map;for(let a=0;a<b.length;a+=1){let c=/^(#{3,6})\s+(.+?)\s*$/u.exec(b[a].trim());if(!c)continue;let d=(0,e.Sw)(c[2]);d&&!j.has(d)&&j.set(d,a)}for(let a=0;a<b.length;a+=1){let k=b[a],l=k.trim();if(!l){c.push(k);continue}let m=/^(#{4,6})\s+(.+?)\s*$/u.exec(l);if(m){if(h(m[2])){d+=1,a+1<b.length&&""===b[a+1].trim()&&(a+=1);continue}c.push(k);continue}if(/^#{1,6}\s/u.test(l)){c.push(k);continue}if(/^[\u4e00-\u9fa5A-Za-z0-9]{2,24}$/u.test(l)){let d=(0,e.Sw)(l),f=d?j.get(d):void 0;if(d&&void 0!==f&&a>f){g+=1,a+1<b.length&&!b[a+1].trim()&&c.length>0&&!c[c.length-1].trim()&&(a+=1);continue}}let n=i.exec(k);if(n){let a=k.slice(n[0].length);f+=1,a.trim()&&c.push(a);continue}c.push(k)}let k=d+f+g;if(0===k)return{markdown:a,fixedCount:0,details:[]};let l=[];return d>0&&l.push(`结构标签标题删除 ${d} 行(正文保留)`),f>0&&l.push(`段首标签前缀剥离 ${f} 处`),g>0&&l.push(`正文孤立小节标题行删除 ${g} 行`),{markdown:c.join("\n"),fixedCount:k,details:l}}let m=["顺序词叙述","编号步骤","有序列表","箭头链"];function n(a){let b=m.length;return m[(a%b+b)%b]}function o(a){let b=m.indexOf(a);return m[(b+1)%m.length]}let p={顺序词叙述:"用顺序词连贯叙述工序先后(衔接词按语境自然变化,不得与相邻小节复用同一连接词序列)",编号步骤:"用编号步骤分行列出工序(每行一个步骤,行首连续编号)",有序列表:"用要点列表分行列出工序(每行一个步骤,行首列表符)",箭头链:"用箭头链表达工序先后(工序元素按先后顺序用箭头连接)"};function q(a){let b=n(a);return`【工序顺序表达形式指定】本块的工序顺序表达使用「${b}」形式:${p[b]};本章相邻小节已分别指定其他形式,禁止通篇使用同一形式,不得用“施工流程:”等结构标签引导。`}function r(a){let b;if(!(0,e.Z1)(a))return;let c=function(a){let b=(a.match(/→|->|=>/gu)||[]).length,c=(a.match(/(?:^|\n)\s*(?:\d+[.、))]|[((]\d+[))]|[一二三四五六七八九十]{1,3}[、.]|第[一二三四五六七八九十]{1,3}步)/gu)||[]).length,d=(a.match(/(?:^|\n)\s*[-*•]\s+\S/gu)||[]).length;return{箭头链:b,编号步骤:c>=2?c:0,有序列表:d>=2?d:0,顺序词叙述:(a.match(/先[^。;!?\n]{0,24}(?:再|然后|随后|接着|最后|后)|依次|先后|按[^。;!?\n]{0,12}顺序|顺序施工|流水施工/gu)||[]).length}}(a),d=0;for(let a of m)c[a]>d&&(b=a,d=c[a]);return b}function s(a){return a.split(/^##\s+/gmu).slice(1).map(a=>{let b=a.indexOf("\n");return b<0?{title:a.trim(),body:""}:{title:a.slice(0,b).trim(),body:a.slice(b+1)}})}function t(a){let b,c=[];for(let d of a.split(/\r?\n/u)){let a=/^###\s+(.+?)\s*$/u.exec(d.trim());a?(b&&c.push({title:b.title,text:b.lines.join("\n")}),b={title:a[1],lines:[]}):b&&b.lines.push(d)}return b&&c.push({title:b.title,text:b.lines.join("\n")}),c}function u(a){let b=[];for(let c of s(a)){if(!e.V.test(c.title))continue;let a=t(c.body);if(a.length<2)continue;let d=a.map(a=>r(a.text));for(let e=1;e<a.length;e+=1){let f=d[e-1],g=d[e];if(f&&g&&f===g&&(b.push({level:"error",severity:"blocker",category:"style",owner:"llm",repairability:"llm_repairable",message:`工序顺序表达形式模板化:「${c.title}」章相邻小节「${a[e-1].title}」与「${a[e].title}」同为【${g}】形式`,suggestion:`将「${a[e].title}」的工序顺序表达改写为其他形式(建议【${o(g)}】),内容与数值保持不变;分项块之间必须轮换形式,禁止通篇同一形式。`}),b.length>=6))return b}}return b}function v(a){let b=new Map;for(let c of s(a)){if(!e.V.test(c.title))continue;let a=t(c.body);if(a.length<2)continue;let d=a.map(a=>r(a.text));for(let e=1;e<a.length;e+=1){let f=d[e];if(!f||f!==d[e-1])continue;let g=`${c.title}\u0000${a[e].title}`;b.has(g)||b.set(g,{chapterTitle:c.title,blockTitle:a[e].title,currentForm:f,targetForm:o(f)})}}return[...b.values()].slice(0,12)}let w=/先([^。;\n]{2,200}?)[,,、]\s*最后([^。;\n,,]{2,60}?)([。;])/gu,x=/[,,、]\s*(?:再|接着|随后|然后|继而)\s*/u,y=/[。;:!?\n]/u,z=/[^\s→,。;:、!?“”‘’《》〈〉()\n]+(?:(?:→|->|=>)[^\s→,。;:、!?“”‘’《》〈〉()\n]+){1,7}/gu,A=["再","随后","然后","接着"];function B(a,b,c){let d;if("顺序词叙述"===b&&"编号步骤"===c?d=function(a){let b=!1,c=a.replace(w,(c,d,e,f,g)=>{let h=g;for(;h>0&&!y.test(a[h-1]);)h-=1;if(""!==a.slice(h,g).trim())return c;let i=d.split(x).concat(e.split(x)).map(a=>a.trim()).filter(Boolean);if(i.length<3)return c;b=!0;let j=i.map((a,b)=>`${b+1}. ${a}${b===i.length-1?f:";"}`);return`
|
|
63
|
-
${j.join("\n")}`});return b?c:void 0}(a):"箭头链"===b&&"顺序词叙述"===c?d=function(a){let b=!1,c=a.replace(z,a=>{let c=a.split(/→|->|=>/u).map(a=>a.trim()).filter(Boolean);if(c.length<2)return a;if(b=!0,2===c.length)return`先${c[0]},再${c[1]}`;let d=c.slice(1,-1).map((a,b)=>`${A[b%A.length]}${a}`);return`先${c[0]},${d.join(",")},最后${c[c.length-1]}`});return b?c:void 0}(a):"编号步骤"===b&&"有序列表"===c?d=function(a){let b=0,c=a.replace(/^(\s*)\d+[.、))]\s+/gmu,(a,c)=>(b+=1,`${c}- `));return b>=2?c:void 0}(a):"有序列表"===b&&"箭头链"===c&&(d=function(a){let b=a.split(/\r?\n/u),c=[],d=[],e=!1,f=()=>{if(d.length>=2){let a=d.map(a=>a.replace(/^[ \t]*[-*•]\s+/u,"").replace(/[;;,,。]$/u,"").trim()).filter(Boolean);if(a.length>=2){e=!0,c.push(a.join("→")),d=[];return}}c.push(...d),d=[]};for(let a of b)/^[ \t]*[-*•]\s+\S/u.test(a)?d.push(a):(f(),c.push(a));return f(),e?c.join("\n"):void 0}(a)),d&&d!==a)return r(d)===c?d:void 0}function C(a){let b=function(a){let b,c=a.split(/\r?\n/u),d=[],f="",g=!1,h=a=>{b&&g&&(d.push({chapterTitle:f,title:b.title,text:c.slice(b.startLine+1,a).join("\n"),startLine:b.startLine,endLine:a}),b=void 0)};for(let a=0;a<c.length;a+=1){let d=/^##\s+(.+?)\s*$/u.exec(c[a]);if(d){h(a),f=d[1],g=e.V.test(f);continue}let i=/^###\s+(.+?)\s*$/u.exec(c[a]);i&&(h(a),g&&(b={title:i[1],startLine:a}))}return h(c.length),d}(a);if(b.length<2)return{markdown:a,fixedCount:0,details:[]};let c=[];for(let a of b){let b=c[c.length-1];b&&b[0].chapterTitle===a.chapterTitle?b.push(a):c.push([a])}let d=new Map;for(let a of c){let b=a.map(a=>r(a.text));for(let c=1;c<a.length;c+=1){let e=b[c],f=b[c-1];if(!e||e!==f)continue;let g=o(e),h=B(a[c].text,e,g);h&&(d.set(a[c],{text:h,fromForm:e,toForm:g}),b[c]=g)}for(let c=1;c<a.length;c+=1){let e=b[c],f=b[c-1];if(!e||!f||e!==f)continue;let g=a[c-1];if(d.has(g))continue;let h=o(f);if(c>=2&&b[c-2]===h)continue;let i=B(g.text,f,h);i&&(d.set(g,{text:i,fromForm:f,toForm:h}),b[c-1]=h)}}if(0===d.size)return{markdown:a,fixedCount:0,details:[]};let f=a.split(/\r?\n/u),g=[];for(let[a,b]of[...d.entries()].sort((a,b)=>b[0].startLine-a[0].startLine))f.splice(a.startLine+1,a.endLine-a.startLine-1,...b.text.split("\n")),g.push({chapterTitle:a.chapterTitle,blockTitle:a.title,fromForm:b.fromForm,toForm:b.toForm});return{markdown:f.join("\n"),fixedCount:g.length,details:g}}let D=[{id:"by-tech-lead-org",text:"由技术负责人组织",pattern:/由\s*技术负责人\s*组织/gu,variantForms:[{text:"技术负责人牵头组织",pattern:/(?:由\s*)?(?:项目\s*部?\s*)?技术负责人\s*牵头\s*组织/gu,rewrites:[{from:/牵头\s*组织/u,to:"负责组织"},{from:/牵头\s*组织/u,to:"统筹组织"},{from:/牵头\s*组织/u,to:"组织"},{from:/牵头\s*组织/u,to:"统一组织"},{from:/牵头\s*组织/u,to:"直接组织"}]},{text:"技术负责人负责组织",pattern:/(?:由\s*)?(?:项目\s*部?\s*)?技术负责人\s*负责\s*组织/gu,rewrites:[{from:/负责\s*组织/u,to:"统筹组织"},{from:/负责\s*组织/u,to:"组织"}]},{text:"技术负责人统筹组织",pattern:/(?:由\s*)?(?:项目\s*部?\s*)?技术负责人\s*统筹\s*组织/gu,rewrites:[{from:/统筹\s*组织/u,to:"组织"},{from:/统筹\s*组织/u,to:"负责组织"}]},{text:"技术负责人统一组织",pattern:/(?:由\s*)?(?:项目\s*部?\s*)?技术负责人\s*统一\s*组织/gu,rewrites:[{from:/统一\s*组织/u,to:"组织"},{from:/统一\s*组织/u,to:"直接组织"}]},{text:"技术负责人直接组织",pattern:/(?:由\s*)?(?:项目\s*部?\s*)?技术负责人\s*直接\s*组织/gu,rewrites:[{from:/直接\s*组织/u,to:"组织"}]},{text:"技术负责人组织",pattern:/(?:项目\s*部?\s*)?技术负责人\s*组织/gu,rewrites:[{from:/负责人\s*组织/u,to:"负责人负责组织"},{from:/负责人\s*组织/u,to:"负责人统筹组织"}]}]},{id:"post-qualified",text:"合格后方可",pattern:/合格\s*后方可/gu,variantForms:[{text:"合格后再行",pattern:/合格\s*后再行/gu,rewrites:[{from:/再行/u,to:""}]},{text:"合格后方能",pattern:/合格\s*后方能/gu,rewrites:[{from:/方能/u,to:""}]},{text:"合格后才可",pattern:/合格\s*后才可/gu,rewrites:[{from:/才可/u,to:""}]},{text:"合格以后方可",pattern:/合格\s*以后方可/gu,rewrites:[{from:/以后/u,to:""}]}]},{id:"after-acceptance",text:"验收合格后",pattern:/验收\s*合格\s*后/gu,variantForms:[{text:"验收通过后",pattern:/验收\s*通过后/gu,rewrites:[{from:/验收\s*通过后/u,to:"通过验收后"},{from:/验收\s*通过后/u,to:"验收签认后"},{from:/验收\s*通过后/u,to:"验收确认后"}]},{text:"通过验收后",pattern:/通过\s*验收后/gu,rewrites:[{from:/通过\s*验收后/u,to:"验收签认后"}]},{text:"验收签认后",pattern:/验收\s*签认后/gu,rewrites:[{from:/验收\s*签认后/u,to:"验收确认后"}]},{text:"验收确认后",pattern:/验收\s*确认后/gu,rewrites:[{from:/验收\s*确认后/u,to:"验收签认后"}]}]}],E="句式禁止复读:全篇「由技术负责人组织」「合格后方可」「验收合格后」三类骨架表述各自不得超过 2 次,任何同义替换表达全篇不得超过 8 次;同义表达必须逐句轮换、句式多样(动词与语序随句变化),不得集中复用同一说法,保持事实不变(岗位、数值、频次不得丢失)。";function F(a){return[{form:{text:a.text,pattern:a.pattern,rewrites:a.variantForms.map(b=>({from:a.pattern,to:b.text}))},cap:2},...a.variantForms.map(a=>({form:a,cap:8}))]}function G(a){let b=[];for(let c of D){let d=[...a.matchAll(c.pattern)].length;for(let e of(d>2&&b.push({level:"error",severity:"blocker",category:"style",owner:"llm",repairability:"llm_repairable",message:`句式骨架复读:「${c.text}」全篇出现 ${d} 处(上限 2 处)——模板化复用句式`,suggestion:`保留全文前 2 处「${c.text}」,其余处逐句改用不同句式(同义表达须逐句轮换,不得集中复用同一替换说法);改写保留原句全部事实信息(岗位、数值、频次不得丢失),不得用结构标签或固定套语替代。`}),c.variantForms)){let c=[...a.matchAll(e.pattern)].length;c<=8||b.push({level:"error",severity:"blocker",category:"style",owner:"llm",repairability:"llm_repairable",message:`句式变体复读:「${e.text}」全篇出现 ${c} 处(同义表达单形态上限 8 处)——同义替换被集中复用`,suggestion:`保留全文前 8 处,其余处逐句改用不同句式(替换动词、调整语序或换用其他同义表达),不得继续复用同一替换表达;改写保留原句全部事实信息(岗位、数值、频次不得丢失)。`})}}return b}function H(a){let b=[],c=s(a);for(let d of D)for(let{form:e,cap:f}of F(d)){let d=[...a.matchAll(e.pattern)].length;if(d<=f)continue;let g=new Map;for(let a of c)if(a.body)for(let b of a.body.matchAll(e.pattern)){let c=b.index??0,d=function(a,b,c){let d=b;for(;d>0&&!/[。!?\n]/u.test(a[d-1]);)d-=1;let e=c;for(;e<a.length&&!/[。!?\n]/u.test(a[e]);)e+=1;return e<a.length&&/[。!?]/u.test(a[e])&&(e+=1),a.slice(d,e).trim()}(a.body,c,c+b[0].length);if(d.length<6)continue;let e=g.get(a.title)??[];e.includes(d)||e.push(d),g.set(a.title,e)}let h=f;for(let[a,c]of g){let g=c.slice(h).slice(0,4);h=Math.max(0,h-c.length),g.length>0&&b.push({chapterTitle:a,fingerprintLabel:e.text,cap:f,totalCount:d,sentences:g})}}return b.slice(0,24)}function I(a){let b=a,c=0,d=[];for(let a of D){let e=F(a),f=0;for(let a=0;a<600;a+=1){let a,c=e.map(a=>[...b.matchAll(a.form.pattern)]),d=c.map(a=>a.length),g=d.findIndex((a,b)=>a>e[b].cap);if(g<0)break;let h=e[g],i=c[g][h.cap];if(!i)break;let j=i.index??0,k=i[0];for(let c of h.form.rewrites){let f=k.replace(c.from,c.to);if(!f||f===k)continue;let g=b.slice(0,j)+f+b.slice(j+k.length);if(g===b)continue;let h=e.flatMap((a,b)=>[...f.matchAll(a.form.pattern)].length>0?[d[b]]:[]),i=h.length>0?Math.max(...h):0;(!a||i<a.pressure)&&(a={candidate:g,pressure:i})}if(!a)break;b=a.candidate,f+=1}f>0&&(d.push({id:a.id,replaced:f}),c+=f)}return{markdown:b,fixedCount:c,details:d}}let J=["再","接着","随后","然后","继而","最后","而后"],K=[{id:"sequence-chain",label:"多段顺序词链(先…再…随后/然后…最后)",test:a=>/先|首先/u.test(a)&&J.filter(b=>a.includes(b)).length>=3},{id:"after-completion-action",label:"完成即转入式(完成/结束…后,进行/开展…)",test:a=>/(?:完成|完毕|结束|完工)[^。!?\n]{0,40}?后\s*[,,、]?\s*(?:进行|开展|实施|开始|转入|安排|及时|组织)/u.test(a)},{id:"acceptance-next-step",label:"验收衔接式(…合格后,方可/进入下道工序)",test:a=>/(?:合格|通过验收|验收通过|签认)[^。!?\n]{0,16}?后\s*[,,、]?\s*(?:方可|才能|进入|转入|进行|开始|实施|组织)/u.test(a)},{id:"closed-loop-record",label:"资料闭环式(…并形成记录/资料闭环)",test:a=>/(?:并)?形成[^。!?\n]{0,24}?(?:记录|资料|台账|档案|影像)(?:闭环|闭合|归档|备查)/u.test(a)},{id:"form-announcement",label:"形式宣告式(施工/工序按顺序/编号步骤…组织:)",test:a=>/(?:施工|工序|流程|作业|操作)[^。!?\n]{0,14}?(?:按|依)(?:以下|下列)?[^。!?\n]{0,40}?(?:顺序|步骤|编号|次序)[^。!?\n]{0,12}?(?:组织|展开|安排|排列)/u.test(a)}];function L(a){return Math.max(6,Math.ceil((0,d.V7)(a)/5e3))}function M(a){let b=[];for(let c of a.split(/\r?\n/u)){let a=c.replace(/[\u200b-\u200f\u2060\ufeff]/gu,"").trim();if(!(!a||/^#{1,6}\s/u.test(a)||a.startsWith("|")))for(let c of a.replace(/^(?:\d+(?:\.\d+)*[.、))]|[-*•])\s*/u,"").split(/(?<=[。!?])/u)){let a=c.trim();a.length>=8&&b.push(a)}}return b}function N(a,b){return M(a).filter(b.test).length}function O(a){let b=[],c=M(a),d=L(a);for(let a of K){let e=c.filter(a.test).length;e<d||b.push({level:"error",severity:"blocker",category:"style",owner:"llm",repairability:"llm_repairable",message:`句式模版复读:「${a.label}」全篇出现 ${e} 处(复读命中线 ${d} 处)——同模式句重复,模板化观感`,suggestion:`保留全文前 ${d-1} 处,其余处逐句改写为自然多样表达(变换句式结构与连接方式,或拆分为多句;各句改写方向须彼此不同,不得集中复用同一替换句式);改写保留原句全部工序顺序、数值与验收事实,不得删减工艺参数。`})}return b}function P(a){let b=[],c=s(a),d=M(a),e=L(a),f=new Set;for(let a of K){let g=d.filter(a.test).length;if(g<e)continue;let h=e-1,i=new Map;for(let b of c){if(!b.body)continue;let c=[];for(let d of M(b.body))f.has(d)||!a.test(d)||c.includes(d)||c.push(d);c.length>0&&i.set(b.title,c)}let j=h;for(let[c,d]of i){let e=d.slice(j).slice(0,4);j=Math.max(0,j-d.length),e.length>0&&(e.forEach(a=>f.add(a)),b.push({chapterTitle:c,patternId:a.id,patternLabel:a.label,totalCount:g,cap:h,sentences:e}))}}return b.slice(0,16)}function Q(a){let b=K.find(a=>"form-announcement"===a.id),c=[],d=[],e=!1;for(let f of a.split(/\r?\n/u)){if(e&&(e=!1,""===f.trim()))continue;let a=f.replace(/[\u200b-\u200f\u2060\ufeff]/gu,"").trim();if(!a||/^#{1,6}\s/u.test(a)||a.startsWith("|")){d.push(f);continue}let g=a.match(/^(?:\d+(?:\.\d+)*[.、))]|[-*•])\s*/u)?.[0]??"",h=a.slice(g.length).split(/(?<=[。!?])/u).pop()?.trim()??"";if(h.length<8||!/[::]\s*$/u.test(h)||!b.test(h)){d.push(f);continue}let i=f.lastIndexOf(h);if(i<0){d.push(f);continue}c.push(h);let j=f.slice(0,i).replace(/\s+$/u,"");if(""===j.trim()){e=!0;continue}d.push(j)}return 0===c.length?{markdown:a,removedCount:0,removedSentences:c}:{markdown:d.join("\n"),removedCount:c.length,removedSentences:c}}let R=/^(?:上述|相关|有关)(?:要求|做法|措施|内容|安排|控制要点|控制项|控制内容|作业要求)/u;function S(a){return a.replace(/^第[一二三四五六七八九十百零〇\d]+[章节篇部分][\s、..::]*/u,"").replace(/^\d+(?:\.\d+)*[..、::]?\s*/u,"").trim()}let T=new Set(["目录","前言","摘要","附录","索引","封面","总则"]),U=new Set(["矮墙","围墙"]);function V(a){if(!a||T.has(a)||U.has(a))return!1;let b=(a.match(/[\u4e00-\u9fa5]/gu)||[]).length;return(!/[##\d]/u.test(a)||!(b>=2))&&0!==b&&!(b>=3)&&!/[A-Za-z]/u.test(a)&&a.length<=4}function W(a){let b=[],c=new Set,d="",e="";for(let f of a.split(/\r?\n/u)){let a=/^(#{2,4})\s+(.+?)\s*$/u.exec(f.trim());if(!a)continue;let g=a[1].length,h=a[2];if(2===g){d=h,e="";continue}let i=S(h);if(i&&!c.has(i)){let a=function(a){if(!(!a||T.has(a))&&0!==(a.match(/[\u4e00-\u9fa5]/gu)||[]).length){if(V(a))return"标题核心名不足 3 字(残缺标题)";if(/[,,]/u.test(a))return"标题含逗号(句式化标题)";if(/[等及和与]$/u.test(a))return"标题以悬挂连接词结尾(残缺标题)"}}(i);a&&(c.add(i),b.push({chapterTitle:d,parentTitle:e,rawTitle:h,reason:a}))}3===g&&(e=h)}return b}function X(a){let b=[];for(let c of W(a)){let a=c.parentTitle?`「${c.parentTitle}」内`:c.chapterTitle?`「${c.chapterTitle}」章内`:"";if(b.push({level:"error",severity:"blocker",category:"structure",owner:"llm",repairability:"llm_repairable",message:`小节标题残缺或句式化:${a}“${c.rawTitle}”(${c.reason})`,suggestion:"将标题重命名为完整表达小节内容的正式名称(如“危大”应为“危大工程辨识与管控”、残缺名补全语义),正文内容不变;禁止使用“施工概况/施工流程/施工方法”等结构标签词充当标题。"}),b.length>=6)break}return b}function Y(a){return W(a).slice(0,6).map(a=>({chapterTitle:a.chapterTitle,title:a.rawTitle,reason:a.reason}))}let Z=["系统","工程","设施","设备","装置","结构","管道","安装","施工","项目","要点"];function $(a){let b=a.split(/\r?\n/u),c=[];for(let a=0;a<b.length;a+=1){let d=b[a],e=/^(#{2,4})\s+(.+?)\s*$/u.exec(d.trim());if(!e)continue;let f=e[2],g=S(f);if(!V(g))continue;let h=[],i=a+1,j=0;for(;i<b.length&&j<400&&!/^\s*#{1,6}\s/u.test(b[i]);)h.push(b[i]),j+=b[i].length,i+=1;let k=h.join("\n"),l=Z.find(a=>k.includes(g+a));if(!l||((g+l).match(/[\u4e00-\u9fa5]/gu)||[]).length<4)continue;let m=f.indexOf(g);if(m<0)continue;let n=`${f.slice(0,m)}${g}${l}${f.slice(m+g.length)}`;b[a]=d.replace(f,n),c.push({from:f,to:n})}return 0===c.length?{markdown:a,fixedCount:0,details:[]}:{markdown:b.join("\n"),fixedCount:c.length,details:c}}function _(a){return a.replace(/\*+/gu,"").replace(/^第[一二三四五六七八九十百千万零〇\d]+[章节篇部分][\s、..::-]*/u,"").replace(/^\d+(?:\.\d+)*(?:[..、]|\s)+/u,"").replace(/^[-—–]\s*/u,"").replace(/[\s()()::.。;;,,、\-—·]/gu,"").trim()}function aa(a,b){for(let c of b.map(a=>({title:String(a||"").trim(),key:_(String(a||""))})).filter(a=>a.title&&a.key.length>=4).sort((a,b)=>b.key.length-a.key.length))for(let b=c.key.length;b<=a.length;b+=1){if(_(a.slice(0,b))!==c.key)continue;let d=a.slice(b).replace(/^[\s::.。;;,,、\-—]+/u,"");if(_(d).length>=10)return{plannedTitle:c.title,remainder:d};break}}function ab(a,b){let c=a.split(/(?<=[。;;!?])/u).map(a=>a.trim()).filter(Boolean);if(0===c.length)return"";let d=b.replace(/\s+/gu,"");if(!d)return a;let e=0;for(let a=0;a<c.length;a+=1){let b=c.slice(0,a+1).join("").replace(/\s+/gu,"");if(d.includes(b))e=a+1;else break}return c.slice(e).join("")}function ac(a,b){if(!b||0===b.length)return{markdown:a,fixedCount:0,details:[]};let c=a.split(/\r?\n/u),d=[],e=0,f=[];for(let a=0;a<c.length;a+=1){let g=c[a],h=g.trim(),i=/^(#{3,4})\s+(.+?)\s*$/u.exec(h);if(!i){d.push(g);continue}let j=/^(\d+(?:\.\d+)*)\s+(.+)$/u.exec(i[2]),k=j?`${j[1]} `:"",l=aa(j?j[2]:i[2],b);if(!l){d.push(g);continue}let m=[];for(let b=a+1;b<c.length&&m.length<6&&!/^\s*#{1,6}\s/u.test(c[b]);b+=1)m.push(c[b]);let n=ab(l.remainder,m.join("\n"));d.push(`${i[1]} ${k}${l.plannedTitle}`),n&&d.push("",n),e+=1,f.length<6&&f.push(`${i[1]} ${k}${l.plannedTitle}(续写句${n?"转正文":"已被正文覆盖丢弃"})`)}return{markdown:d.join("\n"),fixedCount:e,details:f}}},56942:(a,b,c)=>{c.d(b,{$:()=>g,R:()=>h});var d=c(92808);function e(a){return[...new Set(a.filter(Boolean))]}function f(a){let b=(0,d.t0)(a,d.hW);return b.length>0?b:["project_overview"]}function g(a){var b,c,d;let g=a.resolvedRoles.filter(a=>a.required&&!a.satisfied).map(a=>a.role),h=a.resolvedRoles.filter(a=>a.weak).map(a=>a.role),i=(b=a.template,c=a.spec,d=a.summary,b.chapters.map(a=>{let b=function(a,b){let c=b.chapterRules.find(b=>b.id===a.id||b.title===a.title),d=(c?.requiredFactIds||[]).map(a=>b.factFields.find(b=>b.id===a)?.name).filter(Boolean);return e([...a.requiredFacts||[],...d])}(a,c),g=e([...f([a.title,a.purpose,...a.queries||[],...a.sections||[]].join("\n")),...b.flatMap(a=>f(a))]),h=g.filter(a=>(d.materialInventory[a]||[]).length>0),i=h.reduce((a,b)=>a+(d.materialInventory[b]||[]).length,0),j=b.filter(a=>f(a).some(a=>h.includes(a))),k=b.filter(a=>!j.includes(a));return{chapterId:a.id,title:a.title,requiredFacts:b,coveredFacts:j,missingFacts:k,requiredRoles:g,satisfiedRoles:h,evidenceCount:i}})),j=[],k=[];0===a.template.chapters.length&&k.push("模板未配置章节,建议通过模板章节或显式 OUTLINE 提供文档结构"),a.template.chapters.some(a=>!a.purpose&&(!a.queries||0===a.queries.length)&&(!a.requiredFacts||0===a.requiredFacts.length))&&k.push("部分模板章节缺少 purpose、queries 或 requiredFacts,生成质量可能不稳定"),a.summary.source.ambiguous&&j.push(a.summary.source.selectionReason),a.summary.fingerprint.confidence<.34&&k.push("材料指纹置信度较低,建议绑定明确的材料文件"),0===a.summary.source.selectedFiles&&j.push("未绑定可用项目资料文件,无法支撑文档生成"),g.length>0&&0===a.summary.source.selectedFiles&&k.push("模板未绑定可用项目资料文件,请先绑定参与生成的资料"),h.length>0&&0===a.summary.source.selectedFiles&&k.push("绑定资料证据较弱,请确认资料已完成索引");let l=i.filter(a=>0===a.evidenceCount);l.length>0&&k.push(`章节级证据覆盖较弱:${l.slice(0,5).map(a=>a.title).join("、")}`);let m=a.summary.coverage.satisfiedRoles,n=a.resolvedRoles.filter(a=>!a.required&&!a.satisfied).map(a=>a.role),o=[`资料范围:${a.summary.source.selectionReason},可用文件 ${a.summary.source.selectedFiles}/${a.summary.source.totalFiles} 份`,`已识别资料类型:${m.join("、")||"无"}`,a.summary.coverage.missingRoles.length?`待补充必需资料类型:${a.summary.coverage.missingRoles.join("、")}`:"必需资料类型已满足",g.length?`模板强相关资料角色缺失:${g.join("、")}`:"模板强相关资料角色已满足",n.length?`可选资料角色未识别:${n.join("、")}`:"",h.length?`证据较弱资料角色:${h.join("、")}`:""].filter(Boolean);return{ready:0===j.length,missingRoles:g,weakRoles:h,diagnostics:o,chapterDiagnostics:i,blockingIssues:j,warnings:k}}function h(a,b={}){let c=a.chapterDiagnostics.filter(a=>0===a.evidenceCount||a.missingFacts.length>0).slice(0,8).map(a=>`${a.title}:证据 ${a.evidenceCount} 条${a.missingFacts.length?`,缺失 ${a.missingFacts.slice(0,6).join("、")}`:""}`);return b.publicSafe?["## 生成事实使用边界",c.length?`章节证据风险:
|
|
64
|
-
${c.join("\n")}`:"","资料不足的事实不得编造;仅施工组织、计划安排、资源配置类数据可在文档要求允许时进行计划推导并标注。"].filter(Boolean).join("\n"):["## 后台生成准备度",`可生成:${a.ready?"是":"否"}`,a.missingRoles.length?`资料诊断:部分模板期望资料类型未从绑定文件中明确识别,生成时仅使用已绑定资料中的事实`:"",a.weakRoles.length?`资料诊断:部分资料类型证据较弱,生成时不得补写资料未明确的事实`:"",c.length?`章节级证据风险:
|
|
65
|
-
${c.join("\n")}`:""].filter(Boolean).join("\n")}},58965:(a,b,c)=>{c.d(b,{$m:()=>f,VX:()=>d,tK:()=>e});let d=/\b(?:TDbPipe|TDbPipeValve|TDbPipeFitting|TDbWellh|AcDb\w+|Dwg\w+|Polyline|Hatch|Layer|BlockReference)\b/giu,e=/[\w\u4e00-\u9fa5\-—_+]+\.(?:pdf|dwg|docx?|xlsx?|xls|csv|png|jpe?g|webp)\b/giu,f="[零〇一二三四五六七八九十百千万两]+"},68977:(a,b,c)=>{c.d(b,{LM:()=>m,Rx:()=>q,gQ:()=>d,ym:()=>p});let d={基坑工程:{hazardous:[{clause:"2.1.1",text:"开挖深度超过 3m(含 3m)的基坑(槽)的土方开挖、支护、降水工程",value:3,dimension:"深度",compare:"gte",kind:"numeric"},{clause:"2.1.2",text:"开挖深度虽未超过 3m,但地质条件、周围环境和地下管线复杂,或影响毗邻建、构筑物安全的基坑(槽)土方开挖、支护、降水工程",kind:"conditional"}],superHazardous:[{clause:"3.1.1",text:"开挖深度超过 5m(含 5m)的基坑(槽)的土方开挖、支护、降水工程",value:5,dimension:"深度",compare:"gte",kind:"numeric"}]},模板工程及支撑体系:{hazardous:[{clause:"2.2.2",text:"混凝土模板支撑工程:搭设高度 5m 及以上,或搭设跨度 10m 及以上,或施工总荷载(设计值)15kN/m\xb2 及以上,或集中线荷载(设计值)20kN/m 及以上",value:5,dimension:"高度",compare:"gte",kind:"numeric"},{clause:"2.2.2",text:"混凝土模板支撑工程:搭设高度 5m 及以上,或搭设跨度 10m 及以上,或施工总荷载(设计值)15kN/m\xb2 及以上,或集中线荷载(设计值)20kN/m 及以上",value:10,dimension:"跨度",compare:"gte",kind:"numeric"}],superHazardous:[{clause:"3.2.2",text:"混凝土模板支撑工程:搭设高度 8m 及以上,或搭设跨度 18m 及以上,或施工总荷载(设计值)20kN/m\xb2 及以上,或集中线荷载(设计值)40kN/m 及以上",value:8,dimension:"高度",compare:"gte",kind:"numeric"},{clause:"3.2.2",text:"混凝土模板支撑工程:搭设高度 8m 及以上,或搭设跨度 18m 及以上,或施工总荷载(设计值)20kN/m\xb2 及以上,或集中线荷载(设计值)40kN/m 及以上",value:18,dimension:"跨度",compare:"gte",kind:"numeric"}]},起重吊装及起重机械安装拆卸工程:{hazardous:[{clause:"2.3.1",text:"采用非常规起重设备、方法,且单件起吊重量在 10kN 及以上的起重吊装工程",value:10,dimension:"重量",compare:"gte",kind:"numeric"},{clause:"2.3.2",text:"采用起重机械进行安装的工程",kind:"form"}],superHazardous:[{clause:"3.3.1",text:"采用非常规起重设备、方法,且单件起吊重量在 100kN 及以上的起重吊装工程",value:100,dimension:"重量",compare:"gte",kind:"numeric"}]},脚手架工程:{hazardous:[{clause:"2.4.1",text:"搭设高度 24m 及以上的落地式钢管脚手架工程(包括采光井、电梯井脚手架)",value:24,dimension:"高度",compare:"gte",kind:"numeric"},{clause:"2.4.2",text:"附着式升降脚手架工程",kind:"form"},{clause:"2.4.6",text:"异型脚手架工程",kind:"form"}],superHazardous:[{clause:"3.4.1",text:"搭设高度 50m 及以上落地式钢管脚手架工程",value:50,dimension:"高度",compare:"gte",kind:"numeric"}]}},e=[{name:"搭设高度",category:"脚手架工程",unit:"m",dimension:"高度"},{name:"支撑高度",category:"模板工程及支撑体系",unit:"m",dimension:"高度"},{name:"支模高度",category:"模板工程及支撑体系",unit:"m",dimension:"高度"},{name:"搭设跨度",category:"模板工程及支撑体系",unit:"m",dimension:"跨度"},{name:"支撑跨度",category:"模板工程及支撑体系",unit:"m",dimension:"跨度"},{name:"挖土深度",category:"基坑工程",unit:"m",dimension:"深度"},{name:"开挖深度",category:"基坑工程",unit:"m",dimension:"深度"},{name:"单根柱质量",category:"起重吊装及起重机械安装拆卸工程",unit:"kN",dimension:"重量"},{name:"单件起吊重量",category:"起重吊装及起重机械安装拆卸工程",unit:"kN",dimension:"重量"},{name:"起吊重量",category:"起重吊装及起重机械安装拆卸工程",unit:"kN",dimension:"重量"}],f=["搭设跨度","支撑跨度","最大单跨跨度","单跨跨度","结构跨度"],g=/毗邻(?:建|构)?筑?物|临近建筑物|周边(?:建筑物|建筑|环境复杂)|地下管线|管线复杂|复杂地质|地质条件复杂|邻近(?:道路|管线|建筑物)|紧邻/u,h=/详见|见设计|按设计|施工图纸|以图纸|自行考虑|综合考虑/u;function i(a,b){let c=String(a||"").replace(/\s+/gu,"");if(!c||h.test(c))return;let d=/(\d+(?:\.\d+)?)\s*(mm|cm|m|t|吨|kg|kN|KN|kn)?/u.exec(c);if(!d)return;let e=Number(d[1]);if(!Number.isFinite(e)||e<=0)return;let f=(d[2]||"").toLowerCase();return{normalized:Math.round(1e3*("m"===b?"mm"===f?e/1e3:"cm"===f?e/100:e:"t"===f||"吨"===f?9.8*e:"kg"===f?.0098*e:e))/1e3,bound:/以内|内$|以內/u.test(c)?"upper":/以外|以上|及以上|不低于/u.test(c)?"lower":"exact"}}let j=/(基坑开挖深度|基坑深度|开挖深度|挖土深度)[^\d。;,,]{0,4}(-?\d+(?:\.\d+)?)(?:\s*[--—~至]\s*-?\d+(?:\.\d+)?)?\s*(米|m)(?![\da-z])(?!\s*[--—~~至]\s*\d)/gu,k=/超过|不小于|不大于|及以上|大于|小于|≥|≤|属危大|危大工程|分级|一级|二级|三级|等级|门槛|判定/u;function l(a,b){let c=[];for(let d of String(a||"").matchAll(j)){let e=d.index??0,f=a.slice(Math.max(0,e-8),e+d[0].length+8);if(k.test(f))continue;let g=Math.abs(Number(d[2])),h=`${g}${d[3]}`,j=i(h,"m");if(!j)continue;let l=`基坑工程\u0000${d[1]}\u0000${h}`;b.has(l)||(b.add(l),c.push({category:"基坑工程",name:d[1],raw:h,normalized:j.normalized,unit:"m",dimension:"深度",bound:j.bound,source:"图纸/清单实测(深度通道)"}))}return c}function m(a,b="m"){let c=String(a||"").replace(/\s+/gu,"");if(!c)return;let d=/^[约为]?[::]?(\d+(?:\.\d+)?)(mm|cm|米|m|kN|KN|kn|kg|t|吨)?/u.exec(c);if(!d)return;let e=d[1],f=d[2]||("kN"===b?"kN":"m"),g=i(`${e}${f}`,b);if(!g)return;let h=c.search(/[((][^))]{0,10}[::]/u);if(!(h>=0)||RegExp(`(?<![0-9A-Za-z])${e.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&")}(?![0-9])`,"u").test(c.slice(h)))return{normalized:g.normalized,display:`${e}${f}`}}let n=/塔式起重机|塔吊|汽车吊|履带吊|施工升降机|龙门架|物料提升机/u,o=/非常规起重设备|非常规起重方法|液压提升|顶升|滑移|整体提升/u;function p(a,b){let c=function(a){let b=[],c=new Set;for(let d of a){let a=String(d.content||"");if(a){for(let f of e){let e=RegExp(`${f.name}\\s*[::]\\s*(\\d+(?:\\.\\d+)?\\s*(?:mm|cm|m|t|吨|kg|kN|KN)?\\s*(?:以内|以外|以內|及以上|以上|内)?)`,"gu");for(let g of a.matchAll(e)){let a=String(g[1]||"").trim(),e=i(a,f.unit);if(!e)continue;let h=`${f.category}\u0000${f.name}\u0000${a}`;c.has(h)||(c.add(h),b.push({category:f.category,name:f.name,raw:a,normalized:e.normalized,unit:f.unit,dimension:f.dimension,bound:e.bound,source:`${d.filePath||""} ${d.sectionTitle||""}`.trim()}))}}for(let e of f){let f=RegExp(`(?<![\\u4e00-\\u9fa5])${e}\\s*(?:[::]|为|是)?\\s*(?:约为|达|至)?\\s*(\\d+(?:\\.\\d+)?)\\s*(?:mm|cm|m|米)?`,"gu");for(let g of a.matchAll(f)){let a=`${String(g[1])}m`,f=i(a,"m");if(!f)continue;let h=`模板工程及支撑体系\u0000${e}\u0000${a}`;c.has(h)||(c.add(h),b.push({category:"模板工程及支撑体系",name:e,raw:a,normalized:f.normalized,unit:"m",dimension:"跨度",bound:f.bound,source:`${d.filePath||""} ${d.sectionTitle||""}`.trim()}))}}}}return b}(a),h=a.filter(a=>/清单|工程量|bill|boq|\.xls/iu.test(`${a.filePath||""} ${a.sectionTitle||""}`)).map(a=>String(a.content||"")).join("\n").replace(/\d+\.\d+(?:\.\d+)?\s*(?:基坑工程|模板工程及支撑体系|模板支撑工程|模板工程|起重吊装及起重机械安装拆卸工程|起重吊装|脚手架工程|附着式升降脚手架工程|附着式升降脚手架|异型脚手架工程|异型脚手架|拆除工程|暗挖工程)[^。;\n]{0,60}/gu,"").replace(/(?:危大工程范围|超过一定规模的危大工程范围)[^。;\n]{0,80}/gu,""),j=new Set,k=[...(a||[]).flatMap(a=>l(String(a.content||""),j)),...[...Object.values(b||{})].flatMap(a=>l(String(a||""),j)),...Object.entries(b||{}).flatMap(([a,b])=>{if(!/基坑|开挖|挖土|槽/u.test(a)||!/深度/u.test(a))return[];let c=m(String(b||""),"m");if(!c)return[];let d=`基坑工程\u0000${a}\u0000${c.display}`;return j.has(d)?[]:(j.add(d),[{category:"基坑工程",name:a,raw:c.display,normalized:c.normalized,unit:"m",dimension:"深度",bound:"exact",source:"图纸标注(canonical 自证)"}])})],p=[];for(let a of Object.keys(d)){let b=c.filter(b=>b.category===a).concat("基坑工程"===a?k:[]),e=a=>b.filter(b=>b.dimension===a).reduce((a,b)=>(b.normalized??0)>(a?.normalized??-1)?b:a,void 0),f=e("深度")??e("高度")??e("跨度")??e("重量"),i=a=>{if(void 0===a.value||!a.dimension)return;let b=e(a.dimension);return b&&(b.normalized??0)>=a.value?b:void 0},j=d[a],l=f?`${f.name} ${f.raw}`:"资料未给出实测参数",m=f?.source||"",r=(b,c,d,e)=>p.push({category:a,parameter:l,parameterSource:m,clause:b,threshold:c,conclusion:d,basis:e}),s=f?.unit==="kN"?"kN":"m",t=j.hazardous.find(b=>{var c,d,e;return"form"===b.kind&&(c=b.clause,d=h,e=a,"2.3.2"===c?"起重吊装及起重机械安装拆卸工程"===e&&(n.test(d)||o.test(d)):"2.4.2"===c?/附着式升降脚手架|爬架/u.test(d):"2.4.6"===c&&/异型脚手架/u.test(d))});if(t){var q;r(t.clause,t.text,"属危大",`本项目${"2.3.2"===(q=t.clause)?"起重机械进行安装(钢结构吊装采用塔式起重机等起重机械)":"2.4.2"===q?"附着式升降脚手架":"2.4.6"===q?"异型脚手架":"该形态"},对照 ${t.clause} 属危大工程(该条款无重量/高度门槛)`);continue}if(!f){r(j.hazardous[0]?.clause||"",j.hazardous[0]?.text||"","不属危大",`本项目资料中无${a}对应实测参数(无从判定达到 ${j.hazardous[0]?.clause} 门槛),且清单无该类分项,不属危大工程`);continue}let u=j.superHazardous.map(a=>({rule:a,measured:i(a)})).find(a=>void 0!==a.measured),v=j.hazardous.map(a=>({rule:a,measured:i(a)})).find(a=>void 0!==a.measured),w=void 0!==v&&!("2.3.1"===v.rule.clause&&!o.test(h));if(u){let{rule:a,measured:b}=u;r(a.clause,a.text,"属超过一定规模的危大",`本项目 ${b.name} ${b.raw} = ${b.normalized}${b.unit},达 ${a.clause} 的 ≥${a.value}${b.unit} 门槛,属超过一定规模的危大工程`);continue}if(w){let{rule:a,measured:b}=v;r(a.clause,a.text,"属危大",`本项目 ${b.name} ${b.raw} = ${b.normalized}${b.unit},达 ${a.clause} 的 ≥${a.value}${b.unit} 门槛,属危大工程`);continue}let x=j.hazardous.find(a=>"conditional"===a.kind);if(x){let a=g.exec(h)?.[0];r(x.clause,x.text,a?"属危大":"不属危大",a?`本项目 ${l} = ${f.normalized}${s} 未达 2.1.1 数值门槛,但资料载明「${a}」,对照 ${x.clause}(地质条件、周围环境、地下管线、毗邻建(构)筑物复杂)属危大工程`:`本项目 ${l} = ${f.normalized}${s} 未达 2.1.1 的 3m 门槛,且资料未见毗邻建(构)筑物、地下管线复杂或地质条件复杂等 2.1.2 触发条件,对照 ${x.clause} 不属危大工程`);continue}if("模板工程及支撑体系"===a){let b=c.filter(b=>b.category===a&&"跨度"===b.dimension).reduce((a,b)=>(b.normalized??0)>(a?.normalized??-1)?b:a,void 0),d=void 0!==b&&(b.normalized??0)>=10,f=(e("高度")?.normalized??0)>=5,g=e("高度");r(j.hazardous[0].clause,j.hazardous[0].text,d||f?"属危大":"不属危大",d?`本项目 搭设跨度 ${b.raw}(来源字段「${b.name}」)、支撑高度 ${g?.raw??"—"},其中跨度达 2.2.2 的 ≥10m 门槛,属危大工程`:f?`本项目 支撑高度 ${g.raw} = ${g.normalized}m,达 2.2.2 的 ≥5m 门槛,属危大工程`:`本项目 支撑高度 ${g?.raw??"资料未给出"} 未达 5m 门槛,且资料未见 ≥10m 的搭设跨度,对照 2.2.2 各项条件均未达,不属危大工程`);continue}let y=j.hazardous[0],z=y?i(y):void 0;r(y?.clause||"",y?.text||"","不属危大",`本项目 ${z?`${z.name} ${z.raw}`:l} 未达 ${y?.clause} 的 ≥${y?.value}${z?.unit??s} 阈值,且无适用形态型条款,不属危大工程`)}return p}function q(a){return 0===a.length?"":["【危大判定(写作前已按清单实测参数定死,硬约束)】下列判定为**本项目实际参数对照规范阈值**的确定性结论,正文必须逐项按「本项目实际参数 + 判定阈值对照 + 结论」三要素表述,条款号须引用正确;**禁止照抄规范阈值充当本项目参数**(不得写「开挖深度超过3m」而不给本项目实测值),判「不属危大」的类别不得写成属危大,**不得写「须按设计文件/专项方案确定」「依据不足」类回避表述**(本项目资料齐全,判定已确定):",...a.map(a=>`- ${a.category}:本项目「${a.parameter}」;适用条款 ${a.clause}(${a.threshold})→ 结论:**${a.conclusion}**。依据:${a.basis}`),"涉及基坑支护形式与做法时,必须写明具体支护参数并与资料一致:土钉墙写明土钉规格(钢管 Φ 及壁厚)、长度、竖向/水平间距、喷射混凝土面层厚度与钢筋网规格;放坡开挖写明放坡坡率(如 1:0.75)与坡面防护做法;**禁止「按设计坡率」「放坡或支护」类参数留白或两可表述**。","危大工程辨识清单表格与正文排除性声明必须**同口径**:清单只列参数确认达到判定阈值的类别;正文声明「本工程无/未涉及某类危大工程」的类别不得再列入危大清单表格(反之亦然),阈值表述不得两处不一致。"].join("\n")}},70208:(a,b,c)=>{c.d(b,{Fe:()=>k,GQ:()=>v,Ui:()=>t,YZ:()=>w,bl:()=>s,cs:()=>u,effectiveTemplateChapters:()=>z,mq:()=>h,nz:()=>j,ob:()=>i,tb:()=>x});var d=c(58965),e=c(23500);function f(a){return a.replace(/[☑✓✔☐□☒○●◉◇◆]/gu,"")}function g(a){let b=f(a.trim()),c="";for(;b!==c;)c=b,b=b.replace(RegExp(`^\\s*第(?:\\d{1,3}|${d.$m})[章节]\\s*`,"u"),"").replace(RegExp(`^\\s*[((]?(?:\\d{1,3}|${d.$m})(?:[..]\\d{1,3})+(?:[..、))]\\s*|\\s+)`,"u"),"").replace(RegExp(`^\\s*[((]?(?:\\d{1,3}|${d.$m})[))、..]\\s*`,"u"),"").replace(RegExp("^\\s*[-*+]\\s+","u"),"").trim();return b.replace(/\s+/gu," ")}function h(a){let b=g(a).replace(/\s+/gu,"");if(!b||/^(?:如|若|如果|倘若|假如|当)[^,,。;]{0,24}[,,]/u.test(b)||/^(?:我(?:方|公司)|本(?:单位|公司|工程|项目)|投标人|承包人|中标人|发包人|供应商)[^,,。;]{0,14}(?:承诺|保证|响应|满足|确保|应|须|将|会)/u.test(b)||/(?:评标)?委员会[^,,。;]{0,10}(?:确定|认定|评审|判断|推荐)/u.test(b)||/^(?:不(?:得|应|宜|少于|超过|大于|小于|低于|高于)|超过|低于|高于|达到|不少于|不大于|不超过|偏差率|误差)\s*\d/u.test(b)||/^[^,,。;]{0,10}\d+(?:%|%)/u.test(b)||/^\d+\s*项/u.test(b)||/^\d+(?:[((]\d+[))])?\s*目/u.test(b)||/^\d+\s*对(?:与|于)/u.test(b)||/^\d{1,4}[a-zA-Z]{0,3}\d{0,4}\s*[::]/u.test(b)||/^\d{1,4}\s*(?:个)?(?:日历天|天|日|月|年)[,,、]/u.test(b)||/^\d{1,4}[^,,。;\s]{1,6}[,,、]/u.test(b)||/^\d{1,2}[一-龥]{2,10}$/u.test(b)&&!/^\d{1,2}(?:个|名|台|套|辆|份|种|类|层|栋|座|米|吨|年|月|天|日|周|次|项)/u.test(b)||/[((【[《]$/u.test(b)||/[((【[《][^))】]》]*$/u.test(b)||/以下简/u.test(b)||/^\d{1,4}\s*[a-zA-Z]/u.test(b)||/^(?:确定|计算|比较|推荐|审查|否决)(?:有效)?评标(?:基准)?价/u.test(b)||/^(?:其他要求|需要补充的其他内容|相当于或不低于|补充条款|建议编制要求|投标须知|评标办法)/u.test(b))return!0;let c=b.replace(/^\d{1,3}(?:[..]\d{1,3})*\s*/u,"");return!!(/^具备(?:有效|相应|满足)/u.test(c)||/^(?:须|应|需|得)?提供[^,,。;]{0,12}(?:证明|材料|文件|证件|证书|报告)/u.test(c)||/^(?:本(?:招标)?(?:项目|工程)|投标人|承包人|中标人|发包人|供应商|项目经理|技术负责人|施工单位)[^,,。;]{0,24}(?:不得|禁止|严禁|必须|应当)/u.test(c)||/(?:见|详见|参见|详见第)[^,,。;]{0,12}(?:招标公告|招标文件|投标人须知|补疑|澄清|工程量清单|图纸|合同条款|前附表)/u.test(c)||/^\d{1,3}\s*款/u.test(b)||/第\d+(?:\.\d+)?款[^,,。;]{0,20}(?:向(?:招标人|发包人|监理人?|承包人)|提出|告知|通知|送达|发出)/u.test(b)||/\d+(?:元|万元|㎡|m[²3]?|km|m|cm|mm|kg|t|L|㎡|立方米|平方米|公顷|亩|度|kPa|MPa)[((](?:保留|计算|填写|详见|见|按|不得|应|须)/u.test(b)||/[::].{0,30}(?:必须由|应由|须由)/u.test(b)||/(?:必须|应|须|需).{0,30}(?:由|按|须)$/.test(b)||/(?:\d+(?:\.\d+)*|第\d+(?:\.\d+)*)条(?:款)?的?(?:规定|约定)/u.test(b)||/另行(?:交纳|缴纳|支付|提交|办理|承担|履行)/u.test(b)||/^未(?:分部|分类|分组|归类|划分|分配)/u.test(b))||function(a){let b=a.replace(/\s+/gu,"").replace(/^\*+|\*+$/gu,"");if(!b)return!1;if((b.match(/[爀椀猟礀氀漀挀渀捁扄潓瑲湥獴慔汢]/gu)||[]).length>=2||/[\u2046-\u205F\u2070-\u209F\u2100-\u2102\u2104-\u214F\u21B0-\u21FF\u2270-\u22FF\u2400-\u243F\u249C-\u24FF\u2640-\u26FF\u27C0-\u27EF\u2900-\u297F\u2A00-\u2AFF\u2B00-\u2BFF\u2E00-\u2FFF\u3200-\u33FF]/u.test(b)||/[\u00A0-\u00AF\u00B4\u00B6\u00B8\u00BA-\u00FF]/u.test(b)||/[\u4e00-\u9fa5][A-Za-z][\u4e00-\u9fa5]/u.test(b)&&!/[\u4e00-\u9fa5][A-Za-z](?:值|级|类|区|型|构|段|座|轴|向|楼|层|栋|点|位)/u.test(b))return!0;let c=[...b];return c.filter(a=>/[\u4e00-\u9fa5A-Za-z0-9()()【】《》、,。;;::,.\-/㎡%°·±×÷≤≥—–]/u.test(a)).length/c.length<.6}(b)}function i(a){let b=g(a).replace(/\s+/gu,"");return!!(!b||/^(?:目录|章节|大纲|要求|说明|注意|输出|格式|示例|例如|写法|占位|提示)$/u.test(b)||/^(?:判断|判定|识别|确认)?是否(?:涉及|涉|需要|适用)|^(?:如|若|如果)(?:涉及|不涉及|适用|不适用)|(?:根据|结合).{0,12}(?:实际情况|项目情况|资料情况).{0,8}(?:判断|确定|编写|生成)|按需(?:生成|编写)|视情况|判断后|生成要求|编写要求|说明要求|注意事项/u.test(b)||/[::]$|[,、;。]$/u.test(b))||h(b)}function j(a){return v(a.replace(/\*+/gu,"")).replace(/^第[一二三四五六七八九十百千万\d]+[章节篇部分、..\s-]*/u,"").replace(/^\d+(?:\.\d+)*(?:[..、]|\s)+/u,"").replace(/^[-—–]\s*/u,"").replace(/[<>]/gu,"").replace(/[::。;;,.,]+$/gu,"").replace(/\s*[((][^()()]{0,40}[a-zA-Z]{3,}[^()()]{0,40}[))]\s*$/u,"").trim()}function k(a){let b=j(a).replace(/\s+/gu,"");if(!b||/^\d+[^\d..、]/u.test(b)||/^(?:发包人代表|任何批准|计量与支付|变更与索赔|缺陷责任|竣工验收程序|违约责任|争议解决|合同价格)/u.test(b)||/^(?:我(?:方|公司|单位)|本单位|本公司).{0,20}(?:承诺|保证|均属实|均真实|均有效|承担)/u.test(b)||/独立制表|单独制表|分别编制|逐一编制|另行编制|单位工程独立|分单位工程/u.test(b))return!0;if(/[、,,]/u.test(b)&&b.length>=10&&/^[\u4e00-\u9fa5]$/u.test(b.slice(-1))){let a=b.split(/[、,,]/u);if(a.length>=3&&1===a[a.length-1].length)return!0}if(/\d+(?:元|万元|㎡|m[²3]?|km|m|cm|mm|kg|t|L|立方米|平方米|公顷|亩|度|kPa|MPa)[((](?:保留|计算|填写|详见|见|按|不得|应|须)/u.test(b)||/(?:必须由|应由|须由)/u.test(b)||/(?:必须|应|须|需).{0,30}(?:由|按|须)$/.test(b)||/(?:\d+(?:\.\d+)*|第\d+(?:\.\d+)*)条(?:款)?的?(?:规定|约定)/u.test(b)||/另行(?:交纳|缴纳|支付|提交|办理|承担|履行)/u.test(b)||/^未(?:分部|分类|分组|归类|划分|分配)/u.test(b))return!0;let c=b.split(/[、,,]/u).filter(Boolean);return!!(c.length>=2&&c.some(a=>a.length>=7))}function l(a){return 0===a.trim().length||i(a)}let m=/^[((]?\d{1,3}(?:[..]\d{1,3})+(?:[..、))]|\s+|[一-龥])/u,n=/^[((]\d{1,3}[))]/u,o=/^(?: {2,}|\t)/u,p=RegExp(`^(?:第(?:\\d{1,3}|${d.$m})[章节]|\\d{1,3}[、))]|\\d{1,3}[..]\\s|(?:${d.$m})[、..))])`,"u"),q="(?:OUTLINE|CHAPTERS?|章节(?:大纲)?|大纲|目录)",r=RegExp(`<\\s*${q}(?:\\s[^>]*)?>([\\s\\S]*?)<\\/\\s*${q}\\s*>`,"giu");function s(a){return RegExp(`^\\s*<\\s*${q}(?:\\s[^>]*)?>`,"iu").test(a)}function t(a){return RegExp(`^\\s*<\\/\\s*${q}\\s*>`,"iu").test(a)}function u(a){for(let b of a){let a=function(a,b,c){let e=[],f=null,h=a=>a.replace(/\s+/gu,"");for(let i of function(a,b){r.lastIndex=0;let c=[...a.matchAll(r)].map(a=>a[1]||"");if(c.length>0||b?.strict)return c;let d=/(?:<\s*)?(?:OUTLINE|CHAPTERS?|章节(?:大纲)?|大纲|目录)\s*>?\s*[::]?\s*([\s\S]*?)(?:<\/\s*(?:OUTLINE|CHAPTERS?|章节(?:大纲)?|大纲|目录)\s*>|END\s+(?:OUTLINE|CHAPTERS?)|$)/iu.exec(a);return d?.[1]?[d[1]]:[]}(a,c))for(let a of function(a){let b=`${d.$m}`,c=[`第(?:\\d{1,3}|${b})[章节]\\s*`,`(?:\\d{1,3}[..]){1,2}\\d{1,3}[..、))]?(?=\\s|[一-龥])`,`(?:\\d{1,3})[、))]\\s*`,`(?:\\d{1,3})[..]\\s+(?!\\d)`,`(?:${b})[、..))]\\s*`,`[((](?:\\d{1,3}|${b})[))]\\s*`,"[-*+]\\s+"],e=a.replace(/\r?\n/gu,"\n");for(let a of c)e=(e=(e=e.replace(RegExp(`([;;。!?!?])\\s*(?=${a})`,"gu"),"$1\n")).replace(RegExp(`(?<=\\n)\\s+(?=${a})`,"gu"),"")).replace(RegExp(`(?<![\\d..])\\s+(?=${a})`,"gu"),"\n");return e.split(/\n|;|;/u).map(a=>(function(a){let b=a.replace(/\u3000/gu," "),c=b.replace(/^[-*+]\s+/u,"").trim();if(!c)return null;let d=g(a);return!d||l(d)?null:m.test(c)?{title:d,sectionCandidate:!0,kind:"dotted"}:n.test(c)?{title:d,sectionCandidate:!0,kind:"paren"}:p.test(c)?{title:d,sectionCandidate:!1,kind:"numbered"}:o.test(b)?{title:d,sectionCandidate:!0,kind:"indent"}:{title:d,sectionCandidate:!1,kind:"plain"}})(a)).filter(a=>!!a)}(i)){let c=e[e.length-1];if(c&&a.sectionCandidate&&f&&f!==a.kind){h(a.title)===h(c.title)||(c.sections||[]).some(b=>h(b)===h(a.title))||(c.sections=[...c.sections||[],a.title]);continue}e.push({id:`explicit-${b}-${e.length+1}`,title:a.title,purpose:`根据显式大纲章节生成正式正文:${a.title}`,requiredFacts:[],sections:[],queries:[a.title]}),f=a.kind}return e.filter(a=>!l(a.title))}(b.text||"",b.source,{strict:b.strict});if(a.length>=2)return a}return[]}function v(a){let b=f(a.replace(/^#+\s*/u,"").trim()),c="";for(;b&&b!==c;)c=b,b=b.replace(/^第[一二三四五六七八九十百千万\d]+[章节]\s*/u,"").replace(/^\d+(?:[..]\d+)+(?![万亿千百十米㎡吨元A-Za-z\d])\s*[、..]?\s*/u,"").replace(/^\d+(?:[、,,]\s*|\s+|\.\s*(?![0-9])|.\s*(?![0-9]))/u,"").replace(/^[((]?[一二三四五六七八九十]+[))、..\s]+/u,"").trim();return b}function w(a){return v(a.replace(/\s+/gu," ").trim()).replace(/^[,,、;;::。.!!??\-—\s]+/u,"").trim()}function x(a,b){let c=v(b);return`第${function(a){let b=["零","一","二","三","四","五","六","七","八","九"];if(a<=10)return 10===a?"十":b[a];if(a<20)return`十${b[a%10]}`;if(a<100){let c=Math.floor(a/10),d=a%10;return`${b[c]}十${d?b[d]:""}`}return String(a)}(a+1)}章 ${c}`}function y(a,b){let c=new Set;return a.filter(a=>{let d=w(a.title);if(!d)return!1;if(!b?.preserveExplicitOutline&&(c.has(d)||/见(?:公告|文件|资料|附件)|按(?:资料|文件|相关要求)|质量标准[::]|范围[::].*依据/u.test(d)||b?.template&&(0,e.C1)(d,b.template)))return!1;return c.add(d),a.title=d,!0})}function z(a,b,c){return!b||c?.preserveExplicitOutline?y([...a.chapters],{...c,template:a}):y([...a.chapters].map(a=>{let c=v(a.title),d=b.chapterRules.find(b=>b.id===a.id||v(b.title)===c);return{...a,title:c,purpose:a.purpose,requiredFacts:a.requiredFacts||[],queries:[...new Set([...a.queries||[],c,d?.generationHint||"",...a.sections||[]].filter(Boolean))]}}),{...c,template:a})}},70933:(a,b,c)=>{c.d(b,{A1:()=>A,Pc:()=>y,QO:()=>x,QR:()=>v,R7:()=>F,eE:()=>m,ks:()=>E,oW:()=>o});var d=c(76760),e=c(77598),f=c(58965),g=c(18274),h=c(91977),i=c(51144),j=c(80572),k=c(31920);function l(a,b=0){let c="drawing"===a.processingType||a.roleId?.includes("drawing")?"视觉资料":"table"===a.processingType||a.roleId?.includes("bill")?"表格资料":"rule"===a.processingType||a.roleId?.includes("tender")?"规则资料":"文本资料";return`${c}片段${b+1}${a.sectionTitle?`(${a.sectionTitle.replace(f.tK,"")})`:""}`}function m(a){return(0,k.W)([...a].filter(a=>{let b=a.charCodeAt(0);return 9===b||10===b||13===b||b>=32}).join("").replace(f.VX,"").replace(f.tK,"").replace(/\b(?:Model|Layout\d*|Entity|Handle|ObjectId|ByLayer|Continuous)\b/giu,"").replace(/[\t ]{2,}/gu," ").replace(/\n{3,}/gu,"\n\n").trim())}function n(a){let b=m(a),c=Math.max(1,b.length),d=(b.match(/[\u4e00-\u9fa5]/gu)||[]).length,e=(b.match(/\d/gu)||[]).length,f=(b.match(/项目|任务|质量|安全|周期|验收|材料|设备|表格|数据|参数|规范|标准|流程|资源|风险/gu)||[]).length,g=(b.match(/CAD|AcDb|Polyline|ByLayer|ObjectId|Handle|Model|Layout|图层|页码|第\s*\d+\s*页|打印|版权所有|^[\s\W\d_]+$/gimu)||[]).length,h=(b.match(/(?:序号|项目名称|事项|单位|数量|单价|金额|备注)/gu)||[]).length,i=Math.min(1,d/c*.7+Math.min(.3,(e+3*f)/120)),j=Math.min(1,.18*g+.04*Math.max(0,h-8)+.35*(d/c<.25));return{noiseScore:j,factDensity:i,shouldUse:b.length>=30&&j<.72&&i>.08}}function o(a){let b=[...new Set(m(a).split("\n").map(a=>a.trim()).filter(Boolean).filter(a=>{let b=/计划工期|合同工期|工期|合同估算价|合同估算价格|投资估算|估算价格|工程估算价|最高投标限价|招标控制价|建设地点|建设规模|质量标准/u.test(a);if(!b&&/综合单价|合价|报价明细|投标报价|税率|增值税|利润|预留金|暂列金额|结算/u.test(a))return!1;let c=g.yw.test(a),d=/(?:GB\s*\/?\s*T?|JGJ|CJJ|DB\s*\/?\s*T?|CECS|ISO|IEC)\s*[\w./-]*\d/u.test(a),e=/项目|工程|工期|合同|估算|价格|地点|规模|清单|图纸|设计|规格|型号|数量|单位|材料|设备|管|线|电缆|混凝土|钢筋|砌体|门窗|防水|标准|规范|验收|做法|参数|尺寸|标高|厚度|强度|等级|系统|安装/u.test(a);return b||c||d||e&&/\d/u.test(a)&&a.length<=260}))].map(a=>(function(a){if(a.length<=160)return a;let b=a.match(/\d+(?:\.\d+)?\s*(?:mm|cm|m|km|㎡|m²|m3|m³|kg|g|t|L|ml|MPa|kPa|℃|%|台|套|个|项|批|次|份|人|小时|分钟|日历天|天|周|月|年)|DN\s*\d+|Φ\s*\d+|φ\s*\d+|C\d{2,}|HRB\d+|(?:计划工期|合同工期|合同估算价|投资估算|最高投标限价|招标控制价|建设地点|建设规模|质量标准)[^。;;,,]{0,40}|(?:GB|JGJ|CJJ|DB|CECS|ISO|IEC)\s*\/?\s*T?\s*[\w./-]*\d/gu);return b&&b.length>0?[...new Set(b)].join(";"):a.slice(0,160)})(a)).filter(Boolean);return(0,i.C)([...new Set(b)],a=>(0,i.O)(a),{},"key-fact-lines").selected.join("\n")}let p=/项目名称|工程名称|项目编号|招标项目编号|标段编号|招标人|建设单位|发包人|建设地点|工程地点|建设规模|建筑面积|招标范围|计划工期|合同工期|总工期|周期要求|质量标准|质量目标|安全目标|安全生产|合同估算价|合同估算价格|投资估算|最高投标限价|招标控制价|工程估算价|结构形式|层数|建筑高度|基础形式|抗震设防|绿色建筑等级|装配率|支护形式|质保期|质量保修|投标有效期/u;function q(a){let b=a.processingType||"";return"table"===b||b.includes("bill")||"structured_data"===b||!!a.roleId?.includes("bill")}function r(a){return a.length>200?`${a.slice(0,200)}…`:a}let s=[{re:/基坑底标高|换填底标高|整平标高|开挖深度|放坡系数|支护形式|坡率/u,value:20},{re:/标高/u,value:10},{re:/[±+]\s*0[.,]0{2,}/u,value:8},{re:/[±+-]\s*\d+\.\d{2,}/u,value:3}];function t(a,b){return"drawing"===a.processingType||".dwg"===d.extname(a.filePath).toLowerCase()||/资料类型:\s*cad/iu.test(b)}function u(a,b){let c=Math.max(400,Math.floor(b)),d=m(a);if(d.length<=c)return d;let e=d.split("\n"),f=e.map((a,b)=>{let c=0;for(let{re:b,value:d}of s)if(b.test(a)){c=d;break}return{line:a,index:b,value:c}}).filter(a=>a.value>0);if(!f.length)return d.slice(0,c);f.sort((a,b)=>b.value-a.value||a.index-b.index);let g=d.slice(0,Math.min(300,Math.max(80,Math.floor(.22*c)))).trimEnd(),h=`(超长证据参数窗口提取:${f.length} 行参数命中,尾部关键参数已前置展示)`,i=c-g.length-h.length-4,j=[],k=new Set,l=Math.max(50,Math.floor(.15*c));for(let{line:a,index:b}of f){if(i<=30)break;if(k.has(b))continue;let c=b>0&&/图纸节点:/u.test(e[b-1])?e[b-1].slice(0,l):"",d=[c,a].filter(Boolean).join("\n"),f=d.length>i?d.slice(0,i):d;j.push(f),i-=f.length+1,k.add(b),c&&k.add(b-1)}let n=j.length?j.join("\n"):d.slice(0,i+g.length),o=`${g}
|
|
66
|
-
${h}
|
|
67
|
-
${n}`;return o.length>c?o.slice(0,c):o}function v(a,b={},c){let f=Number.isFinite(b.maxItems)&&b.maxItems>0?Math.floor(b.maxItems):void 0,g=Number.isFinite(b.maxChars)&&b.maxChars>0?Math.floor(b.maxChars):void 0,h=function(a,b,c){let f=new Set,g=a.map(a=>{let b=function(a,b){let c=d.extname(a).toLowerCase(),e=m(b).split("\n").map(a=>a.trim()).filter(a=>a&&!/^第\s*\d+\s*页\s*(?:共\s*\d+\s*页)?$/u.test(a)).join("\n"),f=n(e);if(e.length>20&&f.shouldUse)return e;let g=o(e);return g.length>20?`资料参数行摘要:
|
|
68
|
-
${g}`:e.length>80&&f.noiseScore<.9?e:[".pdf",".doc",".docx",".xls",".xlsx",".png",".jpg",".jpeg",".webp",".dwg"].includes(c)?`该资料为${c.replace(".","").toUpperCase()}格式附件,仅作为内部事实提取依据;正式正文不得引用文件名。`:e}(a.filePath,a.content),c=n(b);return{item:{...a,content:b,score:a.score*(1+c.factDensity)*(1-.45*c.noiseScore)},quality:c}}),h=[],i=[],j=[];for(let a of g){var k,l;(k=a.item,l=a.item.content,a.quality.shouldUse||/附件,仅作为内部事实提取依据/u.test(l)||t(k,l)&&l.split("\n").some(a=>s.some(({re:b})=>b.test(a))))?(h.push(a),!a.quality.shouldUse&&t(a.item,a.item.content)&&j.push(a.item.filePath)):i.push(a)}j.length&&console.warn(`[evidence] drawing 类证据按图纸参数判据放行(散文噪声判据不适用):${j.slice(0,5).join("、")}${j.length>5?` 等 ${j.length} 条`:""}`);let p=Math.min(3,a.length),q=Number.isFinite(b)&&b>0?Math.ceil(b):void 0,r=h.sort((a,b)=>b.item.score-a.item.score).filter(a=>{let b=function(a){let b=a.content.replace(/\s+/gu," ").trim();return`${a.filePath}:${a.sectionTitle||""}:${(0,e.createHash)("sha1").update(b).digest("hex")}`}(a.item);return!f.has(b)&&(f.add(b),!0)}),u=q?r.slice(0,q):r;if(c){let b=g.reduce((a,b)=>a+b.quality.noiseScore,0),d=g.reduce((a,b)=>a+b.quality.factDensity,0);c.evidence.raw+=a.length,c.evidence.used+=u.length,c.evidence.filteredNoise+=Math.max(0,g.length-h.length),c.evidence.avgNoiseScore=g.length?Number((b/g.length).toFixed(3)):0,c.evidence.avgFactDensity=g.length?Number((d/g.length).toFixed(3)):0}return h.length<p&&console.warn(`[evidence] 质量门通过条目不足(${h.length}/${p},未过门 ${i.length} 条,共 ${a.length} 条):按通过条目成池(不外溢未过门条目),短缺见诊断 filteredNoise`,i.slice(0,3).map(a=>a.item.filePath)),u.map(a=>a.item)}(a,void 0,c),i=b.preservePinned?h.filter(a=>"pinned-evidence"===a.source||"bound-file"===a.source||"required-fact-evidence"===a.source):[],j=h.filter(a=>!i.includes(a)),k=[],l=0,p=(a,b=!1)=>{if(f&&k.length>=f)return;let c=m(a.content);g&&c.length>4e3&&(c=u(c,Math.min(12e3,g)));let d=l+c.length;g&&k.length>0&&d>g||(k.push({...a,content:c}),l=d)};for(let a of i)p(a,!0);for(let a of j)p(a);return c&&(c.evidence.budgetDropped+=Math.max(0,h.length-k.length)),k}function w(a,b){if(a.filePath!==b.filePath)return a.filePath<b.filePath?-1:1;let c=a.sectionTitle||"",d=b.sectionTitle||"";return c!==d?c<d?-1:1:a.content.length!==b.content.length?a.content.length-b.content.length:a.content!==b.content?a.content<b.content?-1:1:0}function x(a,b){let c=[...b].sort(w),e=new Map;for(let b of c){let c=function(a,b){let c=d.extname(a).toLowerCase();return"drawing"===b||/地图|map|drawing|design/iu.test(a)?"map":[".png",".jpg",".jpeg",".webp"].includes(c)?"image":"table"===b?"table":[".xls",".xlsx",".csv"].includes(c)?"spreadsheet":[".pdf",".doc",".docx"].includes(c)?"document":c&&![".md",".txt"].includes(c)?"attachment":"text"}(b.filePath,b.processingType),f=e.get(b.filePath)||{filePath:b.filePath,kind:c,roleId:b.roleId,processingType:b.processingType,score:b.score,semanticTitle:function(a,b){let c=d.basename(a).replace(/\.[^.]+$/u,"");return"map"===b?c.replace(/^地图-/u,"").replace(/-完整地图$/u,"完整地图"):"image"===b?c.replace(/-/gu," "):"spreadsheet"===b?`${c}(结构化表格)`:"document"===b?`${c}(文档附件)`:c}(b.filePath,c),contentUse:"map"===c?"作为视觉/地图证据,用于说明空间关系、区域划分、点位、路线或布局。":"image"===c?"作为图片证据,用于视觉说明、参考图或章节配图。":"spreadsheet"===c||"table"===c?"作为表格/数据证据,用于字段对比、明细、数量和结构化结论。":"document"===c?"作为 PDF/Word 文档证据,用于提取规范、事实、说明、约束和附件来源。":"attachment"===c?"作为附件证据,用于提供补充来源、文件级约束或可追溯引用。":"作为文本证据,用于事实抽取、章节论据和来源引用。",relatedFacts:[],relatedChapters:[],snippets:[]};f.score=Math.max(f.score,b.score),f.relatedFacts=[...new Set([...f.relatedFacts,...function(a,b){let c=`${a.filePath}
|
|
69
|
-
${a.content}`;return[...new Set([...b?.requiredFacts||[],"表格数据","规范要求","基础事实","附件资料","视觉资料","图片资料"].filter(b=>(0,h.Lk)(a,b)||c.includes(b)))]}(b,a)])],f.relatedChapters=[...new Set([...f.relatedChapters,a.title])];let g=b.content.replace(/\s+/gu," ");g&&!f.snippets.includes(g)&&f.snippets.push(g),e.set(b.filePath,f)}let f=[...e.values()].sort((a,b)=>b.score-a.score),g={map:[],image:[],table:[],document:[],spreadsheet:[],text:[],attachment:[]};for(let a of f)g[a.kind].push(a);let i=[`绑定材料包:文本片段 ${c.length} 条、结构化材料 ${f.length} 个。`,`材料类型分布:文本 ${g.text.length}、文档 ${g.document.length}、表格/数据 ${g.spreadsheet.length+g.table.length}、图片 ${g.image.length}、视觉/地图 ${g.map.length}、其他 ${g.attachment.length}。`,"正文必须只写材料中的事实、参数、数量、做法和要求,不得出现文件名、来源清单或后台证据描述。"].filter(Boolean).join("\n");return{chapterId:a.id,textEvidence:c,resources:f,byKind:g,summary:i}}function y(a,b=8e3,c=24e3){let d=Number.isFinite(a)&&a>0?Math.ceil(a):1200,e=(0,j.z)().evidenceBudgetCeiling,f=Number.isFinite(e)&&e>0?Math.floor(e):c,g=(0,j.z)().evidenceBudgetRatio;return Math.min(Math.max(b,Math.min(f,Math.ceil(d*(Number.isFinite(g)&&g>0?g:8)))),Number.isFinite(e)&&e>0?1/0:12e3)}function z(a,b,c,d){let e=b.trim();if(!e)return;let f=Number.isFinite(d)&&0===d;if(null==d||!f&&c.chars+e.length<=d){a.push(e),c.chars+=e.length;return}c.omitted+=1}function A(a,b){let c=`${a.sectionTitle||""}
|
|
70
|
-
${a.content}`,d=a.score;for(let e of(g.sv.test(c)&&(d+=8),/计划工期|合同工期|合同估算价|合同估算价格|投资估算|最高投标限价|招标控制价|建设地点|建设规模|质量标准|招标范围/u.test(c)&&(d+=10),b))e&&(c.includes(e)||(0,h.Lk)(a,e))&&(d+=6);return/GB\s*\/?\s*T?|JGJ|CJJ|DB\s*\/?\s*T?|CECS|ISO/iu.test(c)&&(d+=3),d}function B(a,b,c,d,e=6){let f={chars:0,omitted:0},g=[],h=new Set,i=new Map,j=[...a].sort((a,b)=>d(b)-d(a));for(let a of j){if(i.has(a.filePath))continue;let d=g.length;z(g,c(a,g.length),f,b),g.length>d&&(i.set(a.filePath,1),h.add(a))}for(let a of j){if(h.has(a))continue;let d=i.get(a.filePath)||0;if(e>0&&d>=e)continue;let j=g.length;z(g,c(a,g.length),f,b),g.length>j&&(i.set(a.filePath,d+1),h.add(a))}return{lines:g,omittedItems:j.filter(a=>!h.has(a)),omitted:f.omitted}}function C(a,b,c=300){let d,e=m("content"in a?a.content:a.snippets[0]||"").replace(/\s+/gu," ").trim();return d=e.length>c?e.length>4e3?u(e,c):(()=>{let a=Math.floor(.7*c),b=c-a-1;return`${e.slice(0,a)}…${e.slice(-b)}`})():e,`- [${b}] ${l(a)}${d?`|${d}`:""}`}function D(a,b,c,d=!1,e,g=!1,h=!1){let k=g&&e?a.textEvidence.filter(a=>e(a)>0):[],n=[...new Set((k.length>0?k:a.textEvidence).flatMap(a=>o(a.content).split("\n").filter(Boolean)))],s=d?[]:n.filter(a=>p.test(a)).map(r),t=n.filter(a=>!p.test(a)),v=d?[...t].sort((a,b)=>(0,i.O)(b)-(0,i.O)(a)).slice(0,24):t,w=b?Math.floor(.6*b):void 0,x=s,y=0;if(w&&x.join("\n").length>w){let a=(0,i.C)(x,a=>(0,i.O)(a),{maxChars:w},"t0-fact-lines");y=a.dropped.length,x=a.selected}let z=x.length?`【关键事实层——来自绑定材料的数值、参数与标准编号,正文必须原样落位,不得改写、不得编造层内没有的数值】
|
|
71
|
-
${x.map(a=>`- ${a}`).join("\n")}${y>0?`
|
|
72
|
-
(事实行总量超出预算上限,已按重要性保留前 ${x.length} 行)`:""}`:"",E=b?b-z.length:void 0;void 0!==E&&void 0!==b&&E<Math.min(2e3,b)&&(E=Math.min(2e3,b));let F=g&&e?a.resources.filter(b=>b.snippets.some(c=>e({chapterId:a.chapterId,filePath:b.filePath,score:b.score,content:c})>0)):a.resources,G=B(F.length>0?F:a.resources,E?Math.floor(.35*E):void 0,(a,b)=>[`- 资料:${l(a,b)}`,` 资料类型:${a.kind}`,` 正文用途:${a.contentUse}`,a.relatedFacts.length?` 可用事实方向:${a.relatedFacts.join("、")}`:"",a.snippets.length?` 可用内容:${a.snippets.map(m).filter(Boolean).join(" / ")}`:""].filter(Boolean).join("\n"),a=>a.score),H=g&&e?a.textEvidence.filter(a=>e(a)>0):a.textEvidence,I=g&&0===H.length?a.textEvidence:H,J=I.filter(a=>q(a)),K=I.filter(a=>!q(a)),L=E?Math.floor(.65*E):void 0,M="",N=L;if(v.length>0){let a=(0,i.C)(v,a=>(0,i.O)(a),{maxChars:L},"t0-demoted-fact-lines");a.selected.length>0&&(M=`工艺参数与规范事实行(按相关度排序):
|
|
73
|
-
${a.selected.map(a=>`- ${a}`).join("\n")}${a.dropped.length>0?`
|
|
74
|
-
(另有 ${a.dropped.length} 行因预算省略,完整事实仍参与检索与质量校验)`:""}`,void 0!==N&&(N=Math.max(0,N-M.length)))}let O="",P=[];if(J.length>0){let a=B(J,void 0!==N?Math.min(4e3,N):4e3,(a,b)=>{let c=m(a.content),d=c.length>3e3?u(c,3e3):c;return`${l(a,b)}
|
|
75
|
-
类型:${a.processingType||"table"}
|
|
76
|
-
章节/片段:${a.sectionTitle?.replace(f.tK,"")||"资料片段"}
|
|
77
|
-
内容(清单/表格行数据:条目名、特征、工程量与单位必须逐项照抄原值,不得改写、不得编造):
|
|
78
|
-
${d}`},a=>A(a,c)+(e?e(a):0),0);P=a.omittedItems,a.lines.length&&(O=`表格/清单原文:
|
|
79
|
-
${a.lines.join("\n\n---\n\n")}`,void 0!==N&&(N=Math.max(0,N-O.length)))}let Q=B(K,N,(a,b)=>{let c=m(a.content),d=c.length>1200?u(c,1200):c;return`${l(a,b)}
|
|
80
|
-
类型:${a.processingType||"reference"}
|
|
81
|
-
章节/片段:${a.sectionTitle?.replace(f.tK,"")||"资料片段"}
|
|
82
|
-
内容:
|
|
83
|
-
${d}`},a=>A(a,c)+(e?e(a):0)),R=[];G.lines.length&&R.push(`结构化资料:
|
|
84
|
-
${G.lines.join("\n")}`),M&&R.push(M),O&&R.push(O),Q.lines.length&&R.push(`文本/附件片段:
|
|
85
|
-
${Q.lines.join("\n\n---\n\n")}`);let S=R.join("\n\n"),T=[...G.omittedItems,...P,...Q.omittedItems],U=(0,j.z)().evidenceCatalogMaxLines||40,V=Number.isFinite(U)&&U>0?Math.floor(U):40,W=h?[]:T,X=W.slice(0,V).map((a,b)=>C(a,b)),Y=W.slice(V),Z=[],$=0;for(let[a,b]of Y.entries()){let c=l(b,a);if($+c.length+1>1200)break;Z.push(c),$+=c.length+1}let _=Y.length>0?`- 另有 ${Y.length} 条未注入(完整片段仍参与后续检索与质量校验)${Z.length>0?`;其中来源可列部分:${Z.join("、")}${Z.length<Y.length?` 等 ${Y.length} 条`:""}`:""}`:"",aa=X.length?`【证据目录——未全文注入的片段压缩摘要(按重要性保留前 ${X.length} 条${T.length>X.length?`,另有 ${T.length-X.length} 条未注入`:""};正文可引用摘要内事实,不得编造摘要外的细节;完整片段仍参与后续检索与质量校验)】
|
|
86
|
-
${[...X,_].filter(Boolean).join("\n")}`:"",ab=T.reduce((a,b)=>a+("content"in b?b.content.length:(b.snippets[0]||"").length),0),ac={t0Chars:z.length,t1Chars:S.length,t2Lines:X.length,t2Chars:aa.length,omittedChars:ab,omittedCount:T.length};return{t0Text:z,t1Text:S,t2Text:aa,omittedNote:ac.omittedCount>0?`提示:完整证据池仍保留 ${a.textEvidence.length} 条文本片段、${a.resources.length} 个结构化材料;本次已注入关键事实层 ${ac.t0Chars} 字(数值参数全量)与高相关片段 ${ac.t1Chars} 字,另有 ${ac.omittedCount} 条片段(${ac.omittedChars} 字)仅以目录索引呈现,将在章节/小节相关检索和质量校验中继续参与。`:"",stats:ac}}function E(a,b={}){let c=D(a,Number.isFinite(b.maxChars)&&b.maxChars>0?Math.ceil(b.maxChars):void 0,b.requiredFacts||[],!!b.skipT0,b.rankBoost,!!b.onlyRankBoosted,!!b.skipT2Catalog);if(b.diagnostics){let a=b.diagnostics.evidence;a.t0Chars+=c.stats.t0Chars,a.t1Chars+=c.stats.t1Chars,a.t2Lines+=c.stats.t2Lines,a.omittedChars+=c.stats.omittedChars}return[a.summary,c.t0Text,c.t1Text,c.t2Text,c.omittedNote].filter(Boolean).join("\n\n")}function F(a,b,c){let d=Number.isFinite(c)&&c>0?Math.floor(c):8e3,e=D(a,Math.floor(.5*d),b,!1),f=Math.max(1500,d-e.t0Text.length),g=B(a.textEvidence,f,(a,b)=>{let c=m(a.content),d=c.length>300?`${c.slice(0,300)}…`:c;return`- [${b}] ${l(a)}|${d}`},a=>A(a,b)),h=g.lines.length?`【章级证据摘要池——全章证据要点概览(正文事实必须以关键事实层与绑定材料为准,摘要仅供定位材料方向)】
|
|
87
|
-
${g.lines.join("\n")}`:"",i=g.omittedItems.slice(0,40).map((a,b)=>C(a,b,60)),j=i.length?`【证据目录——未进摘要池的片段索引(正文写作不使用目录内容;完整片段仍参与后续检索与质量校验)】
|
|
88
|
-
${i.join("\n")}`:"";return[e.t0Text,h,j].filter(Boolean).join("\n\n")}},70963:(a,b,c)=>{c.d(b,{C:()=>u,i:()=>t});var d=c(73024),e=c(76760),f=c(95734),g=c(22157),h=c(80439),i=c(40299),j=c(80572);function k(a){return a.map(a=>`${a.filePath}
|
|
89
|
-
${a.sectionTitle||""}
|
|
90
|
-
${a.content}`).join("\n")}let l={scope:{title:"项目基本信息、工程范围、主要工程内容",pattern:/项目名称|工程名称|招标范围|施工范围|建设内容|建设规模|建筑面积|工程概况|清单|图纸/u,guidance:"重点填充 works、requirements。必须识别项目名称、建设地点、建设规模、招标范围、工程内容;有来源才写。"},methods:{title:"关键施工方法与专业工序",pattern:/施工方法|施工工艺|工序|流程|专项|装饰|装修|加固|电气|给排水|消防|智能化|暖通|屋面|外墙/u,guidance:"重点填充 methods,并关联 applicableWorks。步骤必须来自资料或由资料中的专业工程内容直接归纳。"},resources:{title:"材料、设备、劳动力、工程量资源",pattern:/材料|设备|机械|劳动力|工程量|清单|规格|型号|数量|单位|暂估|主材/u,guidance:"重点填充 resources。材料设备和工程量能确认多少写多少,数量和单位不得编造。"},scheduleStandards:{title:"工期节点、质量目标、标准规范、验收要求",pattern:/工期|日历天|开工|竣工|节点|进度|质量|验收|标准|规范|合格|创优/u,guidance:"重点填充 schedule、standards。必须优先抽取总工期、质量标准、验收标准和关键节点。"},risksSite:{title:"现场条件、重难点、风险与约束",pattern:/现场|周边|交通|既有|营业|拆除|保护|安全|文明|扬尘|噪声|风险|难点|危大/u,guidance:"重点填充 risks、siteConditions。风险必须给出资料支撑的原因和控制方向。"},requirementsAddendum:{title:"招标管理要求、补疑澄清与修正",pattern:/招标|投标|合同|要求|承包|分包|保修|补疑|澄清|答疑|修正|变更|编制/u,guidance:"重点填充 requirements、addendumChanges。补疑澄清必须写 original、revised、sourceFile。评标办法、评分细则、分值构成、评审内容项属商务程序性内容,对施工组织设计编制无用,一律不抽取、不进图谱。无法确认原文时不要编造。"}};function m(a,b,c=8){return[...new Set(a.filter(a=>b.test(a.content)||b.test(a.sectionTitle||"")||b.test(a.filePath)).map(a=>a.filePath))].slice(0,c)}function n(a){return a.works.length+a.methods.length+a.resources.length+a.schedule.length+a.standards.length+a.risks.length+a.requirements.length+a.siteConditions.length+a.addendumChanges.length}function o(a){let b=e.join(process.env.HOME||process.cwd(),".customize-agent","cache","document-workflow",(0,g.c6)(a||"default"));return d.mkdirSync(b,{recursive:!0}),b}function p(a,b,c){let f=o(a);f&&c&&d.writeFileSync(e.join(f,`project-graph-${b}.json`),JSON.stringify(c,null,2))}function q(a,b){if(!a)return{ok:!1,reasons:["LLM 未返回可解析的 ProjectGraph JSON"]};let c=[],d=n(a),e=k(b);0===d&&c.push("ProjectGraph 全部节点为空"),/招标范围|施工范围|建设内容|工程名称|项目名称|工程量|清单|图纸/u.test(e)&&0===a.works.length&&c.push("缺少工程范围/主要工程内容 works"),/工期|日历天|进度/u.test(e)&&0===a.schedule.length&&c.push("资料包含工期信息但 schedule 为空"),/质量|验收|标准|规范/u.test(e)&&0===a.standards.length&&c.push("资料包含质量/验收/标准信息但 standards 为空"),/材料|设备|机械|劳动力|工程量|清单/u.test(e)&&0===a.resources.length&&c.push("资料包含资源或工程量信息但 resources 为空");let f=[...a.works,...a.methods,...a.resources,...a.schedule,...a.standards,...a.risks,...a.requirements,...a.siteConditions].filter(a=>(a.sourceFiles||[]).length>0).length+a.addendumChanges.filter(a=>a.sourceFile).length;return d>0&&0===f&&c.push("图谱节点缺少来源文件"),{ok:0===c.length,reasons:c}}function r(a,b=!1){let c=a.works.length+a.methods.length+a.resources.length+a.schedule.length+a.standards.length+a.risks.length+a.requirements.length+a.siteConditions.length+a.addendumChanges.length;return(0,h.X5)({type:"file_understanding",roleId:"project-graph",status:"success",message:`${b?"复用缓存:":""}${a.works.length}工程 ${a.methods.length}工法 ${a.resources.length}资源 ${a.schedule.length}节点 ${a.standards.length}标准 ${a.risks.length}风险 ${a.requirements.length}要求 ${a.siteConditions.length}条件 ${a.addendumChanges.length}修正${a.gaps.length?` ${a.gaps.length}缺口`:""}(${c}项)`,details:[...a.works.slice(0,3).map(a=>a.name),...a.resources.slice(0,3).map(a=>a.name),...a.gaps.slice(0,3)]},{subtitle:"项目图谱分析"})}function s(a){return(0,h.X5)({type:"file_understanding",roleId:"project-graph",status:"failed",message:`项目图谱分析失败:${a.slice(0,3).join(";")}`,details:a.slice(0,8)},{subtitle:"项目图谱分析"})}async function t(a){var b;if((0,g.Te)(a.signal),0===a.evidence.length)return{stage:s(["未检索到项目证据,无法生成可信 LLM 项目图谱"])};let c=(b={evidence:a.evidence,requirement:a.requirement,templateId:a.templateId,projectRoot:a.projectRoot},(0,g.c6)({version:"project-graph-v6-source-canonicalized",requirement:b.requirement||"",templateId:b.templateId||"",evidence:b.evidence.map(a=>({filePath:a.filePath,fileSig:function(a,b){if(!a)return;let c=e.isAbsolute(b)?b:e.join(a,b);try{let a=d.statSync(c);return{mtimeMs:a.mtimeMs,size:a.size}}catch{return}}(b.projectRoot,a.filePath),sectionTitle:a.sectionTitle,contentHash:(0,g.c6)({length:a.content.length,head:a.content.slice(0,8e3),tail:a.content.slice(-8e3)})})).sort((a,b)=>`${a.filePath}${a.sectionTitle}`.localeCompare(`${b.filePath}${b.sectionTitle}`))})),h=function(a,b){let c=o(a);if(c)try{let a=JSON.parse(d.readFileSync(e.join(c,`project-graph-${b}.json`),"utf8"));return a&&Array.isArray(a.works)?a:void 0}catch{return}}(a.projectRoot,c),t=h?q(h,a.evidence):void 0;if(h&&t?.ok)return{graph:h,stage:r(h,!0)};let u=[...a.evidence].sort((a,b)=>b.score-a.score),v=function(a){let b=k(a),c=(a,c)=>{let d=function(a,b){let c=a.match(b);return c?.[1]?.replace(/\s+/gu," ").trim().slice(0,500)||""}(b,c);return d?`${a}:${d}`:""};return[c("项目名称",/(?:招标项目名称|项目名称|工程名称)[::\s]*([^。;\n]{3,120})/u),c("建设地点",/(?:建设地点|项目地点|实施地点)[::\s]*([^。;\n]{3,160})/u),c("建设规模",/(?:建设规模|建筑面积|总建筑面积)[::\s]*([^。;\n]{3,120})/u),c("计划工期",/(?:计划工期|总工期|工期要求|工期总日历天数)[::\s]*([^。;\n]{2,80})/u),c("质量标准",/(?:质量标准|质量要求|质量目标)[::\s]*([^。;\n]{2,120})/u),c("招标范围",/(?:招标范围|工程承包范围|施工范围|建设内容)[::\s]*([\s\S]{20,700}?)(?=\n#{1,4}\s|\n\d+[.、]\s|质量|工期|$)/u),m(a,/补疑|澄清|答疑|修正/u).length?`补疑澄清文件:${m(a,/补疑|澄清|答疑|修正/u).join("、")}`:""].filter(Boolean)}(u),w=[];async function x(b,c=[]){let d=function(a,b,c=52e3){let d=l[b],e=[...a].sort((a,b)=>{let c=+!!d.pattern.test(`${a.filePath}${a.sectionTitle||""}${a.content}`);return!!d.pattern.test(`${b.filePath}${b.sectionTitle||""}${b.content}`)-c||b.score-a.score}),f=[],g=0;for(let a of e){let b={...a,content:a.content.replace(/\s+/gu," ").trim().slice(0,5e3)};if((!(g+b.content.length>c)||!(f.length>=8))&&(f.push(b),(g+=b.content.length)>=c||f.length>=18))break}return f}(u,b,c.length?64e3:52e3),h=await (0,f.bb)(`${(0,i.y4)('通读以下项目资料(招标文件、工程量清单、图纸设计说明、补疑文件等),\n输出一个 JSON 对象,描述你对该项目的完整理解。\n\nJSON 字段(全部为数组,无相关信息时返回空数组):\n works: [{name, scope, sourceFiles, relatedItems}]\n methods: [{name, steps, applicableWorks, sourceFiles}]\n resources: [{name, type:"material"|"equipment"|"labor", spec, quantity, unit, sourceFiles}]\n schedule: [{milestone, duration, startDate, endDate, sourceFiles}]\n standards: [{code, description, sourceFiles}]\n risks: [{risk, level:"high|medium|low", mitigation, sourceFiles}]\n requirements: [{category, detail, sourceFiles}]\n siteConditions: [{condition, impact, sourceFiles}]\n addendumChanges: [{originalPath, original, revised, sourceFile}]\n gaps: [string] 仅记录资料中确实缺失且影响施工组织设计编制的事实;证据中已出现的内容不得声称「未提供/未找到」\n\n只基于资料内容,不编造。每个条目标注来源文件。只返回 JSON。')}
|
|
91
|
-
|
|
92
|
-
当前只抽取分域:${l[b].title}。其他字段可以返回空数组,但本分域相关字段必须尽最大能力从证据中抽取。${c.length?`
|
|
93
|
-
本次定向修复原因:${c.join(";")}`:""}`,function(a,b,c){let d=l[b];return[`请抽取项目图谱分域:${d.title}`,d.guidance,"确定性线索仅用于帮助定位原文,不得作为最终图谱事实直接照抄;最终 JSON 必须由资料证据支撑。",c.length?`定位线索:
|
|
94
|
-
${c.map(a=>`- ${a}`).join("\n")}`:"",function(a){let b=a.map((a,b)=>{let c=`[${b+1}] ${a.filePath}`,d=a.sectionTitle?` / ${a.sectionTitle}`:"";return`${c}${d}
|
|
95
|
-
${a.content.replace(/\s+/gu," ").trim()}`}).join("\n\n---\n\n");return`请从以下项目资料中提取结构化理解:
|
|
96
|
-
|
|
97
|
-
${b}
|
|
98
|
-
|
|
99
|
-
返回 JSON。`}(a)].filter(Boolean).join("\n\n")}(d,b,v),{temperature:.1*!c.length,signal:a.signal,diagnostics:a.diagnostics});return(0,g.Te)(a.signal),function(a,b){if(!a)return;let c=new Set(b.map(a=>a.filePath)),d=new Map;for(let a of b){let b=e.basename(a.filePath);d.has(b)||d.set(b,a.filePath)}let f=a=>{if("string"==typeof a&&a)return c.has(a)?a:d.get(e.basename(a))},g=(a,b)=>(Array.isArray(a)?[...new Set(a.map(f).filter(a=>!!a))]:[]).slice(0,b),h=(a,b)=>"string"==typeof a?a.slice(0,b):"number"==typeof a?String(a).slice(0,b):"",i=(a,b)=>(Array.isArray(a)?a.filter(a=>"string"==typeof a&&a.length>0):[]).slice(0,b);return{works:(a.works||[]).filter(a=>"string"==typeof a.name&&"string"==typeof a.scope).map(a=>({name:h(a.name,200),scope:h(a.scope,500),sourceFiles:g(a.sourceFiles,10),relatedItems:i(a.relatedItems,20)})),methods:(a.methods||[]).filter(a=>"string"==typeof a.name).map(a=>({name:h(a.name,200),steps:i(a.steps,12),applicableWorks:i(a.applicableWorks,10),sourceFiles:g(a.sourceFiles,10)})),resources:(a.resources||[]).filter(a=>"string"==typeof a.name).map(a=>({name:h(a.name,200),type:"material"===a.type||"equipment"===a.type||"labor"===a.type?a.type:"material",spec:h(a.spec,200),quantity:h(a.quantity,50),unit:h(a.unit,20),sourceFiles:g(a.sourceFiles,5)})),schedule:(a.schedule||[]).filter(a=>"string"==typeof a.milestone).map(a=>({milestone:h(a.milestone,200),duration:h(a.duration,100),startDate:h(a.startDate,50),endDate:h(a.endDate,50),sourceFiles:g(a.sourceFiles,5)})),standards:(a.standards||[]).filter(a=>"string"==typeof a.code||"string"==typeof a.description).map(a=>({code:h(a.code,100),description:h(a.description,300),sourceFiles:g(a.sourceFiles,5)})),risks:(a.risks||[]).filter(a=>"string"==typeof a.risk).map(a=>({risk:h(a.risk,300),level:"high"===a.level||"medium"===a.level||"low"===a.level?a.level:"medium",mitigation:h(a.mitigation,500),sourceFiles:g(a.sourceFiles,5)})),requirements:(a.requirements||[]).filter(a=>"string"==typeof a.category&&"string"==typeof a.detail).map(a=>({category:h(a.category,100),detail:h(a.detail,500),sourceFiles:g(a.sourceFiles,5)})),siteConditions:(a.siteConditions||[]).filter(a=>"string"==typeof a.condition).map(a=>({condition:h(a.condition,300),impact:h(a.impact,500),sourceFiles:g(a.sourceFiles,5)})),addendumChanges:(a.addendumChanges||[]).filter(a=>"string"==typeof a.original&&"string"==typeof a.revised).map(a=>({originalPath:h(a.originalPath,300),original:h(a.original,300),revised:h(a.revised,500),sourceFile:f(a.sourceFile)||""})),gaps:i(a.gaps,20),generatedAt:Date.now()}}(h,d)}async function y(b=[]){let c=Object.keys(l),d=(await (0,g.l$)(c,async c=>{try{let a=await x(c,b);if(a&&n(a)>0)return a;w.push(`${l[c].title} 未抽取到有效节点`)}catch(b){if(a.signal?.aborted)throw b;w.push(`${l[c].title} LLM 调用失败:${b instanceof Error?b.message:String(b)}`)}},{kind:"llmRepair",targetWords:4e3,concurrency:(0,j.z)().projectGraphDomainConcurrency||2})).filter(a=>!!a);return d.length?function(a){let b={w:new Set,m:new Set,r:new Set,sc:new Set,st:new Set,ri:new Set,rq:new Set,si:new Set,a:new Set};return{works:a.flatMap(a=>a.works).filter(a=>{let c=a.name+a.scope;return!b.w.has(c)&&(b.w.add(c),!0)}),methods:a.flatMap(a=>a.methods).filter(a=>{let c=a.name;return!b.m.has(c)&&(b.m.add(c),!0)}),resources:a.flatMap(a=>a.resources).filter(a=>{let c=a.name+a.spec+a.type;return!b.r.has(c)&&(b.r.add(c),!0)}),schedule:a.flatMap(a=>a.schedule).filter(a=>{let c=a.milestone;return!b.sc.has(c)&&(b.sc.add(c),!0)}),standards:a.flatMap(a=>a.standards).filter(a=>{let c=a.code+a.description;return!b.st.has(c)&&(b.st.add(c),!0)}),risks:a.flatMap(a=>a.risks).filter(a=>{let c=a.risk;return!b.ri.has(c)&&(b.ri.add(c),!0)}),requirements:a.flatMap(a=>a.requirements).filter(a=>{let c=a.category+a.detail;return!b.rq.has(c)&&(b.rq.add(c),!0)}),siteConditions:a.flatMap(a=>a.siteConditions).filter(a=>{let c=a.condition;return!b.si.has(c)&&(b.si.add(c),!0)}),addendumChanges:a.flatMap(a=>a.addendumChanges).filter(a=>{let c=a.original+a.revised;return!b.a.has(c)&&(b.a.add(c),!0)}),gaps:[...new Set(a.flatMap(a=>a.gaps))],generatedAt:Date.now()}}(d):void 0}try{let b=await y(),d=q(b,u);if(d.ok&&b||b&&n(b)>0)return p(a.projectRoot,c,b),{graph:b,stage:r(b)};let e=await y([...d.reasons,...w]);if(e&&n(e)>0)return p(a.projectRoot,c,e),{graph:e,stage:r(e)};return{stage:s([...d.reasons,...w])}}catch(b){if(a.signal?.aborted)throw b;return console.error("[project-graph] failed:",b),{stage:s([b instanceof Error?b.message:String(b),...w])}}}function u(a){let b=["## 项目资料图谱分析结果",""];for(let c of a.works)2===b.length&&b.push("### 主要工程内容"),b.push(`- **${c.name}**:${c.scope}`);for(let c of(a.works.length&&b.push(""),a.methods))b.includes("### 关键施工方法与工艺")||b.push("### 关键施工方法与工艺"),b.push(`- **${c.name}**:${c.steps.filter(Boolean).join(" → ")}`);for(let c of(a.methods.length&&b.push(""),a.resources)){b.includes("### 资源需求")||b.push("### 资源需求");let a={material:"材料",equipment:"设备",labor:"劳动力"}[c.type]||"资源";b.push(`- [${a}] ${c.name}${c.spec?`(${c.spec})`:""}${c.quantity?` ${c.quantity}${c.unit}`:""}`)}for(let c of(a.resources.length&&b.push(""),a.schedule))b.includes("### 工期与关键节点")||b.push("### 工期与关键节点"),b.push(`- ${c.milestone}:${c.duration}(${c.startDate} ~ ${c.endDate})`);for(let c of(a.schedule.length&&b.push(""),a.standards))b.includes("### 技术标准与验收要求")||b.push("### 技术标准与验收要求"),b.push(`- **${c.code}**:${c.description}`);for(let c of(a.standards.length&&b.push(""),a.risks))b.includes("### 重点难点与风险")||b.push("### 重点难点与风险"),b.push(`- **[${c.level}] ${c.risk}**:${c.mitigation}`);for(let c of(a.risks.length&&b.push(""),a.requirements))b.includes("### 特定要求")||b.push("### 特定要求"),b.push(`- [${c.category}] ${c.detail}`);for(let c of(a.requirements.length&&b.push(""),a.siteConditions))b.includes("### 现场条件与约束")||b.push("### 现场条件与约束"),b.push(`- ${c.condition}:${c.impact}`);for(let c of(a.siteConditions.length&&b.push(""),a.addendumChanges))b.includes("### 补疑修正")||b.push("### 补疑修正"),b.push(`- "${c.original}" → "${c.revised}"`);for(let c of(a.addendumChanges.length&&b.push(""),a.gaps))b.includes("### 资料缺口")||b.push("### 资料缺口"),b.push(`- ${c}`);return a.gaps.length&&b.push(""),b.join("\n")}},71001:(a,b,c)=>{c.d(b,{EN:()=>m,Kg:()=>F,My:()=>B,SP:()=>D,av:()=>n,c_:()=>y,detectPromptRuleConflicts:()=>G,eB:()=>t,el:()=>z,k2:()=>C,kw:()=>q,tQ:()=>p});var d=c(78217),e=c(70933),f=c(95734),g=c(70208),h=c(40299),i=c(54185),j=c(38115),k=c(31129),l=c(36366);function m(a){return a.replace(/(.*?)(.{2,4})\2$/u,"$1$2")}function n(a,b){let c=`${a} ${b}`,d=[/项目主要施工内容/u.test(c)?"每个施工工作包(#### 工作包名)必须逐包覆盖三方面要素:①作业对象与工程量(本项目部位、规模、系统边界,工程量数值与工程量清单汇总值一致)、②工序顺序(先后清晰,至少 1 处不少于 4 个环节的工序顺序表达)、③施工方法(工具机具、工艺参数、验收闭环);只写流程不写概况、或只列方法不写流程的工作包会被退回重写;每个专业工程单独一个小节,不得把所有专业工程合并;不得以表格代替叙述(正文表格须来自系统表格计划,不得自设),严禁出现“分部小计/本页小计/合计/按实/暂估/综合单价/措施项目费/规费/税金”等清单计价表内部口径词(“措施项目”作为专业工程类别名称可用,不得与“清单/计价/费”连用)。":"",/劳动力/u.test(a)&&/资源配置/u.test(b)?"本节是劳动力章内的资源配置计划:只写劳动力资源,不得写机械设备、材料物资(由物资/机械章承担)——必须展开①工种结构与人数(钢筋工/木工/瓦工/普工等各工种人数,来自绑定资料,无资料时按本项目工程量与总工期推导并写明推导依据)②分阶段劳动力投入计划(施工准备/主体/收尾各阶段进退场人数与班组数,可用表格)③作业面/施工段配员与班组划分④劳动力来源、组织与工资保障措施。每个数值必须可溯源(资料事实或推导说明),禁止只写“合理配置劳动力”“满足施工需要”等空泛表述。":"",/工程特点|施工条件|重难点|难点/u.test(c)?"必须写出本工程的重难点分析:每条重难点按“名称+形成原因(归因)+影响范围+专项措施+量化控制目标(数值+单位,如控制率%/偏差mm/频次每日1次)”展开,可附「重难点识别表」(表头:重难点|形成原因|影响范围|专项措施|责任岗位,数据行至少3条,每条必须写形成原因);禁止只写“本项目存在XX难点”而不写原因与对策。":"",/概况|工程|项目/u.test(c)?"必须落入项目名称、范围、地点、规模、工期、质量目标等资料事实;说明编制边界。":"",/部署|总体|组织/u.test(c)?"必须说明施工组织逻辑、施工段/专业接口、资源进场和管理闭环。":"",/进度|工期/u.test(c)?"必须围绕总工期、关键线路、资源保障、穿插施工和纠偏机制展开。":"",/质量/u.test(c)?"必须覆盖材料验收复验、过程检查、隐蔽验收、整改复验和质量资料归档。":"",/安全|文明|风险|危大/u.test(c)?"必须覆盖风险识别、人员设备、临电消防、现场文明、检查整改和应急响应。":"",/资源|材料|设备|劳动力/u.test(c)?"必须说明资源配置依据、进场验收、保管调配,并与工期和质量目标一致。":"",/劳务|农民工|用工|工资|工伤/u.test(c)?"劳务用工/工资类内容必须写入政策合规硬项:按规定为全体作业人员办理工伤保险(保险费用由企业承担并计入投标报价,进场前完成参保并留存缴费凭证);农民工工资实行专用账户与总包代发、按月足额支付,写清实名制用工与进场登记。不得只写“依法用工”“按时发放工资”等无落实细节的表述。":"",/施工|工艺|技术|方案/u.test(c)?"必须写清施工准备、工艺流程、关键控制点、验收要求和资料依据;每个分项工程方案必须落位至少 4 个工艺参数(mm、MPa、间距、偏差、坡度、养护天数、试验压力、搭接长度等),参数来自绑定资料或行业通用规范值,不得编造;纯设备配置型内容必须写型号、规格、容量、数量参数。工序顺序表达:工艺流程必须有明确的工序顺序表达(系统已为各小节指定表达方式;相邻小节不得同句式开头,同一句式全文不得反复使用,禁止以固定句模复读),每个含方法叙述的三级小节方法段正文至少 1 处不少于 4 个环节的工序顺序表达,不得只在单独的流程行出现。":"",/流程|顺序|工序|穿插|闭环|整改|演练|转运|三检|隐蔽|排查/u.test(c)?"流程/顺序型叙述必须有明确的工序顺序表达(相邻小节不得同句式开头,同一句式全文不得反复使用,禁止以固定句模复读),每条序列不少于 3 个环节,把纯文字流程描述改写成分步清晰、衔接自然的表达,正文中至少 2 处工序顺序表达。":""].filter(Boolean),e=d.find(a=>a.includes("工序顺序表达"));return["【小节专业任务卡】",`任务对象:${b}`,...d.length?d:["必须结合本项目资料明确事实说明对象范围、实施方法、控制要点、验收要求和资料闭环,避免泛化套话。"],...e?["工序顺序表达是硬性内容要求:正文成稿必须实际出现工序顺序表达(系统已为各小节指定表达方式;相邻小节不得同句式开头,同一句式全文不得反复使用,禁止以固定句模复读),评审将核验,未达标会被退回重写。"]:[],"禁止套话:不得使用“本小节围绕……展开”“结合绑定项目资料、施工组织安排和现场实施条件”“交底覆盖率按100%控制”等模板化开篇;不得只写“加强管理、严格把控、确保质量”式口号;每个三级小节必须写与本节标题对应的专属内容,不得与其他小节内容相同或近似;每个句子必须携带至少一个信息载体(数值、部位、材料、工序、岗位、时限其一),无信息载体的空泛句不得出现(如“加强过程管控”应改为“施工员每日检查不少于2次,发现问题当日整改销项”)。"].join("\n")}function o(a){let b=(0,g.nz)(a).replace(/\s+/gu,"");return!!(!b||/^(?:目录|章节|大纲|要求|说明|注意|输出|格式|示例|例如|写法|占位|提示)$/u.test(b))||/^(?:判断|判定|识别|确认)?是否(?:涉及|涉|需要|适用)|^(?:如|若|如果)(?:涉及|不涉及|适用|不适用)/u.test(b)}function p(a,b){let c=(0,g.nz)(a),d=(0,g.nz)(b);if(c.length<4||c.length>60||c===d||o(c)||/^(?:目标与范围|资料依据|实施内容|质量控制|概述|总体要求)$/u.test(c)||(0,i.cq)(c)||/^(?:雨季|冬季|高温|台风|大风等特殊气候|雨季、冬季、高温、台风、大风等特殊气候)$/u.test(c)||/如需|应由|大模型|提示词|上下文|动态规划|OUTLINE|章节生成|按照.*明确指定|需求和资料|JSON|小节标题/u.test(c)||/(.)\1/u.test(c)||(0,j.qL)(c)||(0,g.Fe)(c))return!0;let e=d.match(/[\p{L}\p{N}]{2,6}$/u)?.[0]||"";return!(!(e.length>=2&&/^.{2,8}\p{L}$/u.test(c)&&c.endsWith(e.slice(-1)))||c.includes(e))}function q(a,b){let c=(0,g.nz)(a).replace(/[\s()()::.。;;,,、-]/gu,""),d=(0,g.nz)(b).replace(/[\s()()::.。;;,,、-]/gu,"");return!!c&&!!d&&(c===d||c.includes(d)||d.includes(c))}function r(a){return/判断是否涉及|若涉及|若不涉及|如果涉及|如果不涉及|不涉及.*如实说明|根据项目所在地气候特征|根据计划施工周期|根据.*施工周期|按需|视情况|可设置|专项小节/u.test(a)}function s(a,b=""){let c=r(b);return Array.from(new Set(a.map(g.nz).filter(a=>!(a.length<2||a.length>30||o(a)||/必须|强制|排序|设置|输出|独立|之后|之前|小节|其他必要/u.test(a)||c&&/^(?:雨季|冬季|高温|台风|大风等特殊气候|雨季、冬季、高温、台风、大风等特殊气候)$/u.test(a)))))}function t(a){let b=a.replace(/\\n/gu,"\n").replace(/\r/gu,"");if(!/(?:除文字表述外)?可附下列图表|图表及格式要求附后|附下列图表|附表.{0,12}附后/u.test(b))return{titles:[],attachedAtEnd:!1};let c=[],d=new Set;for(let a of b.matchAll(/附表\s*([一二三四五六七八九十\d]{1,3})\s*[::]?\s*([^\n。;;::]{2,40}(?:表|图))/gu)){let b=(a[1]||"").trim(),e=(a[2]||"").replace(/\s+/gu," ").replace(/([\u3400-\u9fff\u3000-\u303f\uff00-\uffef])[ \u3000]+(?=[\u3400-\u9fff\u3000-\u303f\uff00-\uffef])/gu,"$1").trim();b&&e&&!(e.length<3)&&(d.has(b)||(d.add(b),c.push(`附表${b} ${e}`)))}return{titles:c,attachedAtEnd:c.length>=2}}function u(a){return a.split(/[、,,//]/u).map(a=>a.trim().replace(/["“”'‘’《》<>]/gu,"")).filter(a=>a.length>=2&&a.length<=24&&!/[。;;::]/u.test(a))}function v(a){let b=new Set;for(let c of[/(?:关键词|核心要点|必含关键词|必须包含的关键词)[::]\s*([^。;;\n]+)/gu,/(?:必须|应当|需要|全文必须)包含(?:以下|如下)?(?:关键词|核心词|术语)[::]\s*([^。;;\n]+)/gu])for(let d of a.matchAll(c))for(let a of u(d[1]||""))/表格|章节|小节|正文|目录|封面/u.test(a)||b.add(a);return[...b].slice(0,24)}function w(a){let b=new Set;for(let c of[/(?:禁用词|禁止词|不得使用词|禁用表达|禁止表达)[::]\s*([^。;;\n]+)/gu,/(?:禁止|不得|严禁|杜绝)出现(?:以下|如下)?(?:词语|用词|表达|话术)[::]\s*([^。;;\n]+)/gu])for(let d of a.matchAll(c))for(let a of u(d[1]||""))b.add(a);return[...b].slice(0,40)}function x(a,b){return a.split(/[。;;\n]/u).map(a=>a.trim()).filter(a=>a.length>=4&&b.test(a)).slice(0,24)}function y(a){let b=a.attributedPrompts||[],c=[a.promptTexts,a.requirement||""].filter(Boolean).join("\n\n").replace(/\\n/gu,"\n"),e=function(a){let b=a.replace(/\\n/gu,"\n"),c=new Set;for(let a of(/全文必须输出[::]\s*([^。;;\n]+)/u.exec(b)?.[1]||/必须输出(?:的)?表格[::]\s*([^。;;\n]+)/u.exec(b)?.[1]||"").split(/[、,,]/u)){let b=/([\p{Script=Han}A-Za-z0-9()()]{2,30}表)$/u.exec(a.trim())?.[1];b&&b.length>=4&&b.length<=30&&c.add(b)}/项目基本信息表/u.test(b)&&c.add("项目基本信息表");let d=["知识库","提示词","建议补充","资料库","OCR","后台话术","后台流程","后台数据","后台资料","后台溯源","绑定片段"];/杜绝(?:套话|空话)|禁止(?:套话|空话)|不得(?:套话|空话)|严禁(?:套话|空话)/u.test(b)&&d.push("高度重视","重中之重"),/技术标(?:正文)?(?:不得|禁止|严禁).*(?:商务|报价|单价|税率|利润|造价)/u.test(b)&&d.push("报价明细表");let e=A(b,"封面"),f=A(b,"目录");return{coverPolicy:e,tocPolicy:f,forbidCover:"forbidden"===e,forbidToc:"forbidden"===f,forbiddenTerms:[...new Set(d)],preferredTerms:[{from:"高度重视",to:"严格落实"},{from:"重中之重",to:"关键控制事项"}],requiredTables:[...c],requiredKeywords:v(b),forbiddenPatterns:w(b)}}(c),f=[...new Set([...e.requiredTables,...function(a){let b=new Set;for(let c of[/(?:必须|应当|需要|全文必须|至少)输出(?:的)?表格[::]\s*([^。;;\n]+)/gu,/(?:必须|应当|需要|全文必须|至少)包含(?:的)?表格[::]\s*([^。;;\n]+)/gu,/(?:表格清单|表格要求)[::]\s*([^。;;\n]+)/gu])for(let d of a.matchAll(c))for(let a of(d[1]||"").split(/[、,,//及和与]/u)){let c=/([\p{Script=Han}A-Za-z0-9()()《》<>]{2,40}表)/u.exec(a.trim())?.[1];c&&b.add(c.replace(/[<>《》]/gu,""))}for(let c of a.matchAll(/([\p{Script=Han}A-Za-z0-9()()]{2,40}表)(?:必须|应当|需要|不得缺失|不可缺失)/gu))b.add(c[1]);return/项目基本信息表/u.test(a)&&b.add("项目基本信息表"),[...b]}(c)])],g=t(c),h=v(c),i=w(c),j=function(a){let b=[],c=(/<OUTLINE>([\s\S]*?)<\/OUTLINE>/u.exec(a)?.[1]||"").split(/\r?\n/u).map(a=>a.trim()).filter(Boolean),d=c.some(a=>/^\s*\d+\s*[.、.]\s*(?!\s*\d)/u.test(a));for(let a of c){if(d&&/^\s*\d+\s*[.、.]\s*\d+/u.test(a))continue;let c=a.replace(/^\s*(?:\d+(?:[.、.]\d+)*[.、.]?|[-*])\s*/u,"").trim();c.length>=2&&c.length<=80&&!o(c)&&b.push(c)}return[...new Set(b)]}(c),k=["知识库","提示词","建议补充","资料库","OCR","后台话术","后台流程","后台数据","后台资料","后台溯源","绑定片段"],l=/技术标(?:正文)?(?:不得|禁止|严禁).*(?:商务|报价|单价|税率|利润|造价)/u.test(c)?["报价明细表"]:[],m=[],n=function(a){let b=(0,d.py)(a);if(b.targetChars&&b.targetChars>0)return b.targetChars;let c=/(?:不少于|至少|最低|必须生成不少于)\s*(\d+(?:\.\d+)?)\s*(万)?\s*字/u.exec(a);if(!c)return;let e=Number(c[1]);if(Number.isFinite(e)&&!(e<=0))return Math.floor(e*(c[2]?1e4:1))}(c),p=(a.template?.chapters||[]).map(a=>({chapterTitle:a.title,mustInclude:x(c,RegExp(`${a.title.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&")}|${a.title.slice(0,6).replace(/[.*+?^${}()|[\]\\]/gu,"\\$&")}`,"u")).slice(0,8),mustNotInclude:x(c,/禁止|不得|严禁|杜绝/u).filter(b=>b.includes(a.title)).slice(0,8)})).filter(a=>a.mustInclude.length>0||a.mustNotInclude.length>0),q=(a.rolePrompts||[]).map(a=>({roleId:a.roleId,focusAreas:x(a.content,/重点|关注|围绕|响应|体系|措施|质量|安全|工期|资源/u).slice(0,8),mustDo:x(a.content,/必须|应当|需要|确保|严格/u).slice(0,10),mustNotDo:x(a.content,/禁止|不得|严禁|杜绝/u).slice(0,10)})).filter(a=>a.focusAreas.length>0||a.mustDo.length>0||a.mustNotDo.length>0),r=[e.coverPolicy&&"unspecified"!==e.coverPolicy?`已识别封面规则:${"required"===e.coverPolicy?"要求生成":"禁止生成"}`:"",e.tocPolicy&&"unspecified"!==e.tocPolicy?`已识别目录规则:${"required"===e.tocPolicy?"要求生成":"禁止生成"}`:"",j.length?`已识别一级章节固定规则 ${j.length} 条`:"",m.length?`已识别禁用主体表达:${m.join("、")}`:"",e.forbiddenTerms.length?`已识别禁用词 ${e.forbiddenTerms.length} 个`:"",f.length?`已识别必需表格:${f.join("、")}`:"",g.titles.length?`已识别招标附表清单(文末附列):${g.titles.join("、")}`:"",h.length?`已识别必含关键词:${h.join("、")}`:"",i.length?`已识别禁止出现内容:${i.join("、")}`:"",n?`已识别目标字数要求:${n} 字`:"",q.length?`已抽取角色执行规则 ${q.length} 组`:""].filter(Boolean),s=[],u={},y=(a,c,d,e)=>{let f=function(a,b,c){for(let d of a)if(d.content.includes(b))return{promptId:d.promptId,roleId:d.roleId,pattern:c};return{promptId:"system:generation-control",roleId:"generation-control",pattern:c}}(b,d,e);u[a]||(u[a]=[]),u[a].length<24&&u[a].push({...f,matchedText:d}),s.length<60&&s.push({rule:c,source:f,matchedText:d})};for(let a of(e.coverPolicy&&"unspecified"!==e.coverPolicy&&y("coverPolicy",`已识别封面规则:${e.coverPolicy}`,"封面",/封面|cover/u.source),e.tocPolicy&&"unspecified"!==e.tocPolicy&&y("tocPolicy",`已识别目录规则:${e.tocPolicy}`,"目录",/目录|toc/u.source),f))y("requiredTables",`必需表格:${a}`,a,/全文必须输出|必须输出表格|项目基本信息表/u.source);for(let a of h)y("requiredKeywords",`必含关键词:${a}`,a,/必须包含|必须含|应包含|需要包含/u.source);for(let a of i)y("forbiddenPatterns",`禁止内容:${a}`,a,/禁止|不得|严禁|杜绝/u.source);for(let a of j)y("exactHeadings",`固定章节:${a}`,a,/第[一二三四五六七八九十百千\d]+章/u.source);return n&&y("minWords",`最低字数:${n}`,String(n),/\d{3,}\s*字/u.source),{...e,requiredTables:f,requiredKeywords:h,forbiddenPatterns:i,appendixTableTitles:g.titles.length>0?g.titles:void 0,appendixAttachedAtEnd:g.attachedAtEnd||void 0,sourceHash:function(a){let b=0x811c9dc5;for(let c=0;c<a.length;c+=1)b^=a.charCodeAt(c),b=Math.imul(b,0x1000193);return(b>>>0).toString(16)}(c),exactHeadings:j,forbidExtraHeadings:/不得合并|不得删除|不得改名|不得新增|严格按.*章节名称|一级章节.*不得/u.test(c)||j.length>0,requiredSubjects:/我公司/u.test(c)?["我公司","项目部"]:[],forbiddenSubjects:m,backendTerms:k,commercialTerms:l,forbiddenTerms:[...new Set([...e.forbiddenTerms,...k,...l,...m])],forbidFabrication:/不得编造|严禁编造|不得擅自|资料未明确|系统暂未|事实真实性/u.test(c),requireEvidenceForQuantities:/量化|参数|数值|具体数据|具体参数|工程实体参数|资料中明确|不得空泛|不能空泛|泛泛而谈/u.test(c),preferProjectFacts:/事实优先|项目事实|真实性高于/u.test(c),minWords:n,minChars:n,chapterRules:p,roleRules:q,executionSummary:r,ruleSources:Object.keys(u).length>0?u:void 0,extractionTrace:s.length>0?s:void 0}}function z(a){let b=[`运行时规则版本:${a.sourceHash}`,"required"===a.coverPolicy?"用户要求输出封面时必须保留封面;未要求时不得由系统擅自决定。":"","required"===a.tocPolicy?"用户要求输出目录时必须保留目录,并确保目录只来自最终合法正文标题。":"",a.forbidCover?"用户明确禁止输出封面。":"",a.forbidToc?"用户明确禁止输出目录、目录说明或导航页。":"",a.exactHeadings.length?`一级章节必须严格使用:${a.exactHeadings.join(";")}`:"",a.forbidExtraHeadings?"不得新增、删除、合并或改名一级章节。":"",a.requiredSubjects.length?`正文主体优先使用:${a.requiredSubjects.join("、")}`:"",a.forbiddenSubjects.length?`禁止主体表达:${a.forbiddenSubjects.join("、")}`:"",a.forbidFabrication?"不得编造系统暂未从知识库确认的项目事实、工程实体参数、人名、联系方式或品牌;应通过扩大检索、事实补抽或落位修复解决。":"",a.requireEvidenceForQuantities?"涉及数量、工期、质量标准目标、规格型号等项目专属参数时必须以绑定资料中的明确事实为准;通用标准规范编号与法规名称可依据现行有效版本直接引用。":"",a.commercialTerms.length?`禁止输出商务敏感内容:${a.commercialTerms.join("、")}`:"",a.backendTerms.length?`禁止输出系统内部话术:${a.backendTerms.join("、")}`:"",a.requiredTables.length?`必须输出以下正式 Markdown 表格:${a.requiredTables.join("、")}。表格必须包含表名、表头、分隔线和数据行。`:"",a.requiredKeywords?.length?`正文必须覆盖以下关键词或要点:${a.requiredKeywords.join("、")}。`:"",a.forbiddenPatterns?.length?`正文禁止出现以下内容:${a.forbiddenPatterns.join("、")}。`:""].filter(Boolean);return`以下规则由系统运行时从用户绑定指令中自动抽取,不作为用户可编辑内容。生成、检查和修复必须共同遵守:
|
|
100
|
-
${b.map((a,b)=>`${b+1}. ${a}`).join("\n")}`}function A(a,b){let c=RegExp(`(?:生成|包含|输出|需要|保留|设置|编制|制作)[^。;;\\n]{0,12}${b}|${b}[^。;;\\n]{0,12}(?:必须|应当|需要|保留|生成|输出|包含)`,"u").test(a);return RegExp(`(?:不要|不需要|不允许|不得|禁止|严禁|不输出|不生成|无需)[^。;;\\n]{0,12}${b}|${b}[^。;;\\n]{0,12}(?:不要|不需要|不允许|不得|禁止|严禁|不输出|不生成|无需)`,"u").test(a)?"forbidden":c?"required":"unspecified"}function B(a,b){let c=a.replace(/\\n/gu,"\n"),d=new Map,e=[...c.matchAll(/第([一二两三四五六七八九十\d]+)章[^\n。;;]{0,80}(?:强制|必须|挂靠|小节|排序|最先|之后|之前)/gu)];for(let a of e){let b=function(a){let b={零:0,一:1,二:2,两:2,三:3,四:4,五:5,六:6,七:7,八:8,九:9};if(/^\d+$/u.test(a))return Number(a);if(void 0!==b[a])return b[a];if("十"===a)return 10;let c=/^(?:(一|二|两|三|四|五|六|七|八|九)?)十(?:(一|二|两|三|四|五|六|七|八|九))?$/u.exec(a);if(c)return 10*(c[1]?b[c[1]]:1)+(c[2]?b[c[2]]:0)}(a[1]);if(!b)continue;let f=Math.max(0,a.index||0),g=e.find(a=>(a.index||0)>f)?.index,h=c.slice(f,Math.min(c.length,g??f+1400));if(r(h)&&!/(强制小节|必须小节|以下小节设置和排序|必须设置独立的|必须包含独立的)/u.test(h))continue;let i=function(a){let b=/(?:以下小节设置和排序|强制小节|必须小节)[::]\s*([\s\S]*?)(?:\n\s*#{2,6}\s|\n\s*第[一二两三四五六七八九十\d]+章|$)/u.exec(a)?.[1];if(b){let c=s([...b.matchAll(/(?:^|\n)\s*\d+[..、]\s*([^——\-—::。;;\n]{2,30})(?:[——\-—::]|,|,|。|;|;|\n|$)/gu)].map(a=>a[1]),a);if(c.length>0)return c}let c=[];for(let b of a.matchAll(/第[一二两三四五六七八九十\d]+章[^。;;\n]{0,50}(?:强制)?(?:包含|设置|输出|排序|挂靠)[^::。;;\n]{0,20}[::]\s*([^。;;\n]{2,120})/gu))for(let a of b[1].split(/[、,,//及和与]/u))c.push(a);for(let b of a.matchAll(/[“"]([^”"]{2,30})[”"]\s*(?:二级)?小节/gu))c.push(b[1]);for(let b of a.matchAll(/([\p{Script=Han}A-Za-z0-9()()]{2,30})(?:——|—|-|:|:)\s*(?:独立的)?(?:二级)?小节/gu))c.push(b[1]);for(let b of a.matchAll(/(?:必须|应当|需|需要|包含|设置|输出)[^。;;\n]{0,30}(?:独立的)?(?:二级)?小节[::]\s*([^。;;\n]{2,80})/gu))for(let a of b[1].split(/[、,,//及和与]/u))c.push(a);return s(c,a)}(h);if(0===i.length)continue;let j=d.get(b)||{blocks:[],titles:[]};for(let a of(j.blocks.push(h),i))j.titles.some(b=>q(b,a))||j.titles.push(a);d.set(b,j)}return[...d.entries()].map(([a,c])=>{let d=b?.[a-1];return{chapterIndex:a-1,chapterTitle:d?.title,source:c.blocks[0]?.split("\n").find(a=>a.trim())?.trim().slice(0,120),requiredSections:c.titles.map((a,b)=>({title:a,order:b+1,required:!0,source:c.blocks[0]?.slice(0,240)}))}})}function C(a=[],b){let c=[];for(let d of a){let a=m((0,g.nz)(d));!(!a||p(a,b))&&(c.some(b=>q(b,a))||c.push(a))}return c}async function D(a){let b,c=C(a.lockedSections||[],a.chapter.title),d=(0,e.ks)((0,e.QO)(a.chapter,a.evidence),{maxChars:(0,e.Pc)(a.targetWords,5e3,12e3),diagnostics:a.diagnostics}),i=function(a,b,c,d){let e=a.title,f=/质量|安全|工期|进度|物资|材料|机械|设备|劳动力|危大|专项|文明|总平面|施工方法|施工方案/u.test(e),g=b>=14e3?6:b>=8e3?5:b>=5e3||b>=3e3?4:3;f&&(g=Math.max(g,4));let h=new Set((c.map(a=>`${a.sectionTitle||""}
|
|
101
|
-
${a.content}`).join("\n").slice(0,3e4).match(/\d+(?:\.\d+)?\s*(?:mm|cm|m|km|㎡|m²|m3|m³|kg|g|t|L|ml|MPa|kPa|℃|%|台|套|个|项|批|次|份|人|小时|分钟|日历天|天|周|月|年|万元|元)|DN\s*\d+|Φ\s*\d+|φ\s*\d+|C\d{2,}|HRB\d+|GB\/?T?\s*[\w.-]+|JGJ\s*[\w.-]+/giu)||[]).map(a=>a.replace(/\s+/gu,""))).size;return h>=20?g=Math.max(g,5):h>=10&&(g=Math.max(g,4)),Math.max(g,d)}(a.chapter,a.targetWords,a.evidence,c.length),j=Math.max(i,Math.min(7,a.targetWords>=8e3?7:6)),k=0===a.chapterIndex||/编制说明|工程概况|项目概况/u.test(a.chapter.title),n=async()=>{let b=await (0,f.bb)([(0,h.y4)("你是专业文档结构规划专家。"),"只根据用户提示词、章节标题和真实绑定资料规划本章二级小节。","施工组织、技术措施、资源配置、质量、安全、工期、材料、设备、劳动力、危大工程等核心章节必须拆成足够的专业工作面,不得只输出两个泛化小节。","危大工程判定、危险性分级、专家论证要求等危大内容只允许落位在危大工程专项章节或基坑支护相关小节,其他章节不得规划危大清单/危大判定类小节,避免分级结论散落多处产生口径矛盾;危大清单表格只列资料参数确认达到判定阈值的类别,不得列入正文声明“本工程无/未涉及”的类别,防止清单与排除声明自相矛盾。","小节标题必须直接属于本章主题域:例如“人材机保障/资源配置”章只允许劳动力、材料、机械设备、周转类标题;不得规划本章主题域之外的内容小节。",c.length?`本章锁定二级小节(提示词强制要求/模板或 OUTLINE 已提供,必须按此顺序置于小节清单最前,不得删除、改名或重排):${c.join("、")}`:"",k?"本章是全文第一章:若规划出“编制说明与工程概况”类小节,必须置于小节清单第一位,不得排在任何其他小节之后。":"",a.diversity?.directive||"","只返回 JSON。"].filter(Boolean).join("\n"),[`文档模板:${a.template.name}`,`章节标题:${a.chapter.title}`,a.chapter.purpose&&!p(a.chapter.purpose,a.chapter.title)?`章节目的:${a.chapter.purpose}`:"",a.requirement?`用户要求:${a.requirement}`:"",a.projectContext?`上下文:
|
|
102
|
-
${a.projectContext}`:"",a.projectGraphSummary?`本项目专业工程与资源图谱:
|
|
103
|
-
${a.projectGraphSummary}`:"",a.boqCoverageSummary?`本工程工程量清单分部分项全景(下列专有分项必须逐项规划对应施工小节,不得只规划道路、铺装、绿化等大类而遗漏清单独有分项):
|
|
104
|
-
${a.boqCoverageSummary}`:"",a.roleContext,a.diversity?.avoidSections?.length?`以下小节标题已在历史文档中使用,本次命名必须避开相同或高度近似的表达(等价内容换角度、换词面,不得只调整语序或添加“工作/内容”尾词):
|
|
105
|
-
${a.diversity.avoidSections.slice(0,60).map(a=>`- ${a}`).join("\n")}`:"",a.promptTexts?`配置写作主控提示词:
|
|
106
|
-
${a.promptTexts}`:"",d?`真实绑定资料:
|
|
107
|
-
${d}`:"",`请输出 ${i}-${j} 个适合直接成稿的二级小节标题。标题必须具体、业务相关、能承载真实资料;每个标题控制在 16 个汉字以内,避免多个小节表达同一内容。`,"forbidden"===a.bodyTablePolicy?"本标书为暗标(招标编制要求:正文内不允许出现表格与框图):tables 必须返回空数组;计划、清单、台账类内容一律规划为纯文字叙述型小节,不得规划表格型小节。":"如本章需要输出管理表格或清单(投入计划表、控制要点表、验收清单、管控台账、检查记录表等),必须在 tables 中逐表给出表名与表头字段(字段名必须具体、可填);不需要表格时 tables 返回空数组。",'JSON 格式:{"sections":["小节标题1","小节标题2"],"tables":[{"title":"表名","fields":["字段1","字段2"]}]}'].filter(Boolean).join("\n\n"),{maxTokens:2400,temperature:l.TD,signal:a.signal,diagnostics:a.diagnostics}),e=[];for(let c of b?.sections||[]){let b=m((0,g.nz)(String(c)));!(!b||p(b,a.chapter.title))&&(e.some(a=>q(a,b))||e.push(b))}let n=[...c];for(let a of e)n.some(b=>q(b,a))||n.push(a);let o=function(a){let b=new Set,c=[];for(let d of a){let a=(0,g.nz)(d).replace(/[\s()()::.。;;,,、\-—]/gu,"");!a||b.has(a)||(b.add(a),c.push(d))}return c}(n),r=[];for(let c of"forbidden"===a.bodyTablePolicy?[]:b?.tables||[]){let b=m((0,g.nz)(String(c?.title||"")));!(!b||p(b,a.chapter.title))&&(r.some(a=>q(a.title,b))||r.push({title:b,fields:(c?.fields||[]).map(a=>String(a).trim()).filter(Boolean).slice(0,12)}))}return{sections:o,tables:r}};try{b=await n()}catch(b){if(c.length>0)return console.error(`[plan] 小节规划 LLM 调用失败(保留锁定小节 ${c.length} 个继续):${a.chapter.title},${b instanceof Error?b.message:String(b)}`),{sections:c,tables:[]};throw b}let o=b.sections;if(k){let a=o.findIndex(a=>/编制说明|工程概况|项目概况/u.test(a));a>0&&(o=[o[a],...o.slice(0,a),...o.slice(a+1)])}let r=a.diversity?.overlapCheck?a.diversity.overlapCheck(o):[];if(0===r.length)return{...b,sections:o};let s=await E({chapter:a.chapter,sections:o,collisions:r,locked:c,overlapCheck:a.diversity?.overlapCheck,signal:a.signal,diagnostics:a.diagnostics}),t=a.diversity?.overlapCheck?a.diversity.overlapCheck(s.sections).length:0;return t>0&&console.warn(`[plan] 局部改名后仍存在历史撞名(接受,不阻断):${a.chapter.title},${t} 处`),s.renamed>0&&console.info(`[plan] 撞名局部改名:${a.chapter.title},${s.renamed} 个标题已替换候选名`),{...b,sections:s.sections,diversity:{retried:!0,remainingCollisions:t}}}async function E(a){let b,c=[...a.sections],d=a.collisions.filter(b=>!a.locked.some(a=>q(a,b.title))).map(a=>a.title);if(0===d.length)return{sections:c,renamed:0};try{let e=await (0,f.bb)([(0,h.y4)("你是施工组织设计目录命名审查专家。"),"输入某章的小节标题清单与需改名的标题(与历史文档撞名),只输出改名映射。\n改名规则:只改点名标题,不改未点名标题;新标题必须仍是同一专业对象或同一工程内容的具体表述,不得改变小节实质;16 个汉字以内;不得仅通过添加“工作/内容/相关/方案”等尾词规避撞名,必须实质性更换措辞;不得与本章其他小节标题用词高度相似(防章内撞名)。\n只返回 JSON。"].join("\n"),`章标题:${(0,g.GQ)(a.chapter.title)}
|
|
108
|
-
|
|
109
|
-
本章小节清单:
|
|
110
|
-
${c.map(a=>`- ${a}`).join("\n")}
|
|
111
|
-
|
|
112
|
-
需要改名的标题:${d.join("、")}
|
|
113
|
-
|
|
114
|
-
历史撞名对照(本次 ↔ 历史文档):
|
|
115
|
-
${a.collisions.map(a=>`「${a.title}」↔「${a.collidedWith}」`).join("\n")}
|
|
116
|
-
|
|
117
|
-
JSON 格式:{"renames":{"原标题":"新标题"}}(只包含需要改名的标题)`,{maxTokens:600,temperature:l.TD,signal:a.signal,diagnostics:a.diagnostics});b=e?.renames&&"object"==typeof e.renames?e.renames:{}}catch(b){return console.warn(`[plan] 撞名局部改名调用失败(保留原名):${a.chapter.title},${b instanceof Error?b.message:String(b)}`),{sections:c,renamed:0}}let e=0;for(let[f,h]of Object.entries(b)){let b=(0,j.JG)(f);if(!b||!d.some(a=>(0,j.JG)(a)===b))continue;let i=c.findIndex(a=>(0,j.JG)(a)===b);if(i<0)continue;let l=(0,g.nz)(String(h||""));!(!l||l.length>24||(0,j.qL)(l)||p(l,a.chapter.title)||c.some((a,b)=>b!==i&&(0,k.gJ)(a,l)))&&(a.overlapCheck&&a.overlapCheck([l]).length>0||(c[i]=l,e+=1))}return{sections:c,renamed:e}}function F(a){let b=y({promptTexts:a}),c=B(a).filter(a=>a.requiredSections.length>0).map(a=>`第${(a.chapterIndex??0)+1}章${a.chapterTitle?`(${a.chapterTitle})`:""}强制小节(按序锁定):${a.requiredSections.slice().sort((a,b)=>(a.order||0)-(b.order||0)).map(a=>a.title).join("、")}`);return{recognized:b.executionSummary.length>0||c.length>0,summary:[...b.executionSummary,...c],requiredTables:b.requiredTables,requiredKeywords:b.requiredKeywords||[],forbiddenPatterns:b.forbiddenPatterns||[],exactHeadings:b.exactHeadings||[],minWords:b.minWords,coverPolicy:b.coverPolicy||"unspecified",tocPolicy:b.tocPolicy||"unspecified"}}function G(a){let b=[],c=a.map(a=>({prompt:a,rules:y({promptTexts:a.content})})).filter(a=>a.rules.executionSummary.length>0);if(c.length<2)return b;for(let a=0;a<c.length;a++)for(let d=a+1;d<c.length;d++){let e=c[a],f=c[d],g=`${e.prompt.name}(${e.prompt.roleId})`,h=`${f.prompt.name}(${f.prompt.roleId})`,i=[];for(let a of e.rules.requiredKeywords||[])for(let b of[...f.rules.forbiddenTerms||[],...f.rules.forbiddenPatterns||[]])(a.includes(b)||b.includes(a))&&i.push(`「${a}」被要求必含(${g})但被禁止(${h}:${b})`);for(let a of f.rules.requiredKeywords||[])for(let b of[...e.rules.forbiddenTerms||[],...e.rules.forbiddenPatterns||[]])(a.includes(b)||b.includes(a))&&i.push(`「${a}」被要求必含(${h})但被禁止(${g}:${b})`);for(let a of[...new Set(i)].slice(0,4))b.push({level:"warning",message:a});let j=e.rules.exactHeadings||[],k=f.rules.exactHeadings||[];if(j.length>0&&k.length>0){let a=new Set(k),c=new Set(j),d=[...new Set([...j.filter(b=>!a.has(b)),...k.filter(a=>!c.has(a))])];d.length>0&&b.push({level:"warning",message:`固定一级章节列表不一致:${g} 要求 ${j.length} 章,${h} 要求 ${k.length} 章(差异:${d.slice(0,3).join("、")})。生成时将合并去重。`})}for(let a of["coverPolicy","tocPolicy"]){let c=e.rules[a],d=f.rules[a];c&&d&&"unspecified"!==c&&"unspecified"!==d&&c!==d&&b.push({level:"warning",message:`${"coverPolicy"===a?"封面":"目录"}策略冲突:${g} 要求「${"required"===c?"生成":"禁止"}」,${h} 要求「${"required"===d?"生成":"禁止"}」。生成时以禁止优先。`})}e.rules.minWords&&f.rules.minWords&&e.rules.minWords!==f.rules.minWords&&b.push({level:"warning",message:`最低字数要求不一致:${g} ${e.rules.minWords} 字 vs ${h} ${f.rules.minWords} 字。生成时将取最大值 ${Math.max(e.rules.minWords,f.rules.minWords)} 字。`})}return b}},78217:(a,b,c)=>{function d(a,b){return Math.ceil(e(a)/f(b))}function e(a){return a.replace(/<[^>]+>/gu,"").replace(/\s+/gu,"").length}function f(a){let b=Number(String(a&&"typography"in a&&a.typography?.bodySize||"").replace(/[^\d.]/gu,""))||14,c=Number(String(a&&"typography"in a&&a.typography?.lineHeight||"").replace(/[^\d.]/gu,""))||22;return b>=14&&c>=22?900:1050}function g(a){let b=a.trim();if(/^\d+(?:\.\d+)?$/u.test(b))return Number(b);let c={零:0,一:1,二:2,两:2,三:3,四:4,五:5,六:6,七:7,八:8,九:9};if("十"===b)return 10;let d=/^([一二两三四五六七八九])?十([一二三四五六七八九])?$/u.exec(b);if(d)return(d[1]?c[d[1]]:1)*10+(d[2]?c[d[2]]:0)}function h(a="",b=""){let c=`${a}${b}`;return/不少于|至少|不低于|以上|起码/u.test(c)?"minimum":/约|大概|左右|大约|约为|附近/u.test(c)?"approximate":"exact"}function i(a){let b=a.replace(/\s+/gu," "),c=[...b.matchAll(/(不少于|至少|不低于|约为|约|大概|大约|左右|生成|输出|达到|共)?\s*(\d+(?:\.\d+)?|[一二两三四五六七八九十]{1,3})\s*(?:页|頁)\s*(以上|左右|以内|以下)?/gu)],d=[...b.matchAll(/(不少于|至少|不低于|约为|约|大概|大约|左右|生成|输出|达到|共)?\s*(\d+(?:\.\d+)?|[一二两三四五六七八九十]{1,3})\s*(万)?\s*(?:字|字符)\s*(以上|左右|以内|以下)?/gu)],e=c.map(a=>{let b=g(a[2]||"");return Number.isFinite(b)?{value:b,mode:h(a[1],a[3])}:void 0}).filter(a=>!!a).at(-1),f=d.map(a=>{let b=g(a[2]||"");return b?{value:Math.round(b*(a[3]?1e4:1)),mode:h(a[1],a[4])}:void 0}).filter(a=>!!a).at(-1);return{targetPages:e?.value,pageMode:e?.mode,targetChars:f?.value,charMode:f?.mode}}function j(a){if(!a)return a;let b="全文|正文|成文|总字数|篇幅|投标文件|施工组织设计|技术标",c="不得少于|不应少于|不少于|不低于|不得超过|不超过|至少|要求|需要|达到|控制在|约为|约",d="(?:\\d+(?:\\.\\d+)?|[一二两三四五六七八九十百]{1,6})\\s*万?\\s*(?:字|字符)(?:以上|左右|以内|以下)?(?!的)",e=RegExp(`^[ \\t]*(?:\\d+[.、]\\s*)?(?:${b}){0,2}[ \\t]*(?:${c})?[ \\t]*${d}[。;;::]?[ \\t]*$\\n?`,"gmu"),f=RegExp(`(?:${b})[^。;;,,、!??!\\n]{0,12}?(?:${c})?\\s*${d}`,"gu"),g=a.replace(e,"").replace(f,"");return g===a?a:g.replace(/(^|\n)[ \t]*(?:\d+[.、]\s*)?[。;;,,、!??!]+[ \t]*/gu,"$1").replace(/[,,、]{2,}/gu,",").replace(/[,,、][ \t]*(?=[。;;!??!])/gu,"").replace(/([。;;!??!])[ \t]*[,,、]+/gu,"$1").replace(/\n{3,}/gu,"\n\n")}c.d(b,{Cv:()=>d,K1:()=>m,KC:()=>j,KZ:()=>v,PE:()=>p,V7:()=>e,W4:()=>n,_P:()=>g,py:()=>i,q6:()=>f,s:()=>u,tF:()=>o,ty:()=>q,yJ:()=>r});let k={detailed:1.3,standard:1,brief:.75};function l(a,b,c,d){let e=Math.max(0,Math.round(b)),f=new Map;if(0===a.length)return f;let g=a.map(a=>Math.max(1,(a.sections||[]).filter(Boolean).length)*k[function(a){let b=a.title+a.purpose;return/方法|技术|质量|安全|进度|资源|保障|措施|部署|方案|流程|执行/u.test(b)?"detailed":/概况|结语|附录/u.test(b)?"brief":"standard"}(a)]),h=a.map(a=>Math.max(800,Math.round(c(a)),Math.round(d?.(a)||0))),i=new Map;for(let b=0;b<=a.length;b+=1){let b=a.map((a,b)=>b).filter(a=>!i.has(a));if(0===b.length)break;let c=e-[...i.values()].reduce((a,b)=>a+b,0),d=b.reduce((a,b)=>a+g[b],0)||b.length,j=b.find(a=>c*g[a]/d<h[a]);if(void 0===j){let h=0;for(let[b,c]of i)f.set(a[b].id,c),h+=c;return b.forEach((i,j)=>{let k=j===b.length-1?Math.max(1,e-h):Math.max(1,Math.round(c*g[i]/d));f.set(a[i].id,k),h+=k}),f}i.set(j,h[j])}let j=h.reduce((a,b)=>a+b,0)||a.length;console.error(`[budget] 篇幅预算不足:目标 ${e} 字不足以覆盖 ${a.length} 章最低预算(下限合计 ${j} 字),按下限比例压缩分配`);let l=0;return a.forEach((b,c)=>{let d=c===a.length-1?Math.max(1,e-l):Math.max(1,Math.round(e*h[c]/j));f.set(b.id,d),l+=d}),f}function m(a){let{chapters:b,targetChars:c,floorOf:d,feasibilityFloorOf:e,currentTargets:f}=a,g=Math.max(0,Math.round(c)),h=b.map(a=>Math.max(0,Math.round(e(a)))),i=b.reduce((a,b,c)=>a+Math.max(800,Math.round(d(b)),h[c]),0),j=i>g;j&&console.error(`[budget] 章预算可行性校准:最低密度预算合计 ${i} 字超出全文目标 ${g} 字,按下限比例压缩(容量密度需求与目标字数冲突,显式暴露不静默)`);let k=l(b,g,d,a=>e(a)),m=[...k.values()].reduce((a,b)=>a+b,0);if(Math.abs(m-g)>Math.max(b.length,Math.floor(.02*g)))throw Error(`章预算可行性校准违约:Σ章预算 ${m} 与目标 ${g} 偏差超出容差(算法回归防御)`);let n=f?b.map(a=>({id:a.id,title:a.title,from:f.get(a.id)||0,to:k.get(a.id)||0})).filter(a=>a.from!==a.to):[];return{chapterTargets:k,adjustments:n,compressed:j}}function n(a){let b=a.chapterTargets.get(a.chapterId);if(void 0!==b&&Number.isFinite(b)&&b>0)return{budgetTarget:b};let c=Math.max(1,Math.floor(a.chapterCount)||1),d=[...a.chapterTargets.values()].reduce((a,b)=>a+(Number.isFinite(b)&&b>0?b:0),0),e=Number.isFinite(a.documentTargetChars)&&a.documentTargetChars>0?a.documentTargetChars:0,f=e>0?e:d,g=f>0?Math.max(1,Math.round(f/c)):800,h=f>0?`按${e>0?"全文目标":"章预算合计"} ${Math.round(f)} 字 \xf7 ${c} 章折算`:`全文目标与章预算合计均不可用,取章最低预算锚点 800 字`,i=`章预算缺失回退:章预算表未覆盖本章(${a.chapterTitle},原值 ${String(b)}),${h} → ${g} 字;该值参与本章目标与超产审计,请核查预算生成契约`;return console.error(`[budget] ${i}`),{budgetTarget:g,fallbackNote:i}}function o(a){let b,c=a.template.generationSettings||a.template.exportSettings,d=f(a.template.exportSettings||a.template.generationSettings),e=i(a.requirement||""),g=i(a.promptTexts||""),h=e.targetChars||e.targetPages?e:g,j=!!(h.targetChars||h.targetPages),k=j?void 0:c?.targetPages?.target||c?.targetPages?.min,m=h.targetPages?h.targetPages*d:void 0,n=h.targetPages||k,o=j?"explicit":k?"template":a.spec?.chapterRules.some(a=>a.minWords)||a.spec?.dynamicChapterRule.minWordsPerChapter?"spec":"default",p=j?Math.max(h.targetChars||0,m||0)||void 0:Math.max((k?k*d:void 0)||0)||void 0,q=h.pageMode||"exact",r=h.charMode||q,s=j&&"approximate"===r,t=j&&"minimum"===r,u=j?n?Math.floor(n*(t?1:.9)):void 0:c?.targetPages?.min||(n?Math.floor(.95*n):void 0),v=j&&n&&!t?Math.ceil(n*(s?1.15:1.08)):c?.targetPages?.max,w=p?Math.floor(p*(t?1:.9)):u?u*d:void 0,x=p&&!t?Math.ceil(p*(s?1.15:1.08)):v?v*d:void 0,y=a.chapters.length>0?a.chapters:a.template.chapters,z=b=>Math.max(a.spec?.chapterRules.find(a=>a.id===b.id||a.title===b.title)?.minWords||0,a.spec?.dynamicChapterRule.minWordsPerChapter||0);if(p){let a=[...(b=l(y,p,z)).values()].reduce((a,b)=>a+b,0);if(Math.abs(a-p)>Math.max(y.length,Math.floor(.02*p)))throw Error(`篇幅预算契约违约:Σ章预算 ${a} 与目标 ${p} 偏差超出容差(算法回归防御)`)}else b=new Map(y.map(a=>[a.id,Math.max(1200,z(a))]));let A=!!(j&&(t||"exact"===r)&&(p||w||0)>=4e4);return{targetPages:n,minPages:u,maxPages:v,targetChars:p,minChars:w,maxChars:x,charsPerPage:d,chapterTargets:b,source:o,mode:r,longformStrict:A}}function p(a,b){let c=a?.targetPages;if(!c?.min&&!c?.target&&!c?.max)return[];let e=d(b,a),f=c.min||c.target,g=c.max||c.target,h=[];return f&&e<f&&h.push({level:"warning",message:`正文篇幅低于目标页数:预计约 ${e} 页,目标不少于 ${f} 页`,suggestion:"建议增加章节正文深度,或根据实际需求调整目标页数。"}),g&&e>g+4&&h.push({level:"warning",message:`正文篇幅可能超过目标页数:预计约 ${e} 页,目标不超过 ${g} 页`,suggestion:"建议检查是否存在重复段落或过度展开。"}),h}function q(a,b){let{currentChars:c,estimatedPages:d}=function(a,b){let c=e(b),d=Math.ceil(c/a.charsPerPage);return{currentChars:c,estimatedPages:d}}(a,b),f=[];return a.minChars&&c<a.minChars&&f.push({level:"warning",message:`正文篇幅低于目标字数:当前 ${c} 字,目标不少于 ${a.minChars} 字`,suggestion:"建议继续扩写缺口章节,或根据实际需求调整目标字数/页数。"}),a.maxChars&&c>Math.ceil(1.12*a.maxChars)?f.push({level:"error",message:`正文篇幅超过目标字数区间:当前 ${c} 字,建议不超过 ${a.maxChars} 字`,suggestion:"请压缩重复段落、过细小节或过度展开内容后再导出。"}):a.maxChars&&c>a.maxChars?f.push({level:"warning",message:`正文篇幅超过目标字数区间:当前 ${c} 字,建议不超过 ${a.maxChars} 字`,suggestion:"建议减少重复段落、过细小节或过度展开内容。"}):"minimum"===a.mode&&a.targetChars&&c>Math.ceil(1.4*a.targetChars)?f.push({level:"error",message:`正文篇幅严重超出目标字数:当前 ${c} 字,目标约 ${a.targetChars} 字(超出 ${Math.round((c/a.targetChars-1)*100)}%,超过 40% 即阻断)`,suggestion:"按章节完成率定位超产章节,压缩重复段落与过度展开内容(保留全部事实与关键数值),使正文回到目标篇幅附近后重新验收。"}):"minimum"===a.mode&&a.targetChars&&c>Math.ceil(1.2*a.targetChars)?f.push({level:"warning",message:`正文篇幅明显超出目标字数:当前 ${c} 字,目标约 ${a.targetChars} 字(超出 ${Math.round((c/a.targetChars-1)*100)}%,超过 40% 将阻断)`,suggestion:"建议压缩重复段落与过度展开内容,使正文接近目标篇幅。"}):"minimum"===a.mode&&a.targetChars&&c>Math.ceil(1.15*a.targetChars)&&f.push({level:"warning",message:`正文篇幅超出目标字数:当前 ${c} 字,目标约 ${a.targetChars} 字(超出 ${Math.round((c/a.targetChars-1)*100)}%)`,suggestion:"建议压缩重复段落与过度展开内容,使正文接近目标篇幅。"}),a.minPages&&d<a.minPages&&f.push({level:"warning",message:`正文篇幅低于目标页数:预计约 ${d} 页,目标不少于 ${a.minPages} 页`,suggestion:"建议继续扩写正文,或根据实际导出版式调整目标页数。"}),a.maxPages&&d>a.maxPages&&f.push({level:"warning",message:`正文篇幅超过目标页数区间:预计约 ${d} 页,建议不超过 ${a.maxPages} 页`,suggestion:"建议压缩过度展开内容或调整目标页数。"}),f}function r(a,b){if(!a.targetChars||a.targetChars<=0)return;let c=e(b);if(!(c<=Math.ceil(1.2*a.targetChars)))return{currentChars:c,targetChars:a.targetChars,excessRatio:c/a.targetChars-1,aimChars:Math.ceil(1.1*a.targetChars)}}let s={parameter:100,boqRow:60,drawingFact:50,basicFact:30};function t(a){return`${a.key}\u0000${a.value}\u0000${a.sourceFile}`}function u(a){let b=new Map;for(let c of a.pools)for(let a of c){let c=t(a);b.has(c)||b.set(c,a)}let c=a.preciseFacts??[],d=new Set(c.map(t));return{allFacts:b.size,basicFacts:[...b.keys()].filter(a=>!d.has(a)).length,parameters:c.length}}function v(a){let b=Math.round(a.parameters*s.parameter+a.boqRows*s.boqRow+a.drawingFacts*s.drawingFact+a.basicFacts*s.basicFact),c=Math.max(0,Math.round(a.targetWords)),d=c-b,e=0===c||b>=.8*c,f=e?[]:[`资料可支撑篇幅下界约 ${b} 字,低于目标 ${c} 字的 ${Math.round(80)}% 红线,差额约 ${Math.round(d)} 字。`,`量化参数 ${a.parameters} 个(权重 ${s.parameter}/个)、清单行 ${a.boqRows} 行(${s.boqRow}/行)、图纸事实 ${a.drawingFacts} 条(${s.drawingFact}/条)、基础事实 ${a.basicFacts} 条(${s.basicFact}/条)。`,"补料方向(按缺口从大到小):① 补充工程量清单/ExceL 明细(清单行权重最高且最易补);② 补充施工图纸(DWG/PDF)以提供图纸事实;③ 补充招标文件技术条款与规范引用以增加量化参数;④ 核对资料包绑定是否覆盖项目全部资料。","若资料确实无法补足,请下调目标字数至资料可支撑水平,而不是产出篇幅注水、无依据的文档。"];return{supportableWords:b,targetWords:c,shortfall:d,sufficient:e,sources:{parameters:a.parameters,boqRows:a.boqRows,drawingFacts:a.drawingFacts,basicFacts:a.basicFacts},remediation:f}}},80439:(a,b,c)=>{function d(a){return a?({"knowledge-base":"知识库","document-readiness":"生成准备度检查","llm-json":"LLM 事实抽取"})[a]:void 0}function e(a,b={}){var c;let f={executionVersion:2,title:(c=a.type,a.roleId,({role_binding:"项目角色配置绑定",knowledge_retrieval:"知识库证据检索",file_understanding:"项目资料理解",fact_extraction:"事实抽取",chapter_generation:"章节正文生成",llm_review:"LLM 审查优化",validation:"内容优化与质量校验",reference:"资料增强"})[c]),group:a.type,...a,...b};return{...f,roleName:f.roleName||d(f.roleId),subtitle:f.subtitle||f.roleName||d(f.roleId)}}function f(a,b){let c=a=>"chapter_generation"===a.type||/^agent-chapter-task-/u.test(a.roleId||"")?[a.type,a.roleId||"",a.promptId||"",a.subtitle||"",a.order??""].join("::"):[a.type,a.roleId||"",a.promptId||""].join("::"),d=c(b),e=a.findIndex(a=>c(a)===d);return e>=0?(a[e]={...b,order:a[e]?.order??b.order},e):(a.push(b),a.length-1)}function g(a,b){return`${a},耗时 ${Math.round((Date.now()-b)/1e3)} 秒`}c.d(b,{AQ:()=>g,X5:()=>e,fx:()=>f})},80572:(a,b,c)=>{let d;c.d(b,{z:()=>f});let e=["chapterConcurrency","sectionConcurrency","sectionGroupConcurrency","sectionGroupSize","sectionGroupTaskConcurrency","plannedBlockConcurrency","tableFixConcurrency","llmMaxConcurrency","writingTaskConcurrency","projectGraphDomainConcurrency","writingTaskMaxWords","blockEvidenceChars","chapterPoolChars","evidenceBudgetRatio","evidenceBudgetCeiling","evidenceCatalogMaxLines","factCoverageCap","factExtractionMaxChars","factExtractionMaxItems","outlineEvidenceChars","persistEvidenceMaxItems","persistEvidenceItemChars","repairEvidenceChars","capacityFeasibilityRecalibration","blueprintBlockQuantityCap","blueprintBlockMaterialCap","blueprintBlockSliceCap"];function f(){let a=process.env.DOCUMENT_TUNING_PROFILE;if(d&&d.raw===a)return d.parsed;let b={};if(a)try{let c=JSON.parse(a);for(let a of e){let d=c[a];if("number"==typeof d)b[a]=d;else if("string"==typeof d&&""!==d.trim()){let c=Number(d);Number.isFinite(c)&&(b[a]=c)}}}catch(a){console.warn(`[tuningProfile] DOCUMENT_TUNING_PROFILE 解析失败,按全默认处理:${String(a)}`)}return d={raw:a,parsed:b},b}},81892:(a,b,c)=>{c.d(b,{G0:()=>m,OA:()=>i,Xv:()=>l,uQ:()=>h});var d=c(29055),e=c(68977);let f="每条重点难点必须写成「难点事项 | 成因与风险来源 | 应对措施 | 责任岗位 | 检查频次 | 整改闭环要求」式条目,两个半项缺一不可:① **归因**:明确写出成因与风险来源——须用「成因」「风险来源」「风险源于」「致险因素」等字面表述,不得只描述现象;② **量化**:写出量化控制目标(数值+单位或频次,如「开挖深度不超过 3m」「每 200m 划分一段」「压实度不低于 95%」「巡检 1 次日」「导行通道宽度不小于 4m」);重难点以表格呈现时按行逐条判定:文档级模板化检测线只取②量化——「数值+单位/频次」条目占比须 ≥50%(①归因表述为观测项,不计入该线);块级质检(重难点类章)另按①②双达标率 ≥50% 验收",g=[{pattern:/概况|总体|理解|说明|编制/u,goal:"以项目资料已确认的事实卡片展开工程概况与总体理解,不得空泛概述",mustCover:["工程名称、建设地点、建设规模、计划工期、质量标准等资料已确认事实","现场条件与招标范围边界","编制依据与适用范围(按五类逐项列全:招标文件及补疑补遗、国家法律法规、国家/行业现行规范标准、地方法规规章、企业管理体系;地方法规规章必须结合工程所在地属地的现行地方性法规与政府规章,不得只写笼统一句话)","B5 专业工程清单:资料识别的专业工程逐个展开(不少于 5 个,每个专业工程写明作业对象与工程量、工序顺序、施工方法三方面要素,落到工程量与工艺参数)",`重点难点分析(本类章普遍承载该内容):${f}`]},{pattern:/主要施工内容/u,goal:"按专业工程展开作业对象与工程量、工序顺序、施工方法三方面要素(呈现形式不限),落到工程量与工艺参数",mustCover:["资料识别的专业工程(不少于5个)","每个专业工程的作业对象与工程量/工序顺序/施工方法三方面要素","工程量、材料设备规格、检测验收与资料闭环"]},{pattern:/主要分部分项工程施工方案|主要施工方法/u,goal:"按分项工程方案展开作业对象与工程量、工序顺序、施工方法三方面要素(呈现形式不限),落到工艺参数与工序顺序",mustCover:["资料明确的专业工程范围(逐项展开分项工程方案)","每个分项方案的作业对象与工程量/工序顺序/施工方法三方面要素","每个分项方案不少于4个工艺参数与至少1处3环节以上工序顺序表达","工艺参数来自绑定材料或行业通用规范值,不得编造"]},{pattern:/重点|难点/u,goal:"识别项目重点难点并给出针对性对策,每项落到责任岗位与验收节点",mustCover:["重点难点成因与影响范围","对应施工内容与专项措施","责任岗位、检查频次、整改闭环",f]},{pattern:/部署|总体|流水|顺序/u,goal:"明确施工部署逻辑、流水段划分与资源调配机制",mustCover:["施工区段与流水划分","各阶段施工顺序与穿插关系","资源动态调配机制"]},{pattern:/进度|工期/u,goal:"围绕总工期与关键节点展开进度保障",mustCover:["总进度计划与关键节点","周/日计划分解","进度偏差识别与纠偏措施"]},{pattern:/质量/u,goal:"覆盖材料验收、过程控制、隐蔽验收、整改复验的质量闭环",mustCover:["质量目标与验收依据","三检制度与样板引路","隐蔽工程验收与材料复试","见证取样送检、试块养护、分部分项报验等质量保障制度逐项落位","质量通病防治与闭环整改","保修与缺陷责任期承诺"]},{pattern:/安全|危大|风险/u,goal:"覆盖风险识别、危大工程专项方案、检查整改与应急响应",mustCover:["安全目标与量化控制指标(如杜绝重伤及以上事故、轻伤事故频率控制值、安全达标率),须以承诺句式明确写出","危险源辨识与风险分级","危大工程辨识清单逐项完整(按项目实际情况覆盖基坑支护与降水、模板支撑、脚手架、起重吊装、吊篮、拆除等适用项,逐项写明辨识依据,不得遗漏)","B6 危大分级参数—判定绑定(硬要求):每一类危大工程的判定必须写「本项目实际参数 + 判定阈值对照 + 结论」三要素(如「本项目基坑开挖深度 1.75m,对照《危险性较大的分部分项工程安全管理规定》开挖深度超过 3m 属危大工程的阈值,判定本工程基坑不属于危大工程」);**禁止只抄规范阈值**(如只写「开挖深度超过 3m 的沟槽土方开挖工程」而不给本项目实际深度);参数取自资料原文,不得编造","危大工程专项方案编制与审批程序","安全交底与隐患排查闭环","施工现场临时用电三级配电两级保护:总配电箱/分配电箱/开关箱三级配电,两级漏电保护(总箱与开关箱各一级,漏电动作电流与动作时间参数落位),TN-S 接零保护系统,漏电保护器每周试跳 1 次","B5 生产安全事故应急预案与应急演练(八部分结构:总则、组织机构及职责、风险分析与危险源辨识、应急物资设备与通讯保障、专项应急预案、应急响应、后期处置、培训演练):逐部分展开,演练频次量化(如每半年 1 次),物资储备清单化"]},{pattern:/资源|材料|设备|劳动力|人材机/u,goal:"说明资源配置依据、进场验收与保管调配",mustCover:["机械设备投入计划","分阶段劳动力计划","材料进场计划与验收"]},{pattern:/文明|绿色|环保|扬尘|噪声/u,goal:"覆盖扬尘噪声管控、四节一环保与智慧监测",mustCover:["扬尘治理六个百分百逐项落位(施工工地周边 100% 围挡、物料堆放 100% 覆盖、出入车辆 100% 冲洗、施工现场地面 100% 硬化、拆迁工地 100% 湿法作业、渣土车辆 100% 密闭运输;不涉及拆迁的写明豁免理由)","扬尘噪声分时段管控","监测预警与台账","绿色施工与四节一环保措施:绿色施工按《绿色施工评价标准》GB/T 50640 分阶段评价(每阶段不少于 1 次,评价记录归档)","B5 四节一环保量化指标:节水(非传统水源利用率/用水量控制)、节材(材料损耗率/废弃物回收率)、节地(土方平衡率)、节能(能耗指标)各至少 1 项带单位量化指标,附录八基准对照项逐项量化响应"]},{pattern:/应急|预案/u,goal:"覆盖应急组织、物资储备与专项预案",mustCover:["应急组织架构","应急物资储备","专项预案与演练计划"]},{pattern:/竣工|验收|移交|保修/u,goal:"覆盖竣工清理、验收移交与保修响应",mustCover:["竣工清理与垃圾外运","缺陷修补与复查销项","验收移交与保修响应"]},{pattern:/工资|劳务|实名/u,goal:"覆盖劳务实名制与农民工工资保障闭环",mustCover:["建筑工人实名制管理(实名登记率 100%、实名制管理平台考勤)","农民工工资专用账户与银行代发(专用账户开设、按月足额代发、工资保证金)","考勤与工资支付台账","工伤保险办理与参保信息管理(作业人员工伤保险按项目参保、参保信息纳入实名制管理、工伤事故申报处置流程)"]}];function h(a){return g.find(b=>b.pattern.test(a))}let i=["【结构完整性红线】有序列表编号必须从「1.」起连续、不得跳号或重号,小节内列表独立起编、不得继承父级编号;编号后必须紧跟实质内容(禁止孤立编号);禁止双重冒号「::」「;:」「。:」等行尾标点残留;禁止句子中途截断(行尾无终止标点)与整段重复行;每个小节必须有实质正文,禁止只写标题的空小节","【表格规范红线】每张表只允许一个表头行(禁止重复表头),表名必须独立成行(禁止混入表头首格);**数据行不得留空单元格,也不得用「—/——」占位**——每格必须有内容且有值;禁止用「若干/约/待定/暂无/待补充」等模糊表达代替具体数据;合计行数值必须可由明细行相加推导;列数与表头一致;说明性内容必须用段落承载,禁止用表格单元格堆砌正文。规格型号列尤其注意:机械设备由投标人自行选型时,**选型结论本身就是必须写出的值**(写具体型号,或招标/图纸给出的规格),不得以「—」留空搪塞","【数据口径红线(宁缺毋假)】同一指标(劳动力总数、机械台数、工期阶段划分、班组人数等)全文档只允许一套口径,禁止在不同章节或表格中并列矛盾数值;禁止自行取平均值、保守值、众数等在多套口径中盲选统一;无法从资料锁定唯一数值时不得写具体数值(改用定性表述或显式标注待核),严禁编造数值或将候选值随手择一写入","【禁止资料堆砌伪段落】禁止以「本项目主要施工内容包括:X的Y量为Z……」「经识别,本项目工程量为:……」式清单罗列句充当正文段落;禁止把资料条目用顿号/分号首尾相接拼成伪句子;每段必须是连贯的施工描述(含施工对象、工序逻辑、工艺做法、参数落位),工程量清单类明细如需呈现应使用规范表格,不得用罗列句复制表格内容",'【禁止自伤式假设与短板表述】不得以假设或否定前提描述自身合规状态——禁止「如涉及危险性较大的分部分项工程…未经审批不得实施」「若发现缺项/矛盾…补测」「本工程不允许分包」类表述(评标人读作"可能不合规");也不得主动暴露短板(设计图纸不一致、工程量组价缺失、资料缺项、踏勘发现矛盾);一律改写为**已落实的正向做法**(逐项辨识分级管控、按程序处理、开工前完成核对闭环、自主组织实施严禁违法分包)',"【禁止两可表述】同一事项必须给出**唯一确定**的做法与参数,禁止「A 或 B」「A/B」「按…或…执行」式悬置选择(如「采用塔吊或施工电梯」「放坡或支护」「按设计坡率」);系统已裁决的计划类数值与做法按其口径唯一写出,不得并列候选值","【工期时序与分批口径红线】时间表述必须符合施工时序逻辑:前期准备动作(施工方案编制报审、图纸会审、交底、考察、封样、检测、培训演练、采购调查等)的完成时限必须落在施工准备阶段内,禁止出现「开工令下发后第 N 日内」且 N 达到或超过总工期的写法(等同于把前期动作排到竣工日);机械、设备、劳动力分批进场表述(首批/剩余/补充进场)各批次数量必须能合计推导为进场总数且与资源配置表同口径,禁止分批数量与总数互相矛盾","【禁止指向型表述与缺资料搪塞】不得以指向他处替代具体做法与参数——禁止「按设计图纸控制/计量/要求/施工/确定/执行」「按图纸」「以图纸为准」「详见\xd7\xd7大样图/详图」「参见《…》+图集编号(如20S515/29、皖2015S209)」类写法;**同样禁止**「资料未提供该参数」「待补充/待确认/待核实」「以设计文件为准」类搪塞(本产品不存在资料缺参数的情形)。每一条都必须写出本项目已确认的具体做法与参数实值(取蓝图/工程量清单/图纸标注/规范的确定值);若该条目的权威值尚未绑定给出,按**同专业已确认的等效做法+已有资料**写实,不得指向、不得留空、不得写「未提供」","【编制依据五类逐项列全(本章设「编制依据/编制说明」小节时适用)】设该小节的章节必须**逐条列出具体名称**(以类别话术代替即判未写:「国家现行法律、行政法规」「现行规范标准」「地方法规规章」式写法不得出现),五类缺一不可:① 招标文件及补疑补遗(名称、编号与招标文件一致,含答疑澄清文件);② 国家法律法规(《…法》形态的具体法律名称);③ 国家/行业现行规范标准(《…规范/规程/标准》+编号—年号,按本工程分部分项选择现行版本,**编号必须能在项目资料(招标文件/清单/图纸/设计说明)中查到**,查不到的编号视为编造);④ 地方法规规章(工程所在地属地的现行地方性法规与政府规章,名称须含工程所在地的省/市名,不得写笼统一句话);⑤ 企业管理体系文件(质量/环境/职业健康安全管理体系文件与内部管理制度)。**未设该小节的章节不得新增该小节**;既有条目不得删除或替换(补列条目与既有条目并列成行或成表)"],j="B8 现行口径铁律:正文只陈述**现行值**——计划工期、合同金额、开工日期等以真值层裁决后的生效值为准(具体生效值与被取代值见下文「现行口径」硬约束块,逐条照办);**禁止出现被取代的旧值,也禁止叙述变更过程**(不得写「原365日历天现变更修改为330日历天」「招标阶段计划工期为365日历天,现澄清变更为330日历天」「经澄清/答疑…调整为…」「招标澄清文件明确…」类说明——评标人只看现行口径);以工期为参照的时限(如「开工后第N日内完成…」)必须落在现行工期之内",k="B7 蓝图权威值必须写具体数字:劳动力峰值、机械设备台数、里程碑节点天数等由系统蓝图统一裁决的数值,必须原样写出(如「劳动力峰值 XX 人」「挖掘机 X 台」),不得只写「按总进度计划控制」「按施工部署确定」类控制原则,也不得自行推算另设";function l(a){let b=(a.globalWritingFocus||[]).filter(a=>/^B[78]\s|^项目规模事实卡|^项目可信基础事实|^【规范术语显性落位】|^B5 属地创优目标/u.test(a));return[a.truthConstraint,a.clarificationConstraint,a.amendmentConstraint,...b,a.hazardBindingBlock].filter(a=>!!(a&&a.trim()))}function m(a){let b=(0,d.y)({template:{id:"runtime",name:a.templateName||"",outputTitle:"",description:"",category:"",chapters:a.chapters},chapters:a.chapters,requirement:a.requirement}),c=/施工组织设计|施工组织|施组|技术标/u.test(`${a.templateName||""} ${a.requirement||""} ${a.chapters.map(a=>a.title).join(" ")}`)||b.length>0,f=Object.values(a.factsModel?.canonical?.byKey||{}).filter(a=>{let b=String(a.value||"").replace(/\s+/gu,"");return!/^[约为]?[::]?\d+(?:\.\d+)?(?:mm|cm|米|m|kN|KN|kn|kg|t|吨)/u.test(b)||!!(0,e.LM)(b,"m")}).map(a=>`${a.label}=${a.value}`),g=f.filter(a=>/建设规模|建筑面积|占地|用地面积|装配|层数|高度/u.test(a)).slice(0,8),l=["正文必须落到本项目资料已确认的事实,不得使用模板化空话或跨小节复制段落","措施类内容写成“责任岗位+执行动作+量化标准+检查频次+整改时限+复查销项”闭环句式:同一自然段内三要素(责任岗位+检查频次+整改闭环)须同时出现,全文每 1500 字至少 1 段闭环句式;不得以固定句模复读,三要素分散融入叙述(相邻小节不得同句式开头,同一句式全文不得反复使用)","措施类段落必须落位完整五要素链——方案(专项施工方案/技术措施)、流程(施工工序/工艺流程)、责任岗位(项目经理/技术负责人/安全员等)、检查频次(每周/每日不少于 N 次)、验收整改闭环(检查验收/整改/复查/销项)——五个要素词面每 1500 字至少 1 段完整覆盖","【规范术语显性落位】凡涉及强制性管理制度的段落,小节标题与正文首句必须显性使用规范术语原词(如「建筑工人实名制管理」「农民工工资专用账户」「生产安全事故应急预案与应急演练」「危险性较大的分部分项工程」「扬尘污染防治措施」「绿色施工与四节一环保」「施工现场临时用电三级配电两级保护」),禁止只写近义改写(如把“实名制管理”写成“人员考勤登记”、把“应急预案”写成“处置办法”);评审按规范术语原词做语义匹配,术语不显性即判内容缺失","正文每 1000 字至少落位 6 处带单位量化工艺参数(mm/MPa/养护天数/间距/压实度等),施工流程与施工方法须有明确的工序顺序表达(相邻小节不得同句式开头,同一句式全文不得反复使用,禁止以固定句模复读),每个分部分项方案至少 1 处 3 环节以上工序顺序表达",'专业工程类小节必须覆盖作业对象与工程量、工序顺序、施工方法三方面要素(必须融入连贯段落叙述,禁止以"施工概况/施工流程/施工方法"等结构标签充当标题或段落开头引导),小节标题用专业工程正式名称(如"拆除工程"),禁止使用"工作包"等后台概念命名','质量目标与创优目标必须使用招标文件原文的奖项名称逐字落位,禁止替换、降级或省略为其他奖项名称(如把招标文件指定奖项写成其他奖项);招标文件"确保/达到"类等级要求不得弱化为"争创/争取"',"B5 属地创优目标(属地适配项):招标文件未明确具体奖项时,正文必须提出不低于招标文件要求的属地创优目标(如“争创市级优质工程”“争创市级安全文明标准化工地”,市名须为工程所在地),并在质量与文明施工章节落位","B5 表格数据一致性(实测缺陷:合计行与阶段明细之和不符、班组人数多值并存):表格类内容(劳动力投入、材料配置、机械设备等)合计行数值必须与上方明细行数据一致、可由各行相加推导;各阶段人数与全项目峰值人数必须显式区分口径并保持一致(如写明“阶段高峰人数按阶段分别统计,合计行仅列全项目峰值口径”);同一班组人数在配置表与进退场表中必须同值,不得多值并存",...i,a.clarificationConstraint||""].filter(Boolean),m=a.chapters.map(b=>{let c=h(b.title),d=(a.projectGraph?.works||[]).filter(a=>a.name&&(b.title.includes(a.name.slice(0,2))||/概况|总体|施工内容|方案|施工/u.test(b.title))).slice(0,10),e=(a.projectGraph?.resources||[]).filter(a=>a.quantity&&/概况|资源|总体|施工内容|方案/u.test(b.title)).slice(0,12).map(a=>({itemCode:"",itemName:a.name,quantity:a.quantity,unit:a.unit}));return{chapterId:b.id,chapterTitle:b.title,writingGoal:c?.goal||"结合本章标题与项目资料事实展开专业内容,避免泛化叙述",mustCover:[...c?.mustCover||[],...(b.requiredFacts||[]).slice(0,6)],factDomains:[...b.requiredFacts||[],...d.map(a=>a.name)].slice(0,10),evidenceRefs:b.queries.slice(0,6).map(a=>({filePath:a,kind:"query",priority:"should"})),boqTargets:e,drawingTargets:[],gaps:[]}});return{documentType:c?"施工组织设计":"专业文档",globalWritingFocus:c?[...l,j,"招标硬性要求必须逐项明确响应:质量标准、计划工期、缺陷责任期与保修、安全文明目标、项目经理及组织机构;工期/质量/保修类承诺可在概况与质量章节落位,不得遗漏",...g.length?[`项目规模事实卡(口径裁决值,正文引用规模数据必须与之一致,不得混淆总占地与建筑总量口径):${g.join(";")}`]:[],...f.length?[`项目可信基础事实(写作时必须优先落位):${f.slice(0,10).join(";")}`]:[],k]:[...l.slice(0,2),j,k],chapters:m}}},85441:(a,b,c)=>{c.d(b,{F:()=>u,P:()=>s});var d=c(76760),e=c(44533),f=c(92808);let g=["project_overview","requirement_document","structured_data","scope_description"],h=["project_overview","requirement_document","addendum","structured_data","budget_cost","design_specification","resource_recommendation","schedule_quality_safety","scope_description","technical_specification","risk_constraints"];function i(a){let b=[];for(let c of a)for(let a of c.relativePath.split(/[\\/]/gu))a&&b.push(a);return b}function j(a){return/--|延期到|资料|附件|扫描|目录|汇总|打包|备份|\d{1,2}\.\d{1,2}/u.test(a)}function k(a){return m(a).replace(/^\d+(?:\.\d+)?[-_\s]*/u,"").replace(/^(?:延期到\d+(?:\.\d+)?[-_—–\s]*)+/u,"").trim()}function l(a){let b=new Set,c=[];for(let d of a)!d||b.has(d)||(b.add(d),c.push(d));return c}function m(a){return a.replace(/\.(?:pdf|docx?|xlsx?|xls|dwg)$/iu,"").trim()}function n(a){let b=new Set,c=[];for(let d of i(a)){let a=k(d);!(!/项目|任务|文档|合同|计划|方案|工程/iu.test(a)||a.length<6||b.has(a))&&(!j(a)||/\.\w+$/u.test(d))&&(b.add(a),c.push(a))}return c}function o(a,b){return 0===a.length?b:a.map(a=>m(a.fileName)).join("、")}function p(a,b,c){b.lastIndex=0;let d=new Set,e=[];for(let f of a.matchAll(b)){let a=(f[c]||"").trim();!a||d.has(a)||(d.add(a),e.push(a))}return b.lastIndex=0,e}function q(a){return a.replace(/\\/gu,"/").replace(/^\/+|\/+$/gu,"")}function r(a){let b=q(a).split("/").filter(Boolean);return b.length>1?b[0]:void 0}function s(a,b){let c=(0,e.Yy)(a),m=function(a,b){let c=a.filter(a=>"error"!==a.status),d=new Set((b?.boundFilePaths||[]).map(q)),e=c.filter(a=>d.has(q(a.relativePath)));if(e.length>0){let a=[...new Set(e.map(a=>r(a.relativePath)).filter(Boolean))],b=1===a.length?a[0]:void 0;return{files:e,reason:b?`模板绑定文件定位到资料组:${b}`:"使用模板显式绑定文件作为资料范围",ambiguous:!1}}let f=(b?.requirement||"").trim();if(f){let a=new Map;for(let b of c){let c=r(b.relativePath);if(!c)continue;let d=function(a,b){let c=0;for(let d of a.split(/(?:\s|_|-|—|(|)|\(|\)|【|】|\[|\]|、|,|,)+/u)){let a=d.trim();a.length>=2&&b.includes(a)&&(c+=1)}return c}(c,f);d>0&&a.set(c,(a.get(c)||0)+d)}let b=[...a.entries()].sort((a,b)=>b[1]-a[1])[0];if(b)return{files:c.filter(a=>r(a.relativePath)===b[0]),reason:`需求描述定位到资料组:${b[0]}`,ambiguous:!1}}let g=[...new Set(c.map(a=>r(a.relativePath)).filter(Boolean))];return 1===g.length?{files:c.filter(a=>r(a.relativePath)===g[0]),reason:`知识库单一资料组:${g[0]}`,ambiguous:!1}:{files:c,reason:g.length>1?`未指定资料组,检测到 ${g.length} 个资料组,已阻断生成避免跨项目污染`:"未检测到资料组,使用全部资料",ambiguous:g.length>1}}(c,b),s=m.files,t=function(){let a={};for(let b of h)a[b]=[];return a}(),u=new Map((b?.boundFileRoles||[]).map(a=>[q(a.filePath),a.roles]));for(let a of s){let b=q(a.relativePath),c=[...u.entries()].filter(([a])=>b.endsWith(a)||a.endsWith(b)).flatMap(([,a])=>a);for(let b of[...new Set([...function(a){let b=new Set((0,f.t0)(a,f.hW));return b.add("project_overview"),[...b]}(a.relativePath),...c])])t[b].push({filePath:a.relativePath,fileName:d.basename(a.relativePath),role:b,chunkCount:a.chunkCount})}let v=function(a){let b,c;for(let d of i(a)){let a=k(d);if(/项目|工程/iu.test(a)&&!(a.length<6)){if(/\.\w+$/u.test(d)){b||=a;continue}if(j(a)){c||=a.split(/--/u).filter(a=>/项目|工程/u.test(a)).sort((a,b)=>a.length-b.length)[0]||a;continue}return a}}return b||c||"当前知识库项目"}(s),w=function(a){for(let b of a){let a=b.relativePath.match(/\b\d{4}[A-Z]{2,}\d{4,}\b/u)?.[0];if(a)return a}}(s),x=function(a,b){let c=n(a),d=n(b),e=l(a.map(a=>a.relativePath).join("\n").match(/\b\d{4}[A-Z]{2,}\d{4,}\b/gu)||[]),f=l(a.map(a=>r(a.relativePath)).filter(Boolean)),g=[c.length>0,e.length>0,1===f.length];return{fingerprint:{projectNames:c,documentNos:e,fileGroups:f,confidence:g.filter(Boolean).length/g.length},contaminationCandidates:d.filter(a=>!c.includes(a))}}(s,c),y=function(a){let b=function(a){let b="";for(let c of a)b+=`${c.relativePath}
|
|
118
|
-
`;return b}(a);return{ownerNames:p(b,/(?:责任主体|委托人|客户|甲方|乙方|需求方|服务方|执行方|负责人)[::]?([^\\/\n,,。;;]{2,40})/gu,1),locationNames:p(b,/(?:项目地点|实施地点|服务地点|交付地点|项目地址|执行地点)[::]?([^\\/\n,,。;;]{2,50})/gu,1),scheduleValues:p(b,/(\d+\s*(?:天|周|个月|月|年|小时)|(?:周期|期限|交付|完成)[^\\/\n,,。;;]{0,30})/gu,1),qualityTargets:p(b,/(?:质量(?:标准|目标|要求)?[::]?[^\\/\n,,。;;]{2,40}|合格|优良)/gu,0)}}(s),z=function(a){let b=new Set(g);for(let c of["design_specification","schedule_quality_safety","risk_constraints","resource_recommendation","technical_specification","budget_cost","addendum"])a[c].length>0&&b.add(c);return[...b]}(t),A=z.filter(a=>t[a].length>0),B=z.filter(a=>0===t[a].length);return{projectId:v.replace(/[^a-zA-Z0-9\u4e00-\u9fa5_-]/gu,"-").slice(0,80)||"current-project",projectName:v,generatedAt:Date.now(),fingerprint:x.fingerprint,contaminationCandidates:x.contaminationCandidates,source:{totalFiles:c.length,selectedFiles:s.length,selectionReason:m.reason,ambiguous:m.ambiguous},facts:{projectName:v,documentNo:w,scopeDescriptions:t.scope_description.map(a=>a.fileName.replace(/\.(?:pdf|docx?|xlsx?|xls|dwg)$/iu,"")),professionalScopes:[...new Set(t.scope_description.concat(t.design_specification,t.structured_data).map(a=>a.fileName.replace(/\.(?:pdf|docx?|xlsx?|xls|dwg)$/iu,"")))],scheduleRequirement:t.schedule_quality_safety.length?"已识别周期、质量、安全或合规相关资料,生成时应以需求文件、变更说明和技术要求为准。":void 0,qualityRequirement:t.schedule_quality_safety.length?"已识别质量或评价相关资料。":void 0,safetyRequirement:t.schedule_quality_safety.length?"已识别安全或合规相关资料。":void 0,materialBrandRequirement:t.resource_recommendation.length?"已识别资源、材料、设备或品牌相关资料。":void 0,ownerNames:y.ownerNames,locationNames:y.locationNames,scheduleValues:y.scheduleValues,qualityTargets:y.qualityTargets},materialInventory:t,extractedSections:{projectOverview:`绑定材料组:${v}${w?`,文档/任务编号:${w}`:""}。`,scopeSummary:`范围资料:${o(t.scope_description,"未识别到明确范围资料")}。`,designSummary:`设计/方案/说明资料:${o(t.design_specification,"未识别到设计、方案或说明资料")}。`,structuredDataSummary:`结构化数据资料:${o(t.structured_data,"未识别到表格、列表或明细资料")}。`,scheduleQualitySafetySummary:`周期质量安全资料:${o(t.schedule_quality_safety,"未识别到周期、质量或安全专项资料")}。`,constraintsAndRisks:`约束和风险资料:${o(t.risk_constraints,"未识别到重点难点或约束资料")}。`},coverage:{requiredRoles:z,satisfiedRoles:A,missingRoles:B}}}function t(a){return a.replace(/OCR|识别错误|乱码/giu,"资料文字不清").replace(/知识库|提示词|后台|绑定片段|兜底/gu,"项目资料").replace(/PDF|DWG|Excel|XLSX?|DOCX?/giu,"资料文件")}function u(a,b={}){return b.publicSafe?["## 项目资料事实边界",t(a.extractedSections.projectOverview),`明确事实:责任主体 ${a.facts.ownerNames?.join("、")||"资料未明确"};地点 ${a.facts.locationNames?.join("、")||"资料未明确"};周期 ${a.facts.scheduleValues?.join("、")||"资料未明确"};质量 ${a.facts.qualityTargets?.join("、")||"资料未明确"}。`,t(a.extractedSections.scopeSummary),t(a.extractedSections.structuredDataSummary),t(a.extractedSections.designSummary),t(a.extractedSections.scheduleQualitySafetySummary),t(a.extractedSections.constraintsAndRisks),"仅使用资料中明确、可信的事实;资料未明确的工程实体事实不得推导,允许推导的计划配置类数据须明确标注为计划配置值。"].filter(Boolean).join("\n"):["## 后台绑定材料摘要",a.extractedSections.projectOverview,`材料指纹:对象名候选 ${a.fingerprint.projectNames.join("、")||"无"};编号 ${a.fingerprint.documentNos.join("、")||"无"};资料组 ${a.fingerprint.fileGroups.join("、")||"无"}。`,`内容级事实候选:责任主体 ${a.facts.ownerNames?.join("、")||"无"};地点 ${a.facts.locationNames?.join("、")||"无"};周期 ${a.facts.scheduleValues?.join("、")||"无"};质量 ${a.facts.qualityTargets?.join("、")||"无"}。`,a.extractedSections.scopeSummary,a.extractedSections.structuredDataSummary,a.extractedSections.designSummary,a.extractedSections.scheduleQualitySafetySummary,a.extractedSections.constraintsAndRisks].join("\n")}},91977:(a,b,c)=>{c.d(b,{I2:()=>g,Lk:()=>e,Uy:()=>f});var d=c(70208);function e(a,b){let c=`${a.filePath}
|
|
119
|
-
${a.content}`;return(function(a){let b=a.replace(/要求|计划|目标|标准|内容|信息|事实|依据|参数|范围|要点/gu,"");return[a,b].filter(Boolean)})(b).some(a=>c.includes(a))}function f(a,b){let c=(0,d.effectiveTemplateChapters)(a,b).flatMap(a=>a.requiredFacts).map(a=>({id:a,name:a,required:!0,sourceRoleIds:[],extractionHint:""})),e=b?.factFields.map(a=>({id:a.id,name:a.name,required:a.required,sourceRoleIds:a.sourceRoleIds||[],extractionHint:a.extractionHint||""}))||[],f=new Map;for(let a of[...c,...e])f.set(a.id,{...f.get(a.id)||a,...a,required:a.required||f.get(a.id)?.required||!1});return[...f.values()]}function g(a,b){return(!b.sourceRoleIds?.length||!!(a.roleId&&b.sourceRoleIds.includes(a.roleId)))&&e(a,b.name)}},92808:(a,b,c)=>{c.d(b,{NT:()=>e,Ny:()=>f,hW:()=>g,nt:()=>d,rs:()=>i,t0:()=>h});let d=[{id:"report",label:"报告",patterns:[/报告|调研|分析|评估|研究|复盘|总结/iu],output:["报告"]},{id:"plan",label:"实施方案",patterns:[/方案|规划|计划|预案|路径|路线图/iu],output:["实施方案"]},{id:"standard",label:"规范说明",patterns:[/规范|标准|制度|规则|指南|手册/iu],output:["规范说明"]},{id:"proposal",label:"建议方案",patterns:[/建议|提案|需求|响应|说明书/iu],output:["建议方案"]}],e=[{id:"requirement",label:"需求规则资料",patterns:[/需求|要求|规则|条款|约束|响应|澄清|变更/iu],output:["需求约束","规则要求","变更说明"]},{id:"scope",label:"范围资料",patterns:[/范围|内容|任务|目标|边界|对象|工作内容/iu],output:["实施范围","对象范围"]},{id:"structured-data",label:"结构化数据资料",patterns:[/表格|列表|明细|数量|数据|字段|参数|规格|sheet|table|data/iu],output:["结构化数据范围","参数规格范围"]},{id:"quality",label:"质量评价资料",patterns:[/质量|验收|审核|评审|评价|标准|规范|指标/iu],output:["质量要求","评价标准"]},{id:"schedule",label:"时间进度资料",patterns:[/周期|期限|进度|计划|节点|里程碑|时间|日期/iu],output:["周期要求","进度节点要求"]},{id:"safety",label:"安全合规资料",patterns:[/安全|合规|风险|应急|环保|隐私|审计|控制/iu],output:["安全合规要求","风险控制要求"]},{id:"resource",label:"资源配置资料",patterns:[/资源|人员|设备|材料|品牌|采购|供应|配置/iu],output:["资源配置要求"]},{id:"analysis",label:"分析结论",patterns:[/报告|调研|分析|评估|研究|建议|结论/iu],output:["背景依据","分析结论","风险建议"]}],f=[{id:"overview",label:"概况章节",patterns:[/概况|背景|理解|说明|总则|摘要/iu],output:["对象名称","材料范围","实施范围"]},{id:"implementation",label:"实施章节",patterns:[/方法|部署|实施|范围|组织|流程|步骤/iu],output:["实施范围","对象范围","结构化数据范围"]},{id:"controls",label:"控制章节",patterns:[/质量|周期|进度|安全|合规|验收|审核|评价/iu],output:["质量要求","周期要求","安全合规要求"]},{id:"resources",label:"资源章节",patterns:[/资源|人员|设备|材料|品牌|采购|供应|配置/iu],output:["资源配置要求"]},{id:"risk",label:"风险章节",patterns:[/风险|重点|难点|约束|应急|合规/iu],output:["风险控制要求","风险建议"]}],g=[{id:"requirement",label:"需求规则资料",patterns:[/需求|要求|规则|条款|响应|requirement|rule/iu],output:["requirement_document"]},{id:"change",label:"变更澄清资料",patterns:[/补充|澄清|变更|修订|addendum|change/iu],output:["addendum"]},{id:"structured-data",label:"结构化数据资料",patterns:[/表格|列表|明细|数量|数据|字段|参数|规格|sheet|table|data/iu],output:["structured_data"]},{id:"budget",label:"预算费用资料",patterns:[/预算|费用|金额|报价|限价|成本|price|cost|budget/iu],output:["budget_cost"]},{id:"design",label:"设计方案资料",patterns:[/设计|方案|说明|图像|地图|附件|drawing|image|map|design/iu],output:["design_specification"]},{id:"resource",label:"资源配置资料",patterns:[/资源|人员|设备|材料|品牌|采购|供应|配置/iu],output:["resource_recommendation"]},{id:"schedule-quality-safety",label:"进度质量合规资料",patterns:[/质量|周期|进度|安全|合规|验收|审核|评价|环保|应急/iu],output:["schedule_quality_safety"]},{id:"scope",label:"范围任务资料",patterns:[/范围|内容|任务|目标|边界|对象|工作内容/iu],output:["scope_description"]},{id:"technical",label:"技术标准资料",patterns:[/技术|规范|标准|规程|指南|手册|参数|spec|standard/iu],output:["technical_specification"]},{id:"risk",label:"风险约束资料",patterns:[/风险|重点|难点|约束|限制|现场|条件|应急/iu],output:["risk_constraints"]}];function h(a,b){let c=new Set;for(let d of b)for(let b of d.patterns)if(b.lastIndex=0,b.test(a)){for(let a of d.output)c.add(a);break}return[...c]}function i(a,b){for(let c of b)for(let b of c.patterns)if(b.lastIndex=0,b.test(a))return c.output[0]}},95294:(a,b,c)=>{c.d(b,{MO:()=>B,OK:()=>C,r1:()=>A,uW:()=>d});let d=/(?:确保|保证|达到|满足|符合|不低于|不超过|不得|禁止|严禁|必须|应当|须|应按|执行|遵守|落实|实施|采用|提供|提交|出具|配备|设置|建立|安装|配置|负责|完成|参加|组织|验收|检测|检验|控制|管理|保护|防止|杜绝|承诺|响应|要求|规定|标准|等级|目标|措施|方案|制度|计划|工期|质量|安全)/u,e=/^[((]?[一二三四五六七八九十百\d]{1,3}[、..))]\s*[^\n]{2,60}(?:\.{4,}|…{3,})\s*\d{0,4}\s*$/u,f="专用章|出图|设计研究总院|工程设计(?:甲|乙|丙)级|资质证书|证书编号",g=RegExp(f,"u"),h=RegExp(f,"gu"),i=/R\d{1,4}C\d{1,4}/u,j=/CHECKE|SUBITEM|子项名称/u,k=/^[\d..、()()\s//-]{1,16}$/u,l=/^\d{5,}[\u4e00-\u9fa5]/u,m=/^[1-9]\d?(?:\.\d{1,2}){2,}[^\d\s]{0,4}$/u,n=/^0{3,}[A-Za-z]?$/u,o=/^[1-9]\d?(?:\.\d{1,2}){1,3}[一-龥]{1,4}$/u,p=/(?:米|厘米|毫米|公里|吨|公斤|千克|平方|立方|天|年|月|日|小时|分钟|个|项|套|台|次|份|人|元|万元|度|伏|安|瓦|帕|吨位)$/u,q=/^\d{4}[A-Za-z]{1,8}\d{4,}\.\d+$/u,r=/第页共页|^第?\d*页共\d*页$/u,s=/^(?![MC]\d)(?![Mm][BbSs]?\d)(?![Ll][Cc]?\d)(?![Aa]\d)(?![Dd][Pp]\d)[A-Za-z]{1,4}\d{0,3}\.\d{1,3}$/u,t=/(签章)|\(签章\)|年月日|[::]\s*[//]\s*$/u,u=/^(?:\d{4}年|\d{1,2}月)$/u,v=/\d{4}\.\d{1,2}\.\d{3,}/u,w=/[A-Za-z]{3,}|[A-Za-z]{1,3}\d{2,}|\d{6,}/u,x=/[,。;,;]/u,y=/([一-龥]{2,6})\1/gu,z=/^(?:世世代代|子子孙孙|日日夜夜|风风雨雨|时时刻刻|分分秒秒|形形色色|林林总总|家家户户|前前后后)$/u;function A(a){let b=0;return{text:String(a||"").replace(RegExp(y.source,"gu"),a=>z.test(a)?a:(b+=1,"")),removed:b}}function B(a){let b=String(a||""),c=b.replace(/\s+/gu,"");if(c.length<3)return;let f=d.test(c);return i.test(c)?"sheet_coordinate":j.test(c)&&(!f||/CHECKE|SUBITEM/u.test(c))||function(a){let b=a.split(/\r?\n/u).map(a=>a.trim()).filter(Boolean);return!(b.length<3)&&!(b.filter(a=>a.replace(/\s+/gu,"").length<=8).length<2)&&b.some(a=>k.test(a))}(b)?"table_fragment":(c.match(h)||[]).length>=1&&!f?"drawing_signature":l.test(c)||o.test(c)&&!p.test(c)||q.test(c)?"numeric_smear":r.test(c)?"table_fragment":m.test(c)||n.test(c)||s.test(c)?"numeric_smear":function(a){let b=[];for(let c of String(a||"").matchAll(RegExp(y.source,"gu")))z.test(c[0])||b.push(c[0]);return b}(c).length>0?"duplicated_label":t.test(c)||v.test(c)?"table_fragment":u.test(c)?"date_fragment":e.test(c)?"toc_line":c.length>60&&!x.test(c)&&w.test(c)?"listing_smear":void 0}let C=[e,g,h,i,j,l,m,o,p,q,r,n,s,t,u,v,w,x,3,8,k]},95622:(a,b,c)=>{function d(a,b){let c=b||{},d=(...a)=>{let b=a.find(a=>!!c[a]);return b?String(c[b]).split("(来源")[0].trim():""},e=d("工程名称","项目名称","工程名"),f=d("建设单位","建设单位名称","发包人"),g=d("施工单位","承包单位","承包人"),h=d("建设地点","工程地点","项目地址"),i=d("建设规模","建筑面积","工程规模"),j=[["工程名称",e||a],["建设单位",f],["编制单位",g||f],["建设地点",h],["建设规模",i],["计划工期",d("计划工期","工期","总工期")],["质量标准",d("质量标准","质量目标","质量等级")]].filter(a=>!!a[1]);return['<div class="document-cover">',`# ${a}`,j.length>0?["","| 项目 | 内容 |","| --- | --- |",...j.map(a=>`| ${a[0]} | ${a[1].replace(/\|/gu,"/")} |`)].join("\n"):"","</div>"].filter(Boolean).join("\n")}c.d(b,{_G:()=>q,cM:()=>t,nd:()=>d,u7:()=>r});let e=/([\u3400-\u9fff\u3000-\u303f\uff00-\uffef])[ \u3000]+(?=[\u3400-\u9fff\u3000-\u303f\uff00-\uffef])/gu;function f(a){return(a||"").replace(/\|/gu,"/").replace(e,"$1").trim()}function g(a,b){return[`| ${a.map(f).join(" | ")} |`,`| ${a.map(()=>"---").join(" | ")} |`,...b.map(a=>`| ${a.map(f).join(" | ")} |`)]}function h(a){if("number"==typeof a.quantity&&a.quantity>0)return String(a.quantity);let{min:b,max:c}=a;return"number"==typeof b&&"number"==typeof c?b===c?String(b):`${b}-${c}`:"number"==typeof b?String(b):"number"==typeof c?String(c):""}let i=["序号","设备名称","型号规格","数量","国别产地","制造年份","额定功率(kW)","生产能力","用于施工部位","备注"],j=["序号","仪器设备名称","型号规格","数量","国别产地","制造年份","已使用台时数","用途","备注"],k=["用途","面积(平方米)","位置","需用时间"],l=["工序","持续天数","起止天序","关键线路","说明"],m=["设施","面积(平方米)","位置","说明"];function n(a,b){let c=a.map((a,c)=>b.every(a=>""!==String(a[c]??"").trim()&&"—"!==String(a[c]??"").trim()));return{header:a.filter((a,b)=>c[b]),rows:b.map(a=>a.filter((a,b)=>c[b]))}}let o=[{pattern:/工种构成唯一口径[::]?按工种工程量区间中值比例收敛[((][^))]*[))]/gu,replace:"按工种工程量比例配置"},{pattern:/阶段条目工程量约\s*[\d.]+\s*[^\s×]*\s*×\s*经验工效区间\s*÷\s*阶段\s*\d+\s*天[((][^))]*封顶[))]/gu,replace:"按本阶段工程量及劳动力需用量测算"},{pattern:/工种工程量约\s*[\d.]+\s*[^\s×]*\s*×\s*经验工效区间\s*÷\s*工期\s*\d+\s*天[((][^))]*[))]/gu,replace:"按工种工程量及劳动力需用量测算"},{pattern:/工种工程量约\s*[\d.]+\s*[^\s×]*\s*×\s*定额工效[^÷]*÷\s*工期\s*\d+\s*天[((][^))]*[))]/gu,replace:"按工种工程量及定额工效测算"},{pattern:/[;;]\s*相关条目工程量合计约\s*[\d.]+\s*\S*/gu,replace:""},{pattern:/[((]清单(?:特征|条目)[))]/gu,replace:""},{pattern:/各工种人数区间之和\s*[\d.]+~[\d.]+\s*人[((][^))]*[))]/gu,replace:"按各工种配置人数合计测算"},{pattern:/[((]定额工效知识不全[^))]*[))]/gu,replace:""},{pattern:/[((]定额知识库命中[))]/gu,replace:""}],p=[{pattern:/[;,,]?\s*相关内容纳入施工组织设计与作业流程管理[^。\n]*。?/gu,replace:""},{pattern:/[;,,]?\s*[^。;\n]{0,40}(?:资料员|测量员|施工员|质检员|安全员|材料员|技术员|试验员|预算员|机械员|监理员)[^。;\n]{0,40}(?:每日|每周|每月|每班|定期)[^。;\n]{0,40}。?/gu,replace:""}];function q(a){let b=a.search(/^##\s*附表/mu);if(b<0)return a;let c=a.slice(0,b),d=a.slice(b);for(let a of(d=d.split("\n").map(a=>/^#{1,6}\s/u.test(a.trim())?a:a.replace(e,"$1")).join("\n"),o))d=d.replace(a.pattern,a.replace);for(let a of p)d=d.replace(a.pattern,a.replace);return c+(d=(d=d.replace(/^>\s*$/gmu,"")).replace(/\n{3,}/gu,`
|
|
120
|
-
|
|
121
|
-
`))}function r(a,b){if(!b||0===b.plan.length||b.plan.some(b=>a.includes(`## ${b.title}`)))return a;let c=function(a,b){let c=[];for(let d of a){let a=function(a,b){switch(a.dataSource){case"blueprint.equipment":let c=b?.resources?.equipment||[];if(0===c.length)return"";let d=(a,b)=>{let c=a.attributes;if(!c)return"";let d=b.replace(/[((].*$/u,"").trim();for(let[a,b]of Object.entries(c))if(b&&(a===d||a.includes(d)||d.includes(a)))return b;return""},e=n(i,c.map((a,b)=>[String(b+1),a.name,a.spec||d(a,"型号规格"),h(a),d(a,"国别产地"),d(a,"制造年份"),d(a,"额定功率"),d(a,"生产能力"),d(a,"用于施工部位"),a.basis||""]));return g(e.header,e.rows);case"blueprint.labor":return function(a){let b=a?.resources?.labor?.composition||[],c=a?.resources?.labor?.byPhase||[];if(0===b.length&&0===c.length)return"";let d=[];if(b.length>0){let a=n(["工种","人数","备注"],b.map(a=>[a.trade,String(a.count),a.basis||""]));d.push("**(一)劳动力工种配置**","",...g(a.header,a.rows))}if(c.length>0){d.length>0&&d.push("");let a=n(["施工阶段","人数","备注"],c.map(a=>[a.phase,h(a),a.basis||""]));d.push("**(二)分阶段劳动力投入计划**","",...g(a.header,a.rows))}return d}(b);case"blueprint.testInstruments":let f=b?.testInstruments||[];if(0===f.length)return"";let o=n(j,f.map((a,b)=>[String(b+1),a.name,a.spec||"",h(a),"","","",a.purpose||"",a.basis||""]));return g(o.header,o.rows);case"blueprint.schedule":let p=b?.schedule||[];if(0===p.length)return"";let q=n(l,p.map(a=>[a.label,String(a.duration),`第${a.startDay}~${a.endDay}天`,a.critical?"关键线路":"非关键线路",a.basis||""]));return g(q.header,q.rows);case"blueprint.tempLand":return"figure"===a.kind?function(a){let b=a?.tempLand||[];if(0===b.length)return"";let c=n(m,b.map(a=>[a.purpose,"number"==typeof a.area?String(a.area):"",a.location||"",a.note||""]));return g(c.header,c.rows)}(b):function(a){let b=a?.tempLand||[];if(0===b.length)return"";let c=n(k,b.map(a=>[a.purpose,"number"==typeof a.area?String(a.area):"",a.location||"",a.duration||""]));return g(c.header,c.rows)}(b);default:if("figure"===a.kind)return"";return["> 本附表按招标文件规定的格式与内容要求编制。"]}}(d,b);a&&a.length>0&&c.push([`## ${d.title}`,"",...a].join("\n"))}return 0===c.length?"":q(c.join(`
|
|
122
|
-
|
|
123
|
-
`))}(b.plan,b.blueprintData);return c?`${a.replace(/\s+$/u,"")}
|
|
124
|
-
|
|
125
|
-
<div class="page-break"></div>
|
|
126
|
-
|
|
127
|
-
${c}
|
|
128
|
-
`:a}let s=/^>\s*本表为[^\n]*(?:表头格式|格式与内容要求)[^\n]*编制/mu;function t(a,b){let c=`## ${b.title}`,d=a.indexOf(c);if(d<0)return!1;let e=a.slice(d+c.length),f=e.search(/(?=^##\s)/mu),g=(f>=0?e.slice(0,f):e).trim();return!(!g||s.test(g))&&function(a){let b=!1,c=0;for(let d of a.split("\n")){let a=d.trim();if(!a.startsWith("|")){b=!1;continue}if(!b){b=!0;continue}let e=a.replace(/^\|/u,"").replace(/\|$/u,"").split("|").map(a=>a.trim());!e.every(a=>/^:?-{2,}:?$/u.test(a))&&e.filter(a=>a&&"—"!==a&&"-"!==a).length>=2&&(c+=1)}return c}(g)>=2}},95734:(a,b,c)=>{c.d(b,{CX:()=>y,Jx:()=>C,Qf:()=>o,Sq:()=>w,bb:()=>H,nz:()=>x,rI:()=>A,t5:()=>p});var d=c(95393),e=c(96770),f=c(29281),g=c(22157),h=c(80572);let i=new Map,j=0,k=0,l=(0,h.z)().llmMaxConcurrency,m=Number.isFinite(l)?0===l?1/0:l>0?Math.floor(l):void 0:void 0,n=m??1/0;function o(a){return n}function p(a){return n=m??1/0}let q=[];function r(){j=Math.max(0,j-1);let a=q.shift();a&&!a.settled&&(a.settled=!0,j+=1,a.resolve(r))}let s=[],t=null,u=new Set,v=(()=>{let a=Number(process.env.DOCUMENT_PREFIX_SCHEDULE_WINDOW_MS);return Number.isFinite(a)&&a>=0?Math.floor(a):void 0})();function w(){return n}function x(a){let b=a instanceof Error?`${a.name} ${a.message}`:String(a);return/maximum context length|context ?length|context ?window|too many tokens|input.{0,24}too long|prompt.{0,24}too long|请求.{0,16}(超长|过长|超出)|上下文.{0,16}(超长|超出|过长|窗口)/iu.test(b)||/400/u.test(b)&&/context|too ?long|token|length|上下文/iu.test(b)||/JSON.{0,10}被截断|JSON.{0,10}未闭合/iu.test(b)}function y(a){return a.filter(a=>!!a).reduce((a,b)=>a+b.length,0)}function z(a,b){let c=a.llm.callBreakdown??(a.llm.callBreakdown={}),d=b||"(none)";return c[d]??(c[d]={calls:0,inputChars:0,l3Chars:0,cacheHitTokens:0,cacheMissTokens:0})}async function A(a,b,c=!1,h={}){var l;if(h.diagnostics){h.diagnostics.llm.calls+=1,h.diagnostics.llm.inputChars=(h.diagnostics.llm.inputChars||0)+a.length+b.length;let c=z(h.diagnostics,h.prefixKey);if(c.calls+=1,c.inputChars+=a.length+b.length,c.l3Chars+=h.contextLayers?.l3||0,h.contextLayers){let a=h.diagnostics.llm.layerChars??(h.diagnostics.llm.layerChars={l0:0,l1:0,l2:0,l3:0});a.l0+=h.contextLayers.l0||0,a.l1+=h.contextLayers.l1||0,a.l2+=h.contextLayers.l2||0,a.l3+=h.contextLayers.l3||0}else h.diagnostics.llm.unlayeredChars=(h.diagnostics.llm.unlayeredChars||0)+a.length+b.length}let m=await (l=h.signal,new Promise((a,b)=>{if(j<n){j+=1,a(r);return}let c={resolve:a,reject:b,settled:!1};q.push(c);let d=()=>{if(c.settled)return;c.settled=!0;let a=q.indexOf(c);a>=0&&q.splice(a,1),b(Error("用户中止"))};if(l){if(l.aborted)return void d();l.addEventListener("abort",d,{once:!0})}}));h.diagnostics&&(h.diagnostics.llm.maxActive=Math.max(h.diagnostics.llm.maxActive,j));try{let l,m=function(){let a=(0,f.I)().load(),b=a.models.reasoning.active||a.models.action.active||a.models.reader.active,c=[...a.models.reasoning.list,...a.models.action.list,...a.models.reader.list].find(a=>a.name===b);if(!c)return;let d=a.providers[c.provider];if(d)return{model:c,provider:d}}();if(!m)return;let{model:n,provider:o}=m,p=(0,g.c6)({provider:n.provider,model:n.name,baseUrl:o.baseUrl,directEndpoint:o.directEndpoint,protocol:o.protocol,apiKeyHash:o.apiKey?(0,g.c6)(o.apiKey):""}),q=i.get(p);q||(q=(0,d.createProvider)(function(a,b){let c=(0,e.resolveProtocol)(a,b);return"anthropic"===c?"anthropic":"google"===c?"google":"ollama"===c?"ollama":"openrouter"===c?"openrouter":/deepseek/iu.test(a)?"deepseek":"openai"}(n.provider,o),{baseUrl:o.baseUrl,apiKey:o.apiKey,modelName:n.name,directEndpoint:o.directEndpoint}),i.set(p,q));let r=n.name.toLowerCase(),w=function(a,b,c){let e=(0,d.thinkingCapabilityForModel)(b);return"disabled"===c?e&&"unsupported"!==e.disable?{disableThinking:!0,budgetMode:"compact"}:{disableThinking:!1,budgetMode:e?.budgetPolicy==="shared"?"relaxed":"compact",warning:`当前模型 ${b} 思考不可关闭(厂商限制),已忽略“强制关闭思考”配置;建议切换 deepseek 或 gpt 系列模型`}:"enabled"!==c&&"structuredGeneration"===a&&e?"unsupported"===e.disable?{disableThinking:!1,budgetMode:"shared"===e.budgetPolicy?"relaxed":"compact",warning:`当前模型 ${b} 思考不可关闭(厂商限制),生成耗时受限;建议切换 deepseek 或 gpt 系列模型`}:{disableThinking:!0,budgetMode:"compact"}:{disableThinking:!1,budgetMode:"compact"}}(h.taskKind??"structuredGeneration",r,n.thinking);w.warning&&h.diagnostics&&!h.diagnostics.llm.thinkingWarning&&(h.diagnostics.llm.thinkingWarning=w.warning);let x=q.capabilities?.maxOutputTokens||8192,y=/deepseek/iu.test(r)?Math.min(x,8192):x,A="relaxed"===w.budgetMode&&h.maxTokens?Math.min(Math.ceil(6*h.maxTokens),y):h.maxTokens,B=Symbol("empty-content"),C=async(d,e=!1)=>{var f,i;if(h.signal?.aborted)throw Error("用户中止");let l=(f=k)<3?0:f<6?2e4:f<10?45e3:6e4;if(l>0){let a=l+Math.floor(5e3*Math.random());h.diagnostics&&(h.diagnostics.llm.emptyStormWaits=(h.diagnostics.llm.emptyStormWaits||0)+1,h.diagnostics.llm.lastInfo=`空响应风暴长退避 ${Math.round(a/1e3)}s(连续空响应 ${k} 次)`),await (i=h.signal,new Promise((b,c)=>{if(i?.aborted)return void c(Error("用户中止"));let d=()=>{clearTimeout(e),c(Error("用户中止"))},e=setTimeout(()=>{i?.removeEventListener("abort",d),b()},a);i?.addEventListener("abort",d,{once:!0})}))}let m=h.signal,n=h.prefixKey||(0,g.c6)(`${a}
|
|
129
|
-
${b.slice(0,2e3)}`),o=(()=>{let d=h.contextLayers?.l3||0;if(d<=0||d>=b.length)return;let e=c?`${a}
|
|
130
|
-
只返回 JSON,不要返回 markdown。`:a,f=b.slice(0,b.length-d);if(!(f.length<500))return{warmupKey:(0,g.c6)(`${e}
|
|
131
|
-
${f}`),warmup:()=>{let a=h.diagnostics?z(h.diagnostics,h.prefixKey):void 0;return a&&(a.calls+=1,a.inputChars+=e.length+f.length),q.chat([{role:"system",content:e},{role:"user",content:f}],{temperature:0,maxTokens:1,signal:m,disableThinking:w.disableThinking}).then(b=>{a&&b.usage&&(a.cacheHitTokens+=b.usage.promptCacheHitTokens||0,a.cacheMissTokens+=b.usage.promptCacheMissTokens||0)}).then(()=>void 0)}}})(),p=await new Promise((f,g)=>{!function(a,b,c,d){var e;let f=(e=j,void 0!==v?v:e>=16?500:120);if(f<=0)return b();s.push({fingerprint:a,launch:b,warmup:c,warmupKey:d}),t||(t=setTimeout(()=>{t=null;let a=s;s=[],function(a){let b=[...a].sort((a,b)=>a.fingerprint<b.fingerprint?-1:+(a.fingerprint>b.fingerprint)),c=[];for(let a of b){let b=c[c.length-1];b&&b[0].fingerprint===a.fingerprint?b.push(a):c.push([a])}for(let a of c)try{let b=a.find(a=>a.warmup&&a.warmupKey),c="0"!==process.env.DOCUMENT_PREFIX_WARMUP&&a.length>=2&&b?.warmup&&b.warmupKey&&!u.has(b.warmupKey),d=!1,e=()=>{if(!d)for(let b of(d=!0,a))try{b.launch()}catch(a){console.error("[llm] 调度发射单条异常:",a)}};if(!c){e();continue}let f=b.warmupKey;u.add(f);let g=setTimeout(()=>{u.delete(f),e()},3e4),h=a=>{clearTimeout(g),a&&u.delete(f),e()};(()=>{try{return b.warmup()}catch(a){return Promise.reject(a)}})().then(()=>h(!1)).catch(()=>h(!0))}catch(a){console.error("[llm] 调度发射组级异常:",a)}}(a)},f))}(n,()=>{if(h.signal?.aborted)return void g(Error("用户中止"));q.chat([{role:"system",content:c?`${a}
|
|
132
|
-
只返回 JSON,不要返回 markdown。`:a},{role:"user",content:e?`${b}
|
|
133
|
-
|
|
134
|
-
(重要:缩短思考过程,直接给出最终结论。)`:b}],{temperature:h.temperature??0,maxTokens:d,signal:m,disableThinking:w.disableThinking}).then(f).catch(a=>{g(a instanceof Error?a:Error(String(a)))})},o?.warmup,o?.warmupKey)}),r=p.content?.trim()??"";if(r){if(h.diagnostics&&p.usage){let a=h.diagnostics.llm;a.inputTokens=(a.inputTokens||0)+p.usage.promptTokens,a.outputTokens=(a.outputTokens||0)+p.usage.completionTokens,a.promptCacheHitTokens=(a.promptCacheHitTokens||0)+(p.usage.promptCacheHitTokens||0),a.promptCacheMissTokens=(a.promptCacheMissTokens||0)+(p.usage.promptCacheMissTokens||0);let b=z(h.diagnostics,h.prefixKey);b.cacheHitTokens+=p.usage.promptCacheHitTokens||0,b.cacheMissTokens+=p.usage.promptCacheMissTokens||0,p.usage.reasoningTokens&&(a.reasoningTokens=(a.reasoningTokens||0)+p.usage.reasoningTokens)}return k=0,r}throw B};for(let a=0;a<=1;a+=1){if(h.signal?.aborted)throw Error("用户中止");try{let b=1===a&&l===B,c=await C(A,b);return h.diagnostics&&(h.diagnostics.llm.failureStreak=0),c}catch(b){if(l=b,b===B&&(k+=1),h.signal?.aborted)throw Error("用户中止",{cause:b});if(b!==B&&!function(a){let b=a instanceof Error?`${a.name} ${a.message}`:String(a);return/connection error|econnrefused|econnreset|fetch failed|network|socket|eai_again|enotfound|etimedout|429|502|503|504|rate ?limit|too many requests|overloaded|服务繁忙|连接失败|abort|timeout|timed ?out|terminated/iu.test(b)}(b)||a>=1)break;h.diagnostics&&(h.diagnostics.llm.retries+=1),await new Promise(c=>{setTimeout(c,function(a,b=0){return"0"!==process.env.DOCUMENT_LLM_RETRY_BACKOFF&&a&&function(a){let b=a instanceof Error?`${a.name} ${a.message}`:String(a);return/503|overloaded|服务繁忙/iu.test(b)}(a)?Math.min(3e4,2e3*2**Math.max(0,b))+Math.floor(1e3*Math.random()):1200+Math.floor(800*Math.random())}(b,a))})}}h.diagnostics&&(h.diagnostics.llm.failures+=1,h.diagnostics.llm.failureStreak=(h.diagnostics.llm.failureStreak||0)+1,h.diagnostics.llm.lastError=l instanceof Error?l.message:l===B?"空响应(思考阶段耗尽输出预算)":String(l));return}finally{m()}}function B(a){let b=a.trim(),c=b.match(/^```(?:json)?\s*([\s\S]*?)\s*```$/iu)?.[1]?.trim();if(c)return c;let d=b.indexOf("{"),e=b.lastIndexOf("}"),f=b.indexOf("["),g=b.lastIndexOf("]"),h=d>=0&&e>d?b.slice(d,e+1):"",i=f>=0&&g>f?b.slice(f,g+1):"";return h&&(!i||d<=f)?h:i||b}function C(a,b,c){if("object"!=typeof a||null===a||Array.isArray(a))return[`根节点类型错误(期望 object,得到 ${null===a?"null":Array.isArray(a)?"array":typeof a})`];let d=[];for(let c of b.required||[])c in a||d.push(`缺失字段 $.${c}`);for(let[e,f]of Object.entries(b.properties)){let b=a[e];if(void 0===b){f.required&&d.push(`缺失字段 $.${e}`);continue}d.push(...function a(b,c,d,e){let f=Array.isArray(b)?"array":null===b?"null":typeof b;if("number"===c.type&&"string"===f){let a=String(b).trim(),c=Number(a);""!==a&&Number.isFinite(c)&&(f="number")}if(f!==c.type)return[`字段 ${d} 类型错误(期望 ${c.type},得到 ${Array.isArray(b)?"array":null===b?"null":typeof b})`];let g=[];if("string"===c.type)void 0!==c.minLength&&b.length<c.minLength&&g.push(`字段 ${d} 长度不足(期望 ≥${c.minLength},得到 ${b.length})`),void 0!==c.maxLength&&b.length>c.maxLength&&g.push(`字段 ${d} 长度超限(期望 ≤${c.maxLength},得到 ${b.length})`);else if("array"===c.type)void 0!==c.minItems&&b.length<c.minItems&&g.push(`字段 ${d} 条数不足(期望 ≥${c.minItems},得到 ${b.length})`),void 0!==c.maxItems&&b.length>c.maxItems&&(e?.push({path:d,maxItems:c.maxItems,originalLength:b.length}),b.splice(c.maxItems)),c.items&&b.forEach((b,f)=>g.push(...a(b,c.items,`${d}[${f}]`,e)));else if("object"===c.type){if(void 0!==c.minProperties){let a=Object.keys(b).filter(a=>void 0!==b[a]&&null!==b[a]).length;a<c.minProperties&&g.push(`字段 ${d} 键数不足(期望 ≥${c.minProperties},得到 ${a})`)}if(!c.properties)return g;for(let[f,h]of Object.entries(c.properties)){let c=b[f];if(void 0===c){h.required&&g.push(`缺失字段 ${d}.${f}`);continue}g.push(...a(c,h,`${d}.${f}`,e))}}return g}(b,f,`$.${e}`,c))}return d.slice(0,6)}function D(a,b,c){if(!a)return;a.llm.schemaFailures=(a.llm.schemaFailures||0)+1,a.llm.lastError=b;let d=z(a,c);d.schemaFailures=(d.schemaFailures||0)+1}function E(a,b){a&&0!==b.length&&(a.llm.lastInfo=`JSON Schema 截断式校验:${b.slice(0,4).map(a=>`${a.path} ${a.originalLength} 条超上限 ${a.maxItems},已截断保留前 ${a.maxItems} 条`).join(";")}`)}function F(a){return Math.ceil(1.5*(a||2e3))}async function G(a,b,c={},d){let e,f=c.maxTokens,g=d??((a,b)=>A(a,b,!0,{maxTokens:f,temperature:c.temperature,signal:c.signal,diagnostics:c.diagnostics,taskKind:c.taskKind,contextLayers:c.contextLayers,prefixKey:c.prefixKey}));for(let d=0;d<=2&&!c.signal?.aborted;d+=1){let h=0===d?b:`${b}
|
|
135
|
-
|
|
136
|
-
(重试修正:上一次输出未通过——${e??"输出无效"}。请重新输出完整合法的 JSON,只返回 JSON。)`,i=await g(a,h);if(!i){c.outFailure&&c.diagnostics?.llm.lastError&&(c.outFailure.value=c.diagnostics.llm.lastError);break}let j=B(i);try{let a=JSON.parse(j);if(c.schema){let b=[],g=C(a,c.schema,b);if(E(c.diagnostics,b),g.length>0){let a=`JSON Schema 校验失败:${g.join(";")}`;if(e=a,D(c.diagnostics,a,c.prefixKey),a.includes("缺失字段")&&(f=F(f)),d>=2){c.outFailure&&(c.outFailure.value=a);return}continue}}return a}catch{let a=function(a){let b=a.trim(),c=b.match(/^```(?:json)?\s*([\s\S]*?)\s*```$/iu)?.[1]?.trim()??b,d=c.indexOf("{"),e=c.indexOf("["),f=d<0?e:e<0?d:Math.min(d,e);if(f<0)return;let g=c.slice(f),h=[],i=!1,j=!1,k=[];for(let a=0;a<g.length;a+=1){let b=g[a];if(i){j?j=!1:"\\"===b?j=!0:'"'===b&&(i=!1);continue}if('"'===b){i=!0;continue}if("{"===b||"["===b){h.push("{"===b?"object":"array");continue}if("}"===b||"]"===b){h.pop();continue}","===b&&(k[h.length-1]=a)}if(0===h.length)return;let l=-1;for(let a=h.length-1;a>=0;a-=1)if(void 0!==k[a]){l=a;break}if(l<0)return;let m=k[l],n=g.slice(0,m),o=[];for(let a=l;a>=0;a-=1)o.push("object"===h[a]?"}":"]");let p=`${n}${o.join("")}`;try{return JSON.parse(p),p}catch{return}}(i);if(a)try{let b=JSON.parse(a);if(c.schema){let a=[],g=C(b,c.schema,a);if(E(c.diagnostics,a),0===g.length)return b;let h=`JSON Schema 校验失败:${g.join(";")}`;if(e=h,D(c.diagnostics,h,c.prefixKey),h.includes("缺失字段")&&(f=F(f)),d>=2){c.outFailure&&(c.outFailure.value=h);return}continue}return b}catch{}let b=`JSON 解析失败:${function(a){let b=B(a),c=(b.match(/\{/gu)||[]).length-(b.match(/\}/gu)||[]).length,d=(b.match(/\[/gu)||[]).length-(b.match(/\]/gu)||[]).length,e=b.slice(-80).replace(/\s+/gu," ");return c>0||d>0?`JSON 被截断({ 未闭合 ${c} 个、[ 未闭合 ${d} 个),截断位置响应末段:${e}`:`JSON 语法错误,出错位置响应末段:${e}`}(j)}`;if(e=b,/JSON 被截断/u.test(b)&&(f=F(f)),D(c.diagnostics,b,c.prefixKey),d>=2){c.outFailure&&(c.outFailure.value=b);return}continue}}}async function H(a,b,c={}){return G(a,b,c)}}};
|