@customize-agent/server 4.60.34 → 4.60.36

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (341) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +197 -297
  3. package/.next/prerender-manifest.json +3 -3
  4. package/.next/required-server-files.json +3 -7
  5. package/.next/routes-manifest.json +19 -30
  6. package/.next/server/chunks/{8645.js → 1026.js} +1 -1
  7. package/.next/server/chunks/1146.js +1 -0
  8. package/.next/server/chunks/1547.js +385 -0
  9. package/.next/server/chunks/3074.js +1 -0
  10. package/.next/server/chunks/3750.js +2 -0
  11. package/.next/server/chunks/407.js +1 -0
  12. package/.next/server/chunks/5037.js +46 -0
  13. package/.next/server/chunks/5304.js +2 -2
  14. package/.next/server/chunks/5599.js +1 -0
  15. package/.next/server/chunks/5763.js +159 -0
  16. package/.next/server/chunks/6138.js +5 -0
  17. package/.next/server/chunks/6355.js +1 -0
  18. package/.next/server/chunks/6822.js +1 -1
  19. package/.next/server/chunks/702.js +3 -0
  20. package/.next/server/chunks/7296.js +1 -0
  21. package/.next/server/chunks/8176.js +1 -0
  22. package/.next/server/chunks/8204.js +1 -1
  23. package/.next/server/chunks/8459.js +11 -0
  24. package/.next/server/chunks/8570.js +1 -0
  25. package/.next/server/chunks/9270.js +1 -0
  26. package/.next/server/chunks/9283.js +7 -0
  27. package/.next/server/chunks/9301.js +2 -2
  28. package/.next/server/chunks/9522.js +5 -0
  29. package/.next/server/chunks/9559.js +1 -0
  30. package/.next/server/chunks/9688.js +10 -0
  31. package/.next/server/middleware-build-manifest.js +1 -1
  32. package/.next/server/pages/404.html +1 -1
  33. package/.next/server/pages/500.html +1 -1
  34. package/.next/server/pages/_app.js +1 -1
  35. package/.next/server/pages/_app.js.nft.json +1 -1
  36. package/.next/server/pages/_document.js +1 -1
  37. package/.next/server/pages/_document.js.nft.json +1 -1
  38. package/.next/server/pages/_error.js +1 -1
  39. package/.next/server/pages/_error.js.nft.json +1 -1
  40. package/.next/server/pages/api/assets/generated/preview.js +2 -1
  41. package/.next/server/pages/api/assets/generated/preview.js.nft.json +1 -1
  42. package/.next/server/pages/api/assets/generated.js +2 -1
  43. package/.next/server/pages/api/assets/generated.js.nft.json +1 -1
  44. package/.next/server/pages/api/config/embedding/healthCheck.js +2 -3
  45. package/.next/server/pages/api/config/embedding/healthCheck.js.nft.json +1 -1
  46. package/.next/server/pages/api/config/embedding.js +2 -3
  47. package/.next/server/pages/api/config/embedding.js.nft.json +1 -1
  48. package/.next/server/pages/api/config/healthCheck.js +2 -3
  49. package/.next/server/pages/api/config/healthCheck.js.nft.json +1 -1
  50. package/.next/server/pages/api/config/models.js +2 -3
  51. package/.next/server/pages/api/config/models.js.nft.json +1 -1
  52. package/.next/server/pages/api/config/providers/[provider].js +2 -3
  53. package/.next/server/pages/api/config/providers/[provider].js.nft.json +1 -1
  54. package/.next/server/pages/api/config/providers.js +2 -3
  55. package/.next/server/pages/api/config/providers.js.nft.json +1 -1
  56. package/.next/server/pages/api/config/reset.js +2 -3
  57. package/.next/server/pages/api/config/reset.js.nft.json +1 -1
  58. package/.next/server/pages/api/config/web-access.js +2 -3
  59. package/.next/server/pages/api/config/web-access.js.nft.json +1 -1
  60. package/.next/server/pages/api/documents/canvas/[id].js +2 -1
  61. package/.next/server/pages/api/documents/canvas/[id].js.nft.json +1 -1
  62. package/.next/server/pages/api/documents/delivery-review.js +2 -0
  63. package/.next/server/pages/api/documents/delivery-review.js.nft.json +1 -0
  64. package/.next/server/pages/api/documents/export.js +5 -2
  65. package/.next/server/pages/api/documents/export.js.nft.json +1 -1
  66. package/.next/server/pages/api/documents/generate/preview.js +6 -1
  67. package/.next/server/pages/api/documents/generate/preview.js.nft.json +1 -1
  68. package/.next/server/pages/api/documents/generate.js +2 -1
  69. package/.next/server/pages/api/documents/generate.js.nft.json +1 -1
  70. package/.next/server/pages/api/documents/generated/[id]/events.js +4 -3
  71. package/.next/server/pages/api/documents/generated/[id]/events.js.nft.json +1 -1
  72. package/.next/server/pages/api/documents/generated/[id]/figure/[name].js +2 -1
  73. package/.next/server/pages/api/documents/generated/[id]/figure/[name].js.nft.json +1 -1
  74. package/.next/server/pages/api/documents/generated/[id]/instruction.js +4 -2
  75. package/.next/server/pages/api/documents/generated/[id]/instruction.js.nft.json +1 -1
  76. package/.next/server/pages/api/documents/generated/[id]/messages.js +2 -0
  77. package/.next/server/pages/api/documents/generated/[id]/messages.js.nft.json +1 -0
  78. package/.next/server/pages/api/documents/generated/[id]/nodes/[nodeId].js +2 -1
  79. package/.next/server/pages/api/documents/generated/[id]/nodes/[nodeId].js.nft.json +1 -1
  80. package/.next/server/pages/api/documents/generated/[id]/nodes.js +2 -1
  81. package/.next/server/pages/api/documents/generated/[id]/nodes.js.nft.json +1 -1
  82. package/.next/server/pages/api/documents/generated/[id]/pause.js +2 -1
  83. package/.next/server/pages/api/documents/generated/[id]/pause.js.nft.json +1 -1
  84. package/.next/server/pages/api/documents/generated/[id]/preview.js +2 -1
  85. package/.next/server/pages/api/documents/generated/[id]/preview.js.nft.json +1 -1
  86. package/.next/server/pages/api/documents/generated/[id]/repair/[rid]/confirm.js +2 -1
  87. package/.next/server/pages/api/documents/generated/[id]/repair/[rid]/confirm.js.nft.json +1 -1
  88. package/.next/server/pages/api/documents/generated/[id]/repair/[rid]/rollback.js +2 -1
  89. package/.next/server/pages/api/documents/generated/[id]/repair/[rid]/rollback.js.nft.json +1 -1
  90. package/.next/server/pages/api/documents/generated/[id]/repair.js +2 -1
  91. package/.next/server/pages/api/documents/generated/[id]/repair.js.nft.json +1 -1
  92. package/.next/server/pages/api/documents/generated/[id]/report.js +2 -1
  93. package/.next/server/pages/api/documents/generated/[id]/report.js.nft.json +1 -1
  94. package/.next/server/pages/api/documents/generated/[id]/resume-generate.js +2 -1
  95. package/.next/server/pages/api/documents/generated/[id]/resume-generate.js.nft.json +1 -1
  96. package/.next/server/pages/api/documents/generated/[id].js +2 -1
  97. package/.next/server/pages/api/documents/generated/[id].js.nft.json +1 -1
  98. package/.next/server/pages/api/documents/generated.js +2 -1
  99. package/.next/server/pages/api/documents/generated.js.nft.json +1 -1
  100. package/.next/server/pages/api/health.js +1 -1
  101. package/.next/server/pages/api/health.js.nft.json +1 -1
  102. package/.next/server/pages/api/jobs/[id].js +2 -2
  103. package/.next/server/pages/api/jobs/[id].js.nft.json +1 -1
  104. package/.next/server/pages/api/kb/categories.js +2 -1
  105. package/.next/server/pages/api/kb/categories.js.nft.json +1 -1
  106. package/.next/server/pages/api/kb/duplicates.js +2 -1
  107. package/.next/server/pages/api/kb/duplicates.js.nft.json +1 -1
  108. package/.next/server/pages/api/kb/features.js +2 -3
  109. package/.next/server/pages/api/kb/features.js.nft.json +1 -1
  110. package/.next/server/pages/api/kb/files/detail.js +2 -1
  111. package/.next/server/pages/api/kb/files/detail.js.nft.json +1 -1
  112. package/.next/server/pages/api/kb/files/export.js +2 -1
  113. package/.next/server/pages/api/kb/files/export.js.nft.json +1 -1
  114. package/.next/server/pages/api/kb/files/open.js +2 -1
  115. package/.next/server/pages/api/kb/files/open.js.nft.json +1 -1
  116. package/.next/server/pages/api/kb/files/preview-pdf-page.js +2 -1
  117. package/.next/server/pages/api/kb/files/preview-pdf-page.js.nft.json +1 -1
  118. package/.next/server/pages/api/kb/files/reindex.js +1 -2
  119. package/.next/server/pages/api/kb/files/reindex.js.nft.json +1 -1
  120. package/.next/server/pages/api/kb/files/search.js +2 -1
  121. package/.next/server/pages/api/kb/files/search.js.nft.json +1 -1
  122. package/.next/server/pages/api/kb/files/source-preview.js +2 -1
  123. package/.next/server/pages/api/kb/files/source-preview.js.nft.json +1 -1
  124. package/.next/server/pages/api/kb/files.js +2 -2
  125. package/.next/server/pages/api/kb/files.js.nft.json +1 -1
  126. package/.next/server/pages/api/kb/ignore.js +2 -1
  127. package/.next/server/pages/api/kb/ignore.js.nft.json +1 -1
  128. package/.next/server/pages/api/kb/material-groups.js +2 -1
  129. package/.next/server/pages/api/kb/material-groups.js.nft.json +1 -1
  130. package/.next/server/pages/api/kb/operations.js +2 -2
  131. package/.next/server/pages/api/kb/operations.js.nft.json +1 -1
  132. package/.next/server/pages/api/kb/reindex.js +1 -2
  133. package/.next/server/pages/api/kb/reindex.js.nft.json +1 -1
  134. package/.next/server/pages/api/kb/stats.js +2 -1
  135. package/.next/server/pages/api/kb/stats.js.nft.json +1 -1
  136. package/.next/server/pages/api/kb/tags.js +2 -1
  137. package/.next/server/pages/api/kb/tags.js.nft.json +1 -1
  138. package/.next/server/pages/api/kb/upload/complete.js +1 -2
  139. package/.next/server/pages/api/kb/upload/complete.js.nft.json +1 -1
  140. package/.next/server/pages/api/kb/upload.js +1 -2
  141. package/.next/server/pages/api/kb/upload.js.nft.json +1 -1
  142. package/.next/server/pages/api/prompt/chat.js +3 -4
  143. package/.next/server/pages/api/prompt/chat.js.nft.json +1 -1
  144. package/.next/server/pages/api/skills/[id].js +2 -1
  145. package/.next/server/pages/api/skills/[id].js.nft.json +1 -1
  146. package/.next/server/pages/api/skills/validate.js +2 -1
  147. package/.next/server/pages/api/skills/validate.js.nft.json +1 -1
  148. package/.next/server/pages/api/skills.js +2 -1
  149. package/.next/server/pages/api/skills.js.nft.json +1 -1
  150. package/.next/server/pages/api/system/data-health.js +2 -2
  151. package/.next/server/pages/api/system/data-health.js.nft.json +1 -1
  152. package/.next/server/pages/api/system/reset.js +1 -1
  153. package/.next/server/pages/api/system/reset.js.nft.json +1 -1
  154. package/.next/server/pages/documents.html +1 -1
  155. package/.next/server/pages/documents.js.nft.json +1 -1
  156. package/.next/server/pages/generation/[id].html +1 -0
  157. package/.next/server/pages/generation/[id].js.nft.json +1 -0
  158. package/.next/server/pages/generation.html +1 -0
  159. package/.next/server/pages/generation.js.nft.json +1 -0
  160. package/.next/server/pages/index.js +1 -0
  161. package/.next/server/pages/index.js.nft.json +1 -1
  162. package/.next/server/pages/jobs.html +1 -1
  163. package/.next/server/pages/jobs.js.nft.json +1 -1
  164. package/.next/server/pages/knowledge/file-detail.html +1 -1
  165. package/.next/server/pages/knowledge/file-detail.js.nft.json +1 -1
  166. package/.next/server/pages/knowledge/files.html +1 -1
  167. package/.next/server/pages/knowledge/files.js.nft.json +1 -1
  168. package/.next/server/pages/knowledge/manage.html +1 -1
  169. package/.next/server/pages/knowledge/manage.js.nft.json +1 -1
  170. package/.next/server/pages/knowledge/source-preview.html +1 -1
  171. package/.next/server/pages/knowledge/source-preview.js.nft.json +1 -1
  172. package/.next/server/pages/knowledge.html +1 -1
  173. package/.next/server/pages/knowledge.js.nft.json +1 -1
  174. package/.next/server/pages/models.html +1 -1
  175. package/.next/server/pages/models.js.nft.json +1 -1
  176. package/.next/server/pages/settings.html +1 -1
  177. package/.next/server/pages/settings.js.nft.json +1 -1
  178. package/.next/server/pages/skills/[id]/edit.html +1 -1
  179. package/.next/server/pages/skills/[id]/edit.js.nft.json +1 -1
  180. package/.next/server/pages/skills/[id].html +1 -1
  181. package/.next/server/pages/skills/[id].js.nft.json +1 -1
  182. package/.next/server/pages/skills/new.html +1 -1
  183. package/.next/server/pages/skills/new.js.nft.json +1 -1
  184. package/.next/server/pages/skills.html +1 -1
  185. package/.next/server/pages/skills.js.nft.json +1 -1
  186. package/.next/server/pages-manifest.json +35 -40
  187. package/.next/static/chunks/112-9eacc7c0686813d6.js +1 -0
  188. package/.next/static/chunks/127-5ee1899eef559281.js +1 -0
  189. package/.next/static/chunks/{1210-703ad87eaeee1e4e.js → 210-71eaf9de9aa92051.js} +1 -1
  190. package/.next/static/chunks/325-45106bb003a2c5ce.js +4 -0
  191. package/.next/static/chunks/326-a3915e61888b0dbf.js +1 -0
  192. package/.next/static/chunks/333-7642e65bff6b8465.js +1 -0
  193. package/.next/static/chunks/338-19ccbaec57a7bf9c.js +4 -0
  194. package/.next/static/chunks/350-87b9c900a356d9b9.js +1 -0
  195. package/.next/static/chunks/359-f87c659236e0e0fe.js +1 -0
  196. package/.next/static/chunks/{8399-a001bb2a0cb1640b.js → 399-aa8a45d80e989621.js} +1 -1
  197. package/.next/static/chunks/430-f288e16301b9aea5.js +1 -0
  198. package/.next/static/chunks/465-80fbb245d43232c8.js +6 -0
  199. package/.next/static/chunks/499-2233cadc6d4da647.js +10 -0
  200. package/.next/static/chunks/551-fd86e95935b0957f.js +16 -0
  201. package/.next/static/chunks/576-6699fed6c88502fe.js +1 -0
  202. package/.next/static/chunks/61-de1dd9c104680470.js +1 -0
  203. package/.next/static/chunks/665-0634aa49137defc4.js +1 -0
  204. package/.next/static/chunks/681-e31b13114497e058.js +1 -0
  205. package/.next/static/chunks/687-644a12a5b584e19f.js +1 -0
  206. package/.next/static/chunks/702-4d9cc8d4d7775ea9.js +1 -0
  207. package/.next/static/chunks/748-9e5bf4181d7482f3.js +1 -0
  208. package/.next/static/chunks/759-280cf4040fae83af.js +25 -0
  209. package/.next/static/chunks/855-cbf7cd1db33198f0.js +17 -0
  210. package/.next/static/chunks/862-13d1c84d0938b824.js +1 -0
  211. package/.next/static/chunks/937-ccd3ceb1b3739535.js +1 -0
  212. package/.next/static/chunks/{8964-e959915ecfae86b2.js → 964-82cc4701f08f7351.js} +1 -1
  213. package/.next/static/chunks/992-8032f477230baaaf.js +1 -0
  214. package/.next/static/chunks/framework-4b565b3ddc94cdac.js +1 -0
  215. package/.next/static/chunks/main-0c91f573696223ca.js +1 -0
  216. package/.next/static/chunks/pages/_app-a70de062f1be1c59.js +140 -0
  217. package/.next/static/chunks/pages/_error-282257fbdcc167b4.js +1 -0
  218. package/.next/static/chunks/pages/documents-2d99ae9287f9739b.js +1 -0
  219. package/.next/static/chunks/pages/generation/[id]-1f97e47ce545bd11.js +1 -0
  220. package/.next/static/chunks/pages/generation-043e325d635c96af.js +1 -0
  221. package/.next/static/chunks/pages/index-24d1f8f39ae0beb0.js +1 -0
  222. package/.next/static/chunks/pages/jobs-ff2f899a081b616e.js +1 -0
  223. package/.next/static/chunks/pages/knowledge/file-detail-9a9a89e4fa33c0d9.js +1 -0
  224. package/.next/static/chunks/pages/knowledge/files-b3ef5324e4b74c4a.js +1 -0
  225. package/.next/static/chunks/pages/knowledge/manage-d9eaebf3a8307953.js +1 -0
  226. package/.next/static/chunks/pages/knowledge/{source-preview-24936b9a746ed07f.js → source-preview-f000b4d63cd65a54.js} +1 -1
  227. package/.next/static/chunks/pages/knowledge-8fa842d21892e2c3.js +1 -0
  228. package/.next/static/chunks/pages/models-6d9b301009f82395.js +1 -0
  229. package/.next/static/chunks/pages/settings-08893ba8afa1a486.js +1 -0
  230. package/.next/static/chunks/pages/skills/[id]/edit-378249e662ebf31f.js +1 -0
  231. package/.next/static/chunks/pages/skills/[id]-0ca4cde22e4a518b.js +1 -0
  232. package/.next/static/chunks/pages/skills/new-c1eb16d98fad4e02.js +1 -0
  233. package/.next/static/chunks/pages/skills-9fb1fa2b669ad4e3.js +1 -0
  234. package/.next/static/chunks/{webpack-2da1769ff35eb1ed.js → webpack-6224d37324e372cb.js} +1 -1
  235. package/.next/static/css/1f6d2a1bf5e15e0f.css +1 -0
  236. package/.next/static/css/b420c193e0e99857.css +1 -0
  237. package/.next/static/e5c2576dc1ab66edac22c9534755509cc2e1354bd840260e3154f2c95cf8bbf2/_buildManifest.js +1 -0
  238. package/README.md +14 -4
  239. package/messages/en-US.json +46 -100
  240. package/messages/zh-CN.json +44 -98
  241. package/next.config.ts +6 -5
  242. package/package.json +5 -6
  243. package/scripts/build-identity.cjs +16 -5
  244. package/scripts/check-workspace-deps.cjs +3 -3
  245. package/scripts/purge-next-artifacts.cjs +8 -5
  246. package/scripts/upload-matrix.cjs +1 -2
  247. package/scripts/verify-next-static.js +1 -1
  248. package/.next/server/chunks/1001.js +0 -2
  249. package/.next/server/chunks/1243.js +0 -3
  250. package/.next/server/chunks/1928.js +0 -1
  251. package/.next/server/chunks/1936.js +0 -385
  252. package/.next/server/chunks/2328.js +0 -6
  253. package/.next/server/chunks/2434.js +0 -4
  254. package/.next/server/chunks/3806.js +0 -1
  255. package/.next/server/chunks/4974.js +0 -2
  256. package/.next/server/chunks/5746.js +0 -5
  257. package/.next/server/chunks/6321.js +0 -1
  258. package/.next/server/chunks/7848.js +0 -145
  259. package/.next/server/chunks/9666.js +0 -146
  260. package/.next/server/instrumentation.js +0 -1
  261. package/.next/server/instrumentation.js.nft.json +0 -1
  262. package/.next/server/pages/api/prompt.js +0 -2
  263. package/.next/server/pages/api/prompt.js.nft.json +0 -1
  264. package/.next/server/pages/api/system/logs.js +0 -2
  265. package/.next/server/pages/api/system/logs.js.nft.json +0 -1
  266. package/.next/server/pages/api/system/stats.js +0 -2
  267. package/.next/server/pages/api/system/stats.js.nft.json +0 -1
  268. package/.next/server/pages/canvas/[id].html +0 -1
  269. package/.next/server/pages/canvas/[id].js.nft.json +0 -1
  270. package/.next/server/pages/canvas.html +0 -1
  271. package/.next/server/pages/canvas.js.nft.json +0 -1
  272. package/.next/server/pages/guide.html +0 -1
  273. package/.next/server/pages/guide.js.nft.json +0 -1
  274. package/.next/server/pages/index.html +0 -1
  275. package/.next/server/pages/overview.html +0 -1
  276. package/.next/server/pages/overview.js.nft.json +0 -1
  277. package/.next/server/pages/prompt.html +0 -1
  278. package/.next/server/pages/prompt.js.nft.json +0 -1
  279. package/.next/server/pages/system/logs.html +0 -1
  280. package/.next/server/pages/system/logs.js.nft.json +0 -1
  281. package/.next/static/0e37797d2ec62d17ca5f253c10b385fa939228f353538722f095755edce292af/_buildManifest.js +0 -1
  282. package/.next/static/chunks/1141-d420a7685bc3623c.js +0 -1
  283. package/.next/static/chunks/1499-ff8f02f6bb6f3d45.js +0 -10
  284. package/.next/static/chunks/1702-f5e99af7aface475.js +0 -1
  285. package/.next/static/chunks/2864-b040f2bffa08c139.js +0 -6
  286. package/.next/static/chunks/3456-70bb03a39473f693.js +0 -1
  287. package/.next/static/chunks/3980-73841c40d55ddfa1.js +0 -1
  288. package/.next/static/chunks/4052-199e61ca9e6a33e7.js +0 -1
  289. package/.next/static/chunks/4337-a670a1a94ab505d9.js +0 -1
  290. package/.next/static/chunks/4530-8b9788da40548ec6.js +0 -1
  291. package/.next/static/chunks/4565-3c5ff667062ccec9.js +0 -21
  292. package/.next/static/chunks/4665-1984a3d8b0573fa1.js +0 -1
  293. package/.next/static/chunks/5061-80765d4a612286e0.js +0 -1
  294. package/.next/static/chunks/5544-d77b8289662b4c28.js +0 -4
  295. package/.next/static/chunks/5760-f4191aac081b12d4.js +0 -11
  296. package/.next/static/chunks/6409-5a3bb0fbad4f64b1.js +0 -14
  297. package/.next/static/chunks/6506-ac0ba7338cc84b7d.js +0 -1
  298. package/.next/static/chunks/6748-07b0b05bf03c72f0.js +0 -1
  299. package/.next/static/chunks/7217-416b8488e0d2d498.js +0 -1
  300. package/.next/static/chunks/7576-ba6fc03060415b0e.js +0 -1
  301. package/.next/static/chunks/7646-159733564c7eb8dc.js +0 -1
  302. package/.next/static/chunks/7795-c11ff1a81c67c5aa.js +0 -1
  303. package/.next/static/chunks/8318-cb3a94de1617f983.js +0 -1
  304. package/.next/static/chunks/8338-b2ea00050048ba9f.js +0 -4
  305. package/.next/static/chunks/8564-ac3e2f1bf87765b3.js +0 -1
  306. package/.next/static/chunks/8569-1d5c61a3f4fa0e26.js +0 -16
  307. package/.next/static/chunks/8715-ee013bd7f5ba38e8.js +0 -1
  308. package/.next/static/chunks/8750-a3c55a576effb3a6.js +0 -1
  309. package/.next/static/chunks/8787-49b1f35eb4acfac9.js +0 -10
  310. package/.next/static/chunks/9551-f4b09bf2213ad571.js +0 -16
  311. package/.next/static/chunks/9605-3dee531f8a7ecbe0.js +0 -4
  312. package/.next/static/chunks/9937-e4b2deadd24e3962.js +0 -1
  313. package/.next/static/chunks/framework-9cde5013cd555765.js +0 -1
  314. package/.next/static/chunks/main-b313efde54fa6d2e.js +0 -1
  315. package/.next/static/chunks/pages/_app-51c48c5efcf5c721.js +0 -140
  316. package/.next/static/chunks/pages/_error-c01b6fb772028676.js +0 -1
  317. package/.next/static/chunks/pages/canvas/[id]-18865f1b7e3a4696.js +0 -1
  318. package/.next/static/chunks/pages/canvas-1d3589790493e955.js +0 -1
  319. package/.next/static/chunks/pages/documents-a1af5c6be26daed2.js +0 -1
  320. package/.next/static/chunks/pages/guide-fdf0822dc1d28813.js +0 -1
  321. package/.next/static/chunks/pages/index-c572e9caa60cb278.js +0 -1
  322. package/.next/static/chunks/pages/jobs-ebd1877dbf788a83.js +0 -1
  323. package/.next/static/chunks/pages/knowledge/file-detail-3d1ffd43f4f0e47b.js +0 -1
  324. package/.next/static/chunks/pages/knowledge/files-b796702bb5f8ac50.js +0 -1
  325. package/.next/static/chunks/pages/knowledge/manage-6d7b21cdca1255f2.js +0 -1
  326. package/.next/static/chunks/pages/knowledge-2a776c1740386874.js +0 -1
  327. package/.next/static/chunks/pages/models-8a89dd5bf0f81242.js +0 -1
  328. package/.next/static/chunks/pages/overview-7e8018014009682e.js +0 -1
  329. package/.next/static/chunks/pages/prompt-11f87694feb6514c.js +0 -1
  330. package/.next/static/chunks/pages/settings-e8dcaba1551a0b2b.js +0 -1
  331. package/.next/static/chunks/pages/skills/[id]/edit-99e616d5019e80b1.js +0 -1
  332. package/.next/static/chunks/pages/skills/[id]-71f696be252bbf0d.js +0 -1
  333. package/.next/static/chunks/pages/skills/new-00886ea4c676f927.js +0 -1
  334. package/.next/static/chunks/pages/skills-8ad2577b4aa17f3b.js +0 -1
  335. package/.next/static/chunks/pages/system/logs-0856f7c65432befb.js +0 -1
  336. package/.next/static/css/2da1c822e3bdb4bb.css +0 -1
  337. package/.next/static/css/9eb02c1a401fd278.css +0 -1
  338. package/scripts/half-built-scan.allow.json +0 -152
  339. package/scripts/half-built-scan.baseline.json +0 -190
  340. package/scripts/half-built-scan.mjs +0 -287
  341. /package/.next/static/{0e37797d2ec62d17ca5f253c10b385fa939228f353538722f095755edce292af → e5c2576dc1ab66edac22c9534755509cc2e1354bd840260e3154f2c95cf8bbf2}/_ssgManifest.js +0 -0
@@ -0,0 +1,5 @@
1
+ "use strict";exports.id=9522,exports.ids=[9522],exports.modules={1623:(a,b,c)=>{c.d(b,{Ix:()=>h,PI:()=>o,Pu:()=>j,_D:()=>v,ao:()=>i,ke:()=>m,mM:()=>n,u9:()=>f});let d=a=>String(a).padStart(2,"0"),e=/^(\d{4})-(\d{2})-(\d{2})$/u;function f(a,b){let c=e.exec(a);if(!c)throw Error(`EXECUTION_BASELINE_START_DATE_INVALID:${a};须为 YYYY-MM-DD`);let f=new Date(Date.UTC(Number(c[1]),Number(c[2])-1,Number(c[3]))+864e5*Math.trunc(b));return`${f.getUTCFullYear()}-${d(f.getUTCMonth()+1)}-${d(f.getUTCDate())}`}function g(a){if(!a)return;let b=/(\d{4})-(\d{1,2})-(\d{1,2})/u.exec(a);if(b)return`${b[1]}-${d(Number(b[2]))}-${d(Number(b[3]))}`;let c=/(\d{4})\s*年\s*(\d{1,2})\s*月\s*(\d{1,2})\s*日/u.exec(a);if(c)return`${c[1]}-${d(Number(c[2]))}-${d(Number(c[3]))}`}function h(a){if(!a.phases.length)throw Error("EXECUTION_BASELINE_PHASES_REQUIRED");if(!a.milestones.length)throw Error("EXECUTION_BASELINE_MILESTONES_REQUIRED");let b=g(a.startDate);if(!b)throw Error(`EXECUTION_BASELINE_START_DATE_INVALID:${a.startDate}`);let c=a.phases.map((a,c)=>({id:a.id??`phase-${c+1}`,title:a.title??`阶段${c+1}`,startDay:a.startDay,endDay:a.endDay,startDate:f(b,a.startDay),endDate:f(b,a.endDay)})),d=new Map(a.milestones.map((a,b)=>[a.title?.trim()??"",a.id??`milestone-${b+1}`])),e=new Set(a.milestones.map((a,b)=>a.id??`milestone-${b+1}`)),h=a.milestones.map((a,c)=>{let g=a.id??`milestone-${c+1}`,h=[...new Set(a.predecessors??[])].map(b=>{let c=e.has(b)?b:d.get(b.trim());if(!c)throw Error(`EXECUTION_BASELINE_PREDECESSOR_UNKNOWN:里程碑「${a.title??g}」的前置「${b}」不存在`);if(c===g)throw Error(`EXECUTION_BASELINE_PREDECESSOR_SELF:里程碑「${a.title??g}」不能以自身为前置`);return c});return{id:g,title:a.title??`里程碑${c+1}`,day:a.day,date:f(b,a.day),keywords:a.keywords??[],predecessors:h}}),i=a.totalDays??Math.max(...c.map(a=>a.endDay));if(!Number.isSafeInteger(i)||i<1)throw Error("EXECUTION_BASELINE_TOTAL_DAYS_INVALID");if(!a.labor.trades.length)throw Error("EXECUTION_BASELINE_LABOR_REQUIRED");if(!a.machines.length)throw Error("EXECUTION_BASELINE_MACHINES_REQUIRED");let j=a.labor.trades.map(a=>({trade:a.trade,phaseWorkdays:[...a.phaseWorkdays],total:a.phaseWorkdays.reduce((a,b)=>a+b,0)})),k=c.map((a,b)=>j.reduce((a,c)=>a+(c.phaseWorkdays[b]??0),0));return{version:"construction-execution-baseline-v1",origin:"agent-calculation",startDate:b,totalDays:i,dayZero:0,milestones:h,phases:c,labor:{peak:a.labor.peak,totalWorkdays:a.labor.totalWorkdays??k.reduce((a,b)=>a+b,0),trades:j,phaseTotals:k},machines:[...a.machines],materialBatches:[...a.materialBatches??[]],...a.tasks?.length?{tasks:[...a.tasks]}:{},...a.allocationBasis?{allocationBasis:a.allocationBasis}:{},...a.sharedMemberOwners?.length?{sharedMemberOwners:a.sharedMemberOwners}:{},basis:a.basis??"投标阶段施工策划基线:日期按开工日 0 起算;进场后按经批准的总进度计划复核",generatedAt:a.now??new Date().toISOString()}}function i(a){let b=[];0!==a.dayZero&&b.push({code:"baseline-invalid",message:"天序口径必须是 0 起算"}),g(a.startDate)!==a.startDate&&b.push({code:"baseline-invalid",message:`开工日期不是 YYYY-MM-DD:${a.startDate}`});let c=new Set;for(let d of a.milestones)(d.day<0||d.day>a.totalDays)&&b.push({code:"baseline-invalid",message:`里程碑「${d.title}」第 ${d.day} 天超出 0—${a.totalDays} 天`}),c.has(d.day)&&b.push({code:"milestone-day-conflict",message:`两个里程碑落在同一天(第 ${d.day} 天):${d.title}`}),c.add(d.day),f(a.startDate,d.day)!==d.date&&b.push({code:"milestone-date-conflict",message:`里程碑「${d.title}」日期 ${d.date} 与第 ${d.day} 天复算值 ${f(a.startDate,d.day)} 不一致`});let d=new Map(a.milestones.map(a=>[a.id,a]));for(let c of a.milestones)for(let a of c.predecessors??[]){let e=d.get(a);e?e.day>=c.day&&b.push({code:"milestone-day-conflict",message:`里程碑「${c.title}」第 ${c.day} 天不晚于前置「${e.title}」第 ${e.day} 天`}):b.push({code:"baseline-invalid",message:`里程碑「${c.title}」引用了不存在的前置 ${a}`})}let e=new Set,h=new Set,i=a=>{if(e.has(a))return!0;if(h.has(a))return!1;for(let b of(e.add(a),d.get(a)?.predecessors??[]))if(i(b))return!0;return e.delete(a),h.add(a),!1};a.milestones.some(a=>i(a.id))&&b.push({code:"baseline-invalid",message:"里程碑前置关系存在环,不能计算关键线路"});let j=new Set;for(let c of a.phases){(c.startDay<0||c.endDay>a.totalDays||c.endDay<c.startDay)&&b.push({code:"baseline-invalid",message:`阶段「${c.title}」区间 ${c.startDay}—${c.endDay} 不成立`});for(let a=c.startDay;a<=c.endDay;a+=1)j.has(a)&&b.push({code:"phase-conflict",message:`阶段边界重叠:第 ${a} 天同时属于两个阶段`}),j.add(a)}let k=a.labor.trades.reduce((a,b)=>a+b.total,0);for(let c of(k!==a.labor.totalWorkdays&&b.push({code:"labor-table-conflict",message:`分工种工日合计 ${k} 与劳动力总量 ${a.labor.totalWorkdays} 不一致`}),a.phases.forEach((c,d)=>{let e=c.endDay-c.startDay+1,f=a.labor.phaseTotals[d]??0;e>0&&f/e>a.labor.peak+1e-9&&b.push({code:"labor-table-conflict",message:`阶段「${c.title}」日均 ${(f/e).toFixed(1)} 人超过峰值 ${a.labor.peak}`})}),a.machines))a.phases.some(a=>a.id===c.phaseId)||b.push({code:"baseline-invalid",message:`机械「${c.name}」引用了不存在的阶段 ${c.phaseId}`}),(!Number.isSafeInteger(c.count)||c.count<1)&&b.push({code:"baseline-invalid",message:`机械「${c.name}」数量必须为正整数`});let l=new Map(a.phases.map(a=>[a.id,a])),m=new Map((a.tasks??[]).map(a=>[a.id,a])),n=new Set(m.keys());for(let c of a.tasks??[]){let a=l.get(c.phaseId);if(!a){b.push({code:"baseline-invalid",message:`任务「${c.title}」引用了不存在的阶段 ${c.phaseId}`});continue}for(let d of((c.startDay<a.startDay||c.endDay>a.endDay||c.endDay<c.startDay)&&b.push({code:"task-conflict",message:`任务「${c.title}」区间 ${c.startDay}—${c.endDay} 不在阶段「${a.title}」${a.startDay}—${a.endDay} 内`}),c.predecessors))n.has(d)||b.push({code:"task-conflict",message:`任务「${c.title}」引用了不存在的前置 ${d}`}),d===c.id&&b.push({code:"task-conflict",message:`任务「${c.title}」不能以自身为前置`})}let o=new Set,p=new Set,q=a=>{if(o.has(a))return!0;if(p.has(a))return!1;for(let b of(o.add(a),m.get(a)?.predecessors??[]))if(q(b))return!0;return o.delete(a),p.add(a),!1};return(a.tasks??[]).some(a=>q(a.id))&&b.push({code:"task-conflict",message:"任务前置关系存在环,横道图/关键线路无法成立"}),b}function j(a,b){let c=[],d=a.split(/\r?\n/u),e=null,f=[],g=()=>{if(!e||!f.length)return;let a=k(e[0]??""),d=e.map(k).join("|");if(!/工种/u.test(a)||!/工日|合计/u.test(d))return;let g=e.findIndex(a=>/合计/u.test(a)),h=e.map((a,b)=>/阶段|第.*天/u.test(a)&&!/合计/u.test(a)?b:-1).filter(a=>a>=0);if(g<0||!h.length)return;let i=h.map(()=>0),j=0;for(let a of f){if(/小计|合计|总计/u.test(a[0]??""))continue;let b=a.map(a=>{let b=/-?\d+(?:\.\d+)?/u.exec(a.replace(/,/gu,""));return b?Number(b[0]):void 0}),d=h.map(a=>b[a]),e=b[g];if(d.every(a=>void 0!==a)&&void 0!==e){let b=d.reduce((a,b)=>a+(b??0),0);Math.abs(b-e)>1e-9&&c.push({code:"labor-table-conflict",message:`工种「${a[0]??"(未命名)"}」行合计 ${e} ≠ 各阶段之和 ${b}`})}h.forEach((a,c)=>{void 0!==b[a]&&(i[c]+=b[a])}),void 0!==e&&(j+=e)}h.length===b.phases.length&&b.labor.phaseTotals.some((a,b)=>Math.abs(a-i[b])>1e-9)&&c.push({code:"labor-table-conflict",message:`${b.phases.length} 个阶段的工日列合计 ${i.join("/")} 与执行基准 ${b.labor.phaseTotals.join("/")} 不一致`}),Math.abs(j-b.labor.totalWorkdays)>1e-9&&c.push({code:"labor-table-conflict",message:`工日总量 ${j} 与执行基准 ${b.labor.totalWorkdays} 不一致`})};for(let a of d){let b=a.trim();if(b.startsWith("|")){let a=b.split("|").slice(1,-1).map(a=>a.trim());if(!e){e=a,f=[];continue}if(a.every(a=>/^:?-{3,}:?$/u.test(a)))continue;f.push(a)}else g(),e=null,f=[]}return g(),c}function k(a){return a.replace(/[\s*`]/gu,"")}let l=a=>a.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&");function m(a,b){let c=[];for(let d of b.machines)for(let b of d.aliases?.length?d.aliases:[d.name]){let e=RegExp(`${l(b)}\\s*(\\d+)\\s*(?:台|辆|套)`,"gu");for(let f of a.matchAll(e)){let e=Number(f[1]);if(e===d.count)continue;let g=u(a,f.index??0);c.push({code:"machine-count-conflict",evidence:g.excerpt,message:`「${b}${e}台」与执行基准的「${d.name} ${d.count} 台」不一致;第 ${g.line} 行`})}}return[...new Map(c.map(a=>[a.message,a])).values()]}function n(a,b){let c=[],d=a.split(/\r?\n/u),e=null,f=!1,g=d=>{if(f)for(let e of d.matchAll(/第\s*(\d+)\s*[至—–\-~~]\s*(\d+)\s*天/gu)){let f=Number(e[1]),g=Number(e[2]);if(g<f)continue;let h=b.phases.find(a=>f<=a.endDay&&g>a.endDay);if(h){let b=u(a,a.indexOf(d));c.push({code:"material-batch-phase-conflict",evidence:b.excerpt,message:`进场批次「第${f}—${g}天」跨过阶段边界(${h.title}止于第${h.endDay}天):应按阶段拆成两批,或改为阶段内窗口`})}}};for(let a of d){let b=a.trim();if(!b.startsWith("|")){e=null,f=!1;continue}let c=b.split("|").slice(1,-1).map(a=>a.trim());if(!e){e=c,f=/材料|半成品|成品|进场|批次/u.test(c.join("|"));continue}c.every(a=>/^:?-{3,}:?$/u.test(a))||g(b)}return[...new Map(c.map(a=>[a.message,a])).values()]}function o(a){return{version:a.version,startDate:a.startDate,totalDays:a.totalDays,dayZero:a.dayZero,basis:a.basis,milestones:a.milestones.map(a=>({id:a.id,title:a.title,day:a.day,date:a.date})),phases:a.phases.map(a=>({id:a.id,title:a.title,startDay:a.startDay,endDay:a.endDay,startDate:a.startDate,endDate:a.endDate})),labor:{peak:a.labor.peak,totalWorkdays:a.labor.totalWorkdays,phaseTotals:a.labor.phaseTotals,trades:a.labor.trades.map(a=>({trade:a.trade,phaseWorkdays:a.phaseWorkdays,total:a.total}))},machines:a.machines.map(a=>({name:a.name,count:a.count,phaseId:a.phaseId,purpose:a.purpose})),materialBatches:a.materialBatches.map(a=>({name:a.name,batch:a.batch,startDay:a.startDay,endDay:a.endDay})),tasks:(a.tasks??[]).map(a=>({id:a.id,workPackageId:a.workPackageId,title:a.title,phaseId:a.phaseId,startDay:a.startDay,endDay:a.endDay,predecessors:a.predecessors})),reading:"所有工期/阶段/日期/劳动力/机械数字以本表为唯一来源;正文写阶段/里程碑的名称、第N天或日期时直接引用本表,不得另算,也不得把内部 id 写进正文。本表是投标阶段策划基线,不是合同承诺;开工通知与合同工期不一致时按合同总日历天等比平移。"}}let p=/第\s*(\d+)\s*[至—–\-~~]\s*(\d+)\s*(?:日历)?天/gu,q=/第\s*(\d+)\s*天/gu,r=/(20\d{2})\s*年\s*(\d{1,2})\s*月\s*(\d{1,2})\s*日/gu,s=/第\s*(\d+)\s*天/u,t=/(20\d{2})\s*年\s*(\d{1,2})\s*月\s*(\d{1,2})\s*日/u;function u(a,b){let c=a.slice(0,b),d=c.split("\n").length,e=c.lastIndexOf("\n")+1,f=a.indexOf("\n",b);return{line:d,excerpt:a.slice(e,f<0?a.length:f).trim().slice(0,160)}}function v(a,b){let c=[],e=new Set,f=a=>{let b=a.code+":"+a.message;e.has(b)||(e.add(b),c.push(a))};for(let c of a.matchAll(p)){let d=Number(c[1]),e=Number(c[2]);if(function(a,b,c){return a.phases.some(a=>a.startDay===b&&a.endDay===c)}(b,d,e))continue;let g=u(a,c.index??0),h=a.slice(Math.max(0,(c.index??0)-24),c.index??0);/阶段/u.test(h)&&f({code:"phase-conflict",evidence:g.excerpt,message:`阶段区间「第${d}至${e}天」不在执行基准的四个阶段内(基准:${b.phases.map(a=>`${a.startDay}—${a.endDay}`).join("、")});第 ${g.line} 行`})}for(let c of b.milestones)if(c.keywords.length)for(let e of c.keywords){let g=0;for(;g<a.length;){let h=a.indexOf(e,g);if(h<0)break;if(g=h+e.length,/^[—–\-~~至到]/u.test(a.slice(g,g+2)))continue;let i=Math.max(a.lastIndexOf("。",h),a.lastIndexOf(";",h),a.lastIndexOf("\n",h))+1,j=[a.indexOf("。",h),a.indexOf(";",h),a.indexOf("\n",h)].filter(a=>a>=0),k=j.length?Math.min(...j)+1:a.length,l=a.slice(i,k),m=h-i,n=l.slice(m,m+90).replace(p,""),o=l.slice(Math.max(0,m-50),m).replace(p,""),v=n.match(s)??[...o.matchAll(q)].at(-1);if(v){let d=Number(v[1]);if(d!==c.day&&d<=b.totalDays){let b=u(a,h);f({code:"milestone-day-conflict",evidence:b.excerpt,message:`「${e}」对应基准节点应为第 ${c.day} 天(${c.date}),正文写第 ${d} 天;第 ${b.line} 行`})}}let w=n.match(t)??[...o.matchAll(r)].at(-1);if(w){let b=`${w[1]}-${d(Number(w[2]))}-${d(Number(w[3]))}`;if(b!==c.date){let d=u(a,h);f({code:"milestone-date-conflict",evidence:d.excerpt,message:`「${e}」对应基准日期应为 ${c.date},正文写 ${b};第 ${d.line} 行`})}}}}return c}},3410:(a,b,c)=>{c.d(b,{MJ:()=>m,YU:()=>f,ik:()=>n,pO:()=>g,vx:()=>o});var d=c(745),e=c(4053);let f="construction-source-coverage-ledger-v1",g="source-review-document-scope-full-negative-v3",h=["not-required","covered-elsewhere","omission"],i=(a,b)=>{void 0===a.reviewInvocationId||"string"==typeof a.reviewInvocationId&&a.reviewInvocationId.trim()||b.push({code:"SOURCE_COVERAGE_INVOCATION_INVALID",message:"审查调用身份必须是非空字符串"}),void 0===a.sourceSnapshotHash||"string"==typeof a.sourceSnapshotHash&&a.sourceSnapshotHash.trim()||b.push({code:"SOURCE_COVERAGE_SNAPSHOT_INVALID",message:"来源快照身份必须是非空字符串"}),void 0===a.sourceReviewPolicyVersion||"string"==typeof a.sourceReviewPolicyVersion&&a.sourceReviewPolicyVersion.trim()||b.push({code:"SOURCE_COVERAGE_POLICY_INVALID",message:"来源举证判据版本必须是非空字符串"})},j=a=>Array.isArray(a)?a.map(a=>({id:String(a.id??""),version:Number(a.version??0)})):void 0;function k(a){let b=a??{},c=[],d="string"==typeof b.reviewerId?b.reviewerId.trim():"",e="string"==typeof b.filePath?b.filePath.trim():"";if(d||c.push({code:"SOURCE_COVERAGE_REVIEWER_REQUIRED",message:"来源覆盖意见必须带审查者身份"}),e||c.push({code:"SOURCE_COVERAGE_FILE_REQUIRED",message:"来源覆盖意见必须绑定来源文件"}),h.includes(String(b.verdict))||c.push({code:"SOURCE_COVERAGE_VERDICT_INVALID",message:`判据「${String(b.verdict)}」不在允许集合:${h.join("/")}`}),"string"==typeof b.reason&&b.reason.trim()||c.push({code:"SOURCE_COVERAGE_REASON_REQUIRED",message:"来源意见缺理由"}),Array.isArray(b.evidence)&&b.evidence.length&&b.evidence.every(a=>"string"==typeof a&&a.trim())||c.push({code:"SOURCE_COVERAGE_EVIDENCE_REQUIRED",message:"来源意见缺证据引用(没有依据的意见不得登记)"}),"string"==typeof b.note&&b.note.trim()||c.push({code:"SOURCE_COVERAGE_NOTE_REQUIRED",message:"来源覆盖意见必须附总体说明"}),i(b,c),c.length)return{issues:c};let f=j(b.reviewedUnitRefs);return f&&f.some(a=>!a.id.trim()||!Number.isSafeInteger(a.version)||a.version<1)?{issues:[{code:"SOURCE_COVERAGE_UNIT_REF_INVALID",message:"被审单元引用必须是 id+实际版本"}]}:{issues:c,value:{reviewerId:d,filePath:e,verdict:b.verdict,reason:String(b.reason),evidence:b.evidence.map(a=>a.trim()),note:String(b.note),..."string"==typeof b.reviewInvocationId?{reviewInvocationId:b.reviewInvocationId.trim()}:{},..."string"==typeof b.sourceReviewPolicyVersion?{sourceReviewPolicyVersion:b.sourceReviewPolicyVersion.trim()}:{},..."string"==typeof b.sourceSnapshotHash?{sourceSnapshotHash:b.sourceSnapshotHash.trim()}:{},...f?{reviewedUnitRefs:f}:{}}}}function l(a,b){return"source-coverage-opinion:"+(0,d.Fu)([a,...b?[b]:[]]).slice(0,24)}function m(a){let{store:b}=a,c=new Set(Object.keys(a.project.sources));return{prepareOpinions(c){let d=[...new Set(c.filePaths.map(a=>String(a).trim()).filter(Boolean))];if(!d.length)throw Error("SOURCE_COVERAGE_FILES_REQUIRED");let e=d.map(b=>l(a.authority.actorId,b)),f={actorId:a.authority.actorId,type:"source-coverage-opinion",filePaths:d,entityIds:e};return b.captureReadSnapshot({entityIds:e,groupKeys:[],context:f})},proposeOpinions(d,e,f,g){let k=b.readSnapshot(d),m=k.context??{};if(m.actorId!==a.authority.actorId||"source-coverage-opinion"!==m.type)throw Error("SOURCE_COVERAGE_SNAPSHOT_SCOPE_DENIED");if(e.reviewerId!==a.authority.actorId)throw Error("SOURCE_COVERAGE_REVIEWER_SCOPE_DENIED");if(!f?.trim())throw Error("SOURCE_COVERAGE_REASON_REQUIRED");let{value:n,issues:o}=function(a){let b=a??{},c=[],d="string"==typeof b.reviewerId?b.reviewerId.trim():"";d||c.push({code:"SOURCE_COVERAGE_REVIEWER_REQUIRED",message:"来源覆盖意见必须带审查者身份"}),i(b,c);let e=Array.isArray(b.opinions)?b.opinions.map(a=>a):[];for(let[a,b]of(e.length||c.push({code:"SOURCE_COVERAGE_OPINIONS_REQUIRED",message:"必须至少给出一条来源意见(没意见的来源就是未测)"}),e.entries())){let d=`第 ${a+1} 条来源意见`;"string"==typeof b.filePath&&b.filePath.trim()||c.push({code:"SOURCE_COVERAGE_FILE_REQUIRED",message:`${d}缺 filePath`}),h.includes(String(b.verdict))||c.push({code:"SOURCE_COVERAGE_VERDICT_INVALID",message:`${d}的判据「${String(b.verdict)}」不在允许集合:${h.join("/")}`}),"string"==typeof b.reason&&b.reason.trim()||c.push({code:"SOURCE_COVERAGE_REASON_REQUIRED",message:`${d}缺理由`}),Array.isArray(b.evidence)&&b.evidence.length&&b.evidence.every(a=>"string"==typeof a&&a.trim())||c.push({code:"SOURCE_COVERAGE_EVIDENCE_REQUIRED",message:`${d}缺证据引用(没有依据的意见不得登记)`})}return(new Set(e.map(a=>String(a.filePath))).size!==e.length&&c.push({code:"SOURCE_COVERAGE_FILE_DUPLICATE",message:"同一来源只能给一条意见"}),"string"==typeof b.note&&b.note.trim()||c.push({code:"SOURCE_COVERAGE_NOTE_REQUIRED",message:"来源覆盖意见必须附总体说明"}),c.length)?{issues:c}:{issues:c,value:{reviewerId:d,note:String(b.note),..."string"==typeof b.reviewInvocationId?{reviewInvocationId:b.reviewInvocationId.trim()}:{},..."string"==typeof b.sourceReviewPolicyVersion?{sourceReviewPolicyVersion:b.sourceReviewPolicyVersion.trim()}:{},..."string"==typeof b.sourceSnapshotHash?{sourceSnapshotHash:b.sourceSnapshotHash.trim()}:{},...j(b.reviewedUnitRefs)?{reviewedUnitRefs:j(b.reviewedUnitRefs)}:{},opinions:e.map(a=>({filePath:String(a.filePath),verdict:a.verdict,reason:String(a.reason),evidence:a.evidence.map(a=>a.trim())}))}}}({...e});if(!n)throw Error(`SOURCE_COVERAGE_INVALID:${o.map(a=>a.code).join(",")}`);if(b.group(`writing:${n.reviewerId}`).entityIds.length)throw Error(`SOURCE_COVERAGE_AUTHOR_DENIED:${n.reviewerId} 已有生效正文单元,不能作为来源覆盖审查者`);for(let a of n.reviewedUnitRefs??[]){let c=b.entity(a.id)?.value?.responsibilityId;if(c&&c===n.reviewerId)throw Error(`SOURCE_COVERAGE_AUTHOR_DENIED:${n.reviewerId} 是单元 ${a.id} 的作者,不能作为来源覆盖审查者`)}for(let a of n.opinions)if(!c.has(a.filePath))throw Error(`SOURCE_COVERAGE_FILE_UNKNOWN:${a.filePath}`);return b.propose({actorId:a.authority.actorId,purpose:"independent-review",reason:f,reads:k.reads,changes:n.opinions.map(a=>{let c=l(n.reviewerId,a.filePath);return{id:c,kind:"source-coverage-opinion",expectedVersion:b.entity(c)?.version??null,value:JSON.parse(JSON.stringify({reviewerId:n.reviewerId,note:n.note,...a,...n.reviewInvocationId?{reviewInvocationId:n.reviewInvocationId}:{},...n.sourceReviewPolicyVersion?{sourceReviewPolicyVersion:n.sourceReviewPolicyVersion}:{},...n.sourceSnapshotHash?{sourceSnapshotHash:n.sourceSnapshotHash}:{},...n.reviewedUnitRefs?{reviewedUnitRefs:n.reviewedUnitRefs}:{}}))}})},g)},evaluateOpinions:a=>b.evaluate(a,"construction-source-coverage-opinion-v1",a=>{let d=[];for(let b of a.proposal.changes){let{value:a,issues:e}=k(b.value);for(let a of e)d.push({code:a.code,entityId:b.id,reason:a.message});a&&!c.has(a.filePath)&&d.push({code:"SOURCE_COVERAGE_FILE_UNKNOWN",entityId:b.id,reason:`来源 ${a.filePath} 不在本次冻结来源里`})}let e=a.proposal.reads.entities.filter(a=>null!==a.version&&b.entity(a.id)?.version!==a.version);return{dataValidity:d.length?"invalid":"valid",relatedConstraints:e.length?"invalid":"valid",schedule:{scope:"local",state:"not-evaluated"},issues:[...d,...e.map(a=>({code:"READ_SUPERSEDED",entityId:a.id,reason:`读集里的 v${a.version} 已被新版本替代`}))],result:{sourceCoverageOpinions:a.proposal.changes.map(a=>a.id)}}}),commit(c,d){let e=b.proposal(c);if(!e||e.actorId!==a.authority.actorId)throw Error("SOURCE_COVERAGE_PROPOSAL_SCOPE_DENIED");return b.commit(c,d)}}}function n(a){return(0,d.Fu)(Object.entries(a.sources).map(([a,b])=>[a,b.sha256??""]).sort(([a],[b])=>a.localeCompare(b)))}function o(a,b,c){let d,h=new Map;for(let a of b.sourceControls??[])"verified-source-excerpt"===a.roleId&&"string"==typeof a.factId&&h.set(a.factId,a.sourceFile);let i=new Map;for(;;){let b=a.entityPage({groupKey:"writing-units",...d?{afterId:d}:{},limit:200});for(let a of b.entities){let b=a.deleted?void 0:(0,e.iC)(a);if(!b)continue;let c=new Set;for(let a of[...b.references,...b.assertions.map(a=>a.reference)]){if("evidence"!==a.kind)continue;let b=h.get(String(a.evidenceId??""));b&&c.add(b)}for(let b of c)i.set(b,[...i.get(b)??[],{unitEntityId:a.id,version:a.version}])}if(!b.nextAfterId)break;d=b.nextAfterId}let j=function(a,b={}){let c,d=[];for(;;){let e=a.entityPage({groupKey:"source-coverage-opinions",...c?{afterId:c}:{},limit:200});for(let c of e.entities){if(c.deleted||!c.value)continue;let{value:e}=k(c.value);e&&e.sourceReviewPolicyVersion===g&&(!b.sourceSnapshotHash||e.sourceSnapshotHash===b.sourceSnapshotHash)&&(e.reviewedUnitRefs?.some(b=>a.entity(b.id)?.deleted||a.entity(b.id)?.version!==b.version)||d.push({filePath:e.filePath,verdict:e.verdict,reason:e.reason,evidence:[...e.evidence],...e.reviewInvocationId?{reviewInvocationId:e.reviewInvocationId}:{},sourceReviewPolicyVersion:e.sourceReviewPolicyVersion,...e.sourceSnapshotHash?{sourceSnapshotHash:e.sourceSnapshotHash}:{},...e.reviewedUnitRefs?{reviewedUnitRefs:e.reviewedUnitRefs.map(a=>({id:a.id,version:a.version}))}:{}}))}if(!e.nextAfterId)break;c=e.nextAfterId}return d}(a,{sourceSnapshotHash:n(b)}),l=Object.entries(b.sources).map(([a,b])=>({filePath:a,sha256:b.sha256??"",referencedBy:i.get(a)??[],referenceCount:(i.get(a)??[]).length})),m=l.filter(a=>!a.referenceCount).map(a=>a.filePath),o=new Map;for(let a of j)o.set(a.filePath,[...o.get(a.filePath)??[],a]);let p=m.filter(a=>new Set((o.get(a)??[]).map(a=>a.verdict)).size>1),q=new Map;for(let[a,b]of o)b.length&&!p.includes(a)&&q.set(a,b[0]);let r=m.filter(a=>!q.has(a)&&!p.includes(a)),s=m.map(a=>q.get(a)).filter(a=>!!a),t=s.filter(a=>"omission"===a.verdict),u=[];return l.length||u.push("冻结来源为空:没有可算的覆盖账"),r.length&&u.push(`${r.length} 份未被正文引用的来源没有审查意见(未测≠没问题):${r.slice(0,5).join("、")}${r.length>5?"…":""}`),p.length&&u.push(`${p.length} 份来源存在相互冲突的当前审查意见,按未测处理:${p.slice(0,5).join("、")}${p.length>5?"…":""}`),t.length&&u.push(`${t.length} 份来源被审查判为漏项,必须回正文承接后才能交付:${t.slice(0,5).map(a=>a.filePath).join("、")}`),{version:f,status:!l.length||r.length||p.length||t.length?"unmeasured":"measured",documentHash:c.documentHash,sources:l,unreferenced:m,opinions:s,missingOpinions:r,conflicts:p,omissions:t,reasons:u}}},4053:(a,b,c)=>{c.d(b,{Dp:()=>j,Jr:()=>n,YK:()=>l,iC:()=>m,tp:()=>k});var d=c(6873),e=c(67001),f=c(67931);let g=/^[\s\S]*$/u,h=a=>"string"==typeof a?a.trim():"",i=/^[—\-–—\s]*$|^(待补|待定|详见|略|无|N\/A|TBD)$/iu;function j(a){let b=[],c=a??{},j=Array.isArray(c.units)?c.units:[];h(c.responsibilityId)||b.push({unitId:"",code:"responsibility-required",message:"正文提交必须声明是哪个职责成果"}),h(c.purpose)||b.push({unitId:"",code:"purpose-required",message:"正文提交必须声明本段在追的目的"}),j.length||c.revision||b.push({unitId:"",code:"units-required",message:"正文提交为空"}),(Array.isArray(c.sectionIds)?c.sectionIds.map(a=>String(a)).filter(Boolean):[]).length>1&&b.push({unitId:"",code:"section-single-required",message:"每次正文提交只能声明一个章节;跨节内容拆成多次提交,或在正文中引用他节的表/图,不要用同一单元复制到多节"});let k=new Set;for(let a of j){let c=a??{},j=h(c.id);if(!j){b.push({unitId:"",code:"unit-id-required",message:"正文单元必须有稳定 id(修订是同一 id 的新版本)"});continue}if(k.has(j)){b.push({unitId:j,code:"unit-id-duplicate",message:`同一份提交里有两段用同一个单元 id「${j}」`});continue}k.add(j);let l=String(c.kind??"");if(!["paragraph","table","figure"].includes(l)){b.push({unitId:j,code:"unit-kind-invalid",message:`未知的正文单元形态「${l}」`});continue}for(let a of(void 0===c.contentContractHash||/^[a-f0-9]{64}$/u.test(String(c.contentContractHash))||b.push({unitId:j,code:"content-contract-hash-invalid",message:"内容契约 hash 必须是完整 SHA256"}),["claims","implementations"]))void 0===c[a]||Array.isArray(c[a])||b.push({unitId:j,code:`${a}-invalid`,message:`${a} 必须是数组`});if((!c.claims||Array.isArray(c.claims))&&(!c.implementations||Array.isArray(c.implementations)))for(let a of(0,d.dA)(c))b.push({unitId:j,code:a,message:"主张/实现片段的身份、来源或正文位置不一致"});for(let[a,d]of(void 0===c.subsectionId||h(c.subsectionId)||b.push({unitId:j,code:"subsection-id-invalid",message:"subsectionId 必须是非空字符串(取自冻结节计划的小节)"}),void 0===c.blockId||h(c.blockId)||b.push({unitId:j,code:"block-id-invalid",message:"blockId 必须是非空字符串(取自冻结节计划该小节的 writingOutline)"}),[["planHash",c.planHash],["sectionPlanHash",c.sectionPlanHash]]))void 0===d||/^[a-f0-9]{64}$/u.test(String(d))||b.push({unitId:j,code:"plan-hash-invalid",message:`${a} 必须是冻结计划的 64 位十六进制 hash`});if(void 0!==c.notes&&(!Array.isArray(c.notes)||c.notes.some(a=>"string"!=typeof a))&&b.push({unitId:j,code:"form-notes-invalid",message:"原表说明必须是文本数组"}),void 0===c.originalFormContractHash||/^[a-f0-9]{64}$/u.test(String(c.originalFormContractHash))||b.push({unitId:j,code:"original-form-hash-invalid",message:"原格式必须绑定完整契约hash"}),"paragraph"!==l||g.test(String(c.text??""))||b.push({unitId:j,code:"unit-text-invalid",message:"段落正文不是文本"}),"paragraph"!==l||h(c.text)||b.push({unitId:j,code:"unit-empty",message:"段落正文为空"}),"table"===l){let a=Array.isArray(c.columns)?c.columns:[],d=Array.isArray(c.rows)?c.rows:[];for(let e of(a.length&&d.length||b.push({unitId:j,code:"table-empty",message:"表格必须同时有表头与至少一行数据(表头+分隔线+数据三者缺一即拒)"}),d)){let d=(e??{}).cells;for(let e of a){let a=h(e.key),f=d?.[a];!c.originalFormContractHash&&(null==f||i.test(String(f)))&&b.push({unitId:j,code:"table-cell-placeholder",message:`表格单元格「${a}」为空或占位(交付稿不得留占位)`})}}}if("figure"===l){let a=Array.isArray(c.nodes)?c.nodes:[];if(void 0!==c.planChart){let d=c.planChart??{};(!["schedule","network"].includes(String(d.view))||Object.keys(d).some(a=>"view"!==a)||void 0!==c.layout||a.length||Array.isArray(c.edges)&&c.edges.length)&&b.push({unitId:j,code:"figure-plan-chart-invalid",message:"计划图须仅声明 planChart.view=schedule|network,由执行基准渲染;不得混入节点/边或空间布局"})}if(void 0===c.planChart&&a.length<2&&b.push({unitId:j,code:"figure-semantics-missing",message:"图件至少要有两个节点,否则画不出实际语义关系"}),void 0===c.planChart&&["deployment","risk-control"].includes(String(c.figureSemantics??""))){let c=a.filter(a=>!h(a?.group));c.length&&b.push({unitId:j,code:"figure-node-group-required",message:`部署/危大管控图的每个节点必须用 group 标明所属阶段(如 识别/对策/责任/验证 或 准备/主体/安装/收尾);缺 ${c.length} 个`})}if(void 0!==c.layout){try{(0,e.Q)(c.layout,a.map(a=>(a??{}).id),Array.isArray(c.edges)?c.edges:[])}catch(a){b.push({unitId:j,code:"figure-layout-invalid",message:a instanceof Error?a.message:String(a)})}(0,f.ez)(h(c.caption))&&!/示意/u.test(h(c.caption))&&b.push({unitId:j,code:"figure-layout-schematic-required",message:"相对坐标布置须明确为示意,不得冒充测量比例或现场定位图"})}else(0,f.ez)(h(c.caption))&&b.push({unitId:j,code:"figure-layout-required",message:"节点边关系图没有设施区域与线路,不能冒充施工平面布置图"})}else void 0!==c.planChart?b.push({unitId:j,code:"figure-chart-kind-invalid",message:"计划图不能隐藏在段落或表格中"}):void 0!==c.layout&&b.push({unitId:j,code:"figure-layout-kind-invalid",message:"空间布局仅属于图件单元,不得隐藏在段落或表格中"});if(void 0!==c.coverageItemIds){let a=Array.isArray(c.coverageItemIds)?c.coverageItemIds:[];(!Array.isArray(c.coverageItemIds)||a.some(a=>"string"!=typeof a||!a.trim()))&&b.push({unitId:j,code:"coverage-item-ids-invalid",message:"coverageItemIds 必须是非空字符串数组(契约项 id 取自本节 coverageItems)"})}if(void 0!==c.referencedCoverageItemIds){let a=Array.isArray(c.referencedCoverageItemIds)?c.referencedCoverageItemIds:[];(!Array.isArray(c.referencedCoverageItemIds)||a.some(a=>"string"!=typeof a||!a.trim()))&&b.push({unitId:j,code:"referenced-coverage-item-ids-invalid",message:"referencedCoverageItemIds 必须是非空字符串数组(只填本单元引用、但不作为主载体的契约项 id)"})}if(void 0!==c.standardCitations){let a=Array.isArray(c.standardCitations)?c.standardCitations:[];for(let d of(Array.isArray(c.standardCitations)||b.push({unitId:j,code:"standard-citations-invalid",message:"standardCitations 必须是数组"}),a)){let a=d??{},c=["name","code","version","scope","verification"].filter(b=>!h(a[b]));c.length&&b.push({unitId:j,code:"standard-citation-incomplete",message:`标准引用缺字段:${c.join("、")}(名称/编号/版本/适用范围/核验状态五字段必须齐全)`}),void 0===a.verification||["verified","unverified"].includes(String(a.verification))||b.push({unitId:j,code:"standard-citation-verification-invalid",message:"核验状态只能是 verified 或 unverified"})}}for(let a of Array.isArray(c.assertions)?c.assertions:[]){let c=a??{},d=c.reference??{},e=String(d.kind??"");if(!["evidence","decision","certificate"].includes(e)){b.push({unitId:j,code:"assertion-reference-missing",message:"工程数字断言未绑定引用(冻结原字/已提交决定/计算证书三类之一);未绑定的断言不得进入交付稿"});continue}h(c.subject)&&h(c.purpose)||b.push({unitId:j,code:"assertion-context-missing",message:"断言必须写明对象与用途(数值相同不作合并的依据)"}),"evidence"!==e||h(d.evidenceId)||b.push({unitId:j,code:"assertion-evidence-invalid",message:"原字引用缺证据身份"}),"decision"!==e||h(d.entityId)&&Number.isSafeInteger(Number(d.entityVersion))||b.push({unitId:j,code:"assertion-decision-invalid",message:"决定引用必须带对象与当次生效版本"}),"certificate"!==e||h(d.certificateId)||b.push({unitId:j,code:"assertion-certificate-invalid",message:"计算引用缺证书身份"})}}if(void 0!==c.revision){let a=c.revision;(!a||void 0!==a.reason&&("string"!=typeof a.reason||!a.reason.trim())||!Array.isArray(a.retire)||!Array.isArray(a.replacements)||!Array.isArray(a.redirects)||a.retire.some(a=>!a?.unitId?.trim()||!Number.isSafeInteger(a.version)||a.version<1)||a.replacements.some(a=>!a?.fromUnitId?.trim()||!Array.isArray(a.toUnitIds)||a.toUnitIds.some(a=>!a?.trim()))||a.redirects.some(a=>!a?.fromUnitId?.trim()||!a?.toUnitId?.trim()))&&b.push({unitId:"",code:"structural-revision-invalid",message:"结构修订须声明退役版本、替换单元与引用重定向"})}return b.length?{issues:b}:{submission:{responsibilityId:h(c.responsibilityId),purpose:h(c.purpose),sectionIds:(Array.isArray(c.sectionIds)?c.sectionIds:[]).map(a=>String(a)).filter(Boolean),units:j,...c.revision?{revision:c.revision}:{}},issues:b}}function k(a,b,c,d){return`writing-unit:${a}:${b}:${d?`${d}:`:""}${c}`}function l(a){return a.units.map((b,c)=>{let d=[...b.references,...b.assertions.map(a=>a.reference)].map(b=>({reference:b,...(b=>{if("evidence"===b.kind)return a.evidenceExists(b.evidenceId)?{state:"current",reason:"冻结原字仍可取"}:{state:"missing",reason:`原字引用「${b.evidenceId}」找不到`};if("decision"===b.kind){let c=a.currentEntityVersion(b.entityId);return void 0===c?{state:"missing",reason:`引用的决定对象「${b.entityId}」不存在`}:c===b.entityVersion?{state:"current",reason:"仍指向当次生效版本"}:{state:"superseded",reason:`引用的是 v${b.entityVersion},当前已是 v${c}`}}let c=a.certificateValid(b.certificateId);return void 0===c?{state:"missing",reason:`证书「${b.certificateId}」不存在`}:c?{state:"current",reason:"证书仍有效"}:{state:"invalidated",reason:"证书已失效(相关输入、读集或共享需求变化)"}})(b)}));return{unitId:b.id,entityId:a.entityIdFor?.(b,c)??"",needsRecheck:d.some(a=>"current"!==a.state),states:d}})}function m(a){if(a&&"writing-unit"===a.kind&&a.value&&!a.deleted)return a.value}function n(a){return"paragraph"===a.kind?!!a.text?.trim():"table"===a.kind?!!(a.columns?.length&&a.rows?.length):"figure"===a.kind&&!!(a.planChart||a.layout||(a.nodes?.length??0)>=2&&(a.edges?.length??0)>0)}},16208:(a,b,c)=>{c.d(b,{Id:()=>i,Ym:()=>g,ig:()=>d,sV:()=>k});let d=["智能体","工作包","职责身份","本职责","提交审查","审查请求","审查回执","审查缺陷","证据编号","求值","提案","actorId","sectionId","contractId","writing-unit","review-finding","检查点","工作库","工时节点","局部计算候选","未取得专业","证书范围","相对时间(","document-run-"],e=a=>RegExp(`^#{3,4}\\s+\\d+(?:\\.\\d+)*\\s+${a.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&")}\\s*$`,"mu");function f(a){return a.replace(/[\s\p{P}\p{S}]/gu,"").trim()}function g(a,b){let c=f(a),d=f(b);if(!d||c.includes(d))return 1;if(d.length<4)return 0;let e=new Set(Array.from({length:d.length-1},(a,b)=>d.slice(b,b+2)));if(!e.size)return 0;let g=0;for(let a of e)c.includes(a)&&(g+=1);return g/e.size}function h(a){let b=[];for(let c of a.split(/\r?\n/u)){let a=c.trim();if(/^(?:表|图)\s*\d+(?:[..\-—–]\d+)?\s+\S/u.test(a)){b.push(a);continue}let d=/^!\[([^\]]*)\]/u.exec(a);d?.[1]&&b.push(d[1])}return b}function i(a,b){let c=f(b);return!!c&&h(a).some(a=>{let d=f(a);return d.includes(c)||c.includes(d)||g(a,b)>=.6})}let j={table:"表格",figure:"图件",diagram:"示意图/图件",org_chart:"组织机构图",chart:"图表"};function k(a){let b=(a.plan.applicabilityGaps??[]).map(a=>({code:"tender-applicability-unresolved",severity:"blocker",message:`招标义务 ${a.obligationId} 适用性尚未核定:${a.reason}`})),c={required:0,present:0,missing:0,conflicts:0},k=function(a,b){let c=new Map;for(let d of b.sections){let b=e(d.title).exec(a);if(!b)continue;let f=b.index+b[0].length,g=a.slice(f),h=g.search(/^#{2,3}\s+/mu);c.set(d.id,(h>=0?g.slice(0,h):g).trim())}return c}(a.markdown,a.contract),l=new Map(a.contract.sections.map(a=>[a.id,a])),m=new Map;for(let e of a.plan.sections){if(!l.get(e.sectionId))continue;let n=k.get(e.sectionId)??"";if(!n){b.push({code:"tender-section-missing",severity:"warning",sectionId:e.sectionId,message:`招标要求「${e.chapterTitle}」在装配正文中没有找到对应节:无法核对本节响应。`});continue}let o=0;for(let a of e.requiredOutputs){if(c.required+=1,!a.allowed){c.conflicts+=1,b.push({code:"tender-output-conflict",severity:"warning",sectionId:e.sectionId,message:a.conflict??`招标要求${j[a.form]},但本次编制规则不允许该形式:${a.basis}`});continue}if(function(a,b,c){let d=!!(c&&i(b,c));if("table"===a)return(/^\|.*\|/mu.test(b)||/\|\s*:?-{3,}/u.test(b))&&d;return(/!\[[^\]]*\]\(/u.test(b)||/```mermaid\b/u.test(b)||/<svg\b/iu.test(b)||/data:image\/svg\+xml/iu.test(b))&&d}(a.form,n,a.basis)){c.present+=1;continue}c.missing+=1,o+=1,b.push({code:"tender-required-output-missing",severity:"blocker",sectionId:e.sectionId,message:`招标明确要求${j[a.form]},本节实际正文没有产出(依据:${a.basis.slice(0,200)})。`})}for(let a of e.contentContract?.coverageItems??[]){let c=g(n,a.text);c>=(a.enumerated?.6:.5)||b.push({code:"tender-content-item-missing",severity:a.enumerated?"blocker":"warning",sectionId:e.sectionId,message:`本节内容契约要求逐项落实「${a.text}」,正文没有找到对应内容(覆盖度 ${(100*c).toFixed(0)}%);`+(a.enumerated?"这是招标原文逐项列举的类别,缺一项即视为未响应。":"请核对是否只写了总称而漏了该项。")})}let p=n.split(/\r?\n/u);for(let a=0;a<p.length;a+=1){let c=p[a].trim();if(!/^表\s*\d+(?:[..\-—–]\d+)?\s+\S/u.test(c))continue;let d=a+1;for(;d<p.length&&!p[d].trim();)d+=1;if(!/^\|/u.test(p[d]??""))continue;let f=[];for(;d<p.length&&/^\|/u.test(p[d].trim());)f.push(p[d]),d+=1;/危大/u.test(c)&&!/专业工程/u.test(c)&&f.some(a=>/不属[^|]{0,20}危大|非危大/u.test(a))&&b.push({code:"tender-table-title-conflict",severity:"blocker",sectionId:e.sectionId,message:`表题「${c.slice(0,60)}」写危大工程,但表内有“不属危大”的行:表题应改为“危大工程及专业工程…”,或把该行移出本表。`})}let q=e.requiredOutputs.filter(a=>a.allowed),r=q.filter(a=>"table"===a.form).length,s=q.filter(a=>"table"!==a.form&&"org_chart"!==a.form).length+q.filter(a=>"org_chart"===a.form&&!i(n,a.basis)).length,t=Math.max(h(n).filter(a=>/^表\s*\d/u.test(a)).length,(n.match(/^\|[\s:|-]*-{3,}[\s:|-]*$/gmu)??[]).length),u=(n.match(/!\[[^\]]*\]\(/gu)??[]).length+(n.match(/```mermaid/gu)??[]).length;0===o&&t<r&&b.push({code:"tender-output-count-missing",severity:"blocker",sectionId:e.sectionId,message:`本节点名要求 ${r} 张表,实际只有 ${t} 张带题注的表:同一张表不能同时充当两个点名输出。`}),0===o&&u<s&&b.push({code:"tender-output-count-missing",severity:"blocker",sectionId:e.sectionId,message:`本节点名要求 ${s} 张图,实际只有 ${u} 张带题注的图:同一张图不能同时充当两个点名输出。`});let v=[...a.outputIdsBySection?.[e.sectionId]??[]];if(v.length){let a=[...new Set(v.filter((a,b)=>v.indexOf(a)!==b))];a.length&&b.push({code:"tender-output-id-duplicate",severity:"blocker",sectionId:e.sectionId,message:`outputId 重复:${a.join("、")};一个点名输出只能由一个表/图单元承接。`});let c=q.map(a=>a.id).filter(a=>!!a),d=c.filter(a=>!v.includes(a));d.length&&b.push({code:"tender-output-unbound",severity:"blocker",sectionId:e.sectionId,message:`本节点名输出还有 ${d.length} 个没有绑定 outputId:${d.slice(0,6).join("、")};作者应在对应表/图单元的 outputId 里填写。`});let f=v.filter(a=>!c.includes(a));f.length&&b.push({code:"tender-output-id-unknown",severity:"warning",sectionId:e.sectionId,message:`outputId ${f.slice(0,6).join("、")} 不在本节点名输出里:核对是否填错。`})}let w=e.contentContract?.responsibilityPositions??[];for(let a of(w.length&&!w.some(a=>n.includes(a))&&b.push({code:"tender-responsibility-position-missing",severity:"warning",sectionId:e.sectionId,message:`本节内容契约要求写明责任岗位(${w.slice(0,8).join("、")}),正文没有出现其中任何一个;岗位是落地性的一部分。`}),d))n.includes(a)&&b.push({code:"tender-internal-term",severity:"warning",sectionId:e.sectionId,message:`正文出现系统内部词「${a}」:技术标应使用读者可理解的工程语言,不暴露工作台/流程内部概念。`});if(/(?:0|\d+)\s*至\s*\d+\s*工时/u.test(n)&&b.push({code:"tender-calculation-projection-leak",severity:"blocker",sectionId:e.sectionId,message:"正文出现计算证书的局部工时区间(x至y工时):投标正文应写日历天/日期,证书局部结果只能作为内部校核,不能直接当总进度表述。"}),/重点|难点|危大/.test(e.title)){let a=[];/\d/u.test(n)||/(?:不小于|不大于|不得|控制在|允许偏差|限值|≥|≤)/u.test(n)||a.push("控制值/限值/数量"),/(?:岗|员|负责人|经理|班组|施工员|质检员|安全员|技术负责人)/u.test(n)||a.push("责任岗位"),/(?:验收|复验|检查|监测|实测|记录|见证|复核)/u.test(n)||a.push("验证/验收"),/(?:风险|后果|超限|停工|渗漏|偏差|坍塌|事故|失效)/u.test(n)||a.push("风险/后果"),a.length&&b.push({code:"tender-key-difficulty-generic",severity:"warning",sectionId:e.sectionId,message:`重点难点缺少${a.join("、")}:可能只是通用措施;应按项目对象/约束/后果/控制/责任/依据写。`})}for(let a of n.split(/\n\s*\n/u)){let b=a.trim();if(!b||/^#{1,6}\s/u.test(b)||/^\|/u.test(b)||/^[-*]\s/u.test(b))continue;let c=f(b);if(c.length<40)continue;let d=m.get(c)??{count:0,sections:new Set,sample:b.slice(0,80)};d.count+=1,d.sections.add(e.sectionId),m.set(c,d)}}for(let a of m.values())a.count>1&&a.sections.size>1&&b.push({code:"tender-duplicate-content",severity:"warning",message:`同一段落在 ${a.sections.size} 个章节重复出现(${a.count} 次):「${a.sample}…」;不跨节重复同一内容。`});let n=/^#{2,6}\s*(?:\d+(?:\.\d+)*\s*)?(?:编制依据|编制说明|规范依据|标准依据)/mu.exec(a.markdown),o=/^(?:编制依据|编制说明|规范依据|标准依据)[::]/mu.test(a.markdown),p=a.contract.sections.some(a=>/编制依据|编制说明|规范依据|标准依据/u.test(a.title));return(n||o)&&!p&&b.push({code:"tender-unsolicited-basis",severity:"warning",message:"正文出现独立的「编制依据/编制说明/规范目录」,但冻结合同没有这一节:不要重复编制内容;依据应在首次引用处写明。"}),{issues:[...new Map(b.map(a=>[a.code+":"+(a.sectionId??"")+":"+a.message,a])).values()],requiredOutputs:c}}},21456:(a,b,c)=>{c.d(b,{p:()=>f});var d=c(92736),e=c(14911);function f(a){let b=(0,e.nD)(a)?.key??a.fieldId??a.key,c=["excavation_depth","pit_bottom_elevation","ground_elevation","pile_length","pile_diameter","foundation_depth","foundation_elevation"].includes(b),f="excavation_layer_depth"===b,g=a.resolutionRef?.winnerSourceRef?.sourceSpan??a.sourceRef?.sourceSpan??a.value,h=/[+-]?\d+(?:\.\d+)?\s*(?:mm|毫米|cm|厘米|m|米)?\s*(?:~|~|–|—|至|到|-)\s*[+-]?\d/u.test(a.value),i=/(?:约|大约|左右|大致|估计)\s*[+-]?\d|\d\s*(?:米|m)?\s*左右/u.test(a.value)||c&&["约","大约","大致"].some(b=>(0,d.K3)(g).includes(b+(0,d.K3)(a.value))),j=c&&!(/[+-]?\d+(?:\.\d+)?\s*(?:mm|毫米|cm|厘米|m|米)(?![a-z²2])/iu.test(a.value)||/^[+-]?\d+(?:\.\d+)?$/u.test(a.value.trim())&&/^(?:mm|毫米|cm|厘米|m|米)$/iu.test(a.unit??"")),k=a.objectName?.trim(),l=c&&(!k||/^(?:[\dA-Za-z\s\-—~~]+)?(?:剖面(?:图)?|截面(?:图)?|详图|平面图)(?:[((][^))]*[))])?$/u.test(k));return{role:c?"design-geometry":f?"construction-control":"other",precision:j?"unresolved":h?"range":i?"approximate":"exact",objectBinding:c?l?"unbound":"bound":"not-required",requiresTechnicalDecision:c&&(h||i||j||l),...c&&(h||i||j||l)?{reason:j?"该属性尚未提供具有明确单位的几何控制值,资料指向语和高程基准名称不能冒充坑底标高或深度;须主控核定对象、工况与控制值":l?"数值精确不代表施工对象已确定;须核定实际区段或构件,不能把未绑定属性或来源剖面编号推广为全工程控制值":"这是工程概述范围或约数;须核定具体部位、工况及同一基准的控制值,不能取端点或平均值冒充施工值"}:{}}}},28013:(a,b,c)=>{c.d(b,{EF:()=>l,Lz:()=>h,bP:()=>m,ut:()=>g});let d=/^(?:表|图)\s*\d+(?:[..\-—–]\d+)*\s*[::.、]?\s*/u,e=/^(?:第[一二三四五六七八九十百零〇\d]+[章节]\s*|\d+(?:[..]\d+)*[.、.]?\s*)/u;function f(a){return a?a.replace(d,"").replace(e,"").trim():""}function g(a){let b=[],c=new Map(a.contract.sections.map(a=>[a.id,a])),d=new Map,e=new Map;for(let f of a.units){let a=f.entityId;if(!a?.trim()){b.push({code:"carrier-section-ambiguous",unitId:f.unit.id,message:`表/图单元「${f.unit.id}」缺少持久化实体 id,不能登记载体`});continue}if("paragraph"===f.unit.kind)continue;let g=[...new Set(f.sectionIds.filter(a=>c.has(a)))];if(!g.length){b.push({code:"carrier-section-ambiguous",unitId:a,message:`表/图单元「${f.unit.id}」没有有效的所属章节,不能分配编号`});continue}g.length>1&&b.push({code:"carrier-section-ambiguous",unitId:a,sectionId:g[0],message:`表/图单元「${f.unit.id}」同时声明在多个章节(${g.join("、")});同一张载体只能属于一节,其余节请改为引用`});let h=g[0],i=e.get(a);if(i&&i!==h){b.push({code:"carrier-section-ambiguous",unitId:a,sectionId:h,message:`表/图单元「${f.unit.id}」同时声明在多个章节(${i}、${h});同一张载体只能属于一节`});continue}e.set(a,h);let j=d.get(h)??[];j.push(f),d.set(h,j)}let g=[],h=new Map,i=new Map,j=new Map,k=new Map,l=(b,c)=>{let d=a.sectionPlans?.get(b);if(!d?.subsections.length)return[...c];let e=c.map((a,b)=>({source:a,index:b})),f=new Map(d.subsections.map((a,b)=>[a.subsectionId,b])),g=a=>{let b="string"==typeof a.blockId?a.blockId.trim():"";if(!b)return Number.MAX_SAFE_INTEGER;let c=d.subsections.find(b=>b.subsectionId===a.subsectionId),e=(c?.writingOutline??[]).findIndex(a=>a.blockId===b);return e>=0?e:Number.MAX_SAFE_INTEGER};return e.sort((a,b)=>{let c=f.get(String(a.source.unit.subsectionId??""))??Number.MAX_SAFE_INTEGER,d=f.get(String(b.source.unit.subsectionId??""))??Number.MAX_SAFE_INTEGER;if(c!==d)return c-d;let e=g(a.source.unit),h=g(b.source.unit);return e!==h?e-h:a.index-b.index}).map(a=>a.source)};return a.contract.chapters.forEach((a,e)=>{let m=e+1,n=0,o=0;for(let e of a.sectionIds)for(let a of l(e,d.get(e)??[])){let d=a.unit;if("table"!==d.kind&&"figure"!==d.kind||h.has(a.entityId))continue;let k="table"===d.kind?++n:++o,l=`${"table"===d.kind?"表":"图"}${m}-${k}`,p=f(d.caption);p||(p=f(d.heading)),!p&&d.planChart?.view&&(p="schedule"===d.planChart.view?"施工总进度计划横道图":"施工总进度计划网络图"),p||(p=f(c.get(e)?.title)),p?f(d.caption)||f(d.heading)||d.planChart?.view||b.push({code:"carrier-caption-missing",unitId:d.id,sectionId:e,message:`${l} 没有作者题注,已临时回退为节标题「${p}」;请补充能区分本载体的实际主题`}):b.push({code:"carrier-caption-missing",unitId:d.id,sectionId:e,message:`${l} 缺少可读题注:请在表/图单元填写 caption(只写主题,不写编号),不要用章节名代替`});let q=p?`${l} ${p}`:l,r={unitId:a.entityId,kind:d.kind,chapter:m,ordinal:k,label:l,caption:q,title:p,sectionId:e};g.push(r),h.set(a.entityId,r),i.set(`${e}\0${d.id}`,r),j.has(l)?b.push({code:"carrier-number-duplicate",unitId:d.id,sectionId:e,message:`载体编号「${l}」重复:编号必须全篇唯一`}):j.set(l,r)}k.set(a.id,m)}),{carriers:g,byUnitId:h,byScopedUnitId:i,byLabel:j,issues:b}}function h(a){let b=[...a.carriers.issues],c=(c,d,e)=>{let f=l(c,a.carriers,{unitId:d,sectionId:e});return b.push(...f.issues),f.text};return{units:a.units.map(b=>{let d=b.unit;if("paragraph"===d.kind)return d.text?{...d,text:c(d.text,b.entityId,b.sectionIds[0])}:d;let e=a.carriers.byUnitId.get(b.entityId),f=e?.caption??d.caption;if("table"===d.kind){let a=d.rows?.map(a=>{let d={};for(let[e,f]of Object.entries(a.cells??{}))d[e]="string"==typeof f?c(f,b.entityId,b.sectionIds[0]):String(f??"");return{...a,cells:d}});return{...d,...f?{caption:f}:{},...a?{rows:a}:{}}}return{...d,...f?{caption:f}:{}}}),issues:b}}let i=/\{\{\s*(?:carrier|table|figure)\s*:\s*([^}]+?)\s*\}\}/gu,j=/(?:见|按|如|详见|参见|根据|依据|按照|参照|比照|遵照|结合)\s*(表|图)\s*(\d+(?:[..\-—–]\d+)?)/gu,k=/^\s*(?:表|图)\s*\d+(?:[..\-—–]\d+)?\s+\S/u;function l(a,b,c={}){let d=[],e=a.replace(i,(e,f,g)=>{let h=(c.sectionId?b.byScopedUnitId.get(`${c.sectionId}\0${f.trim()}`):void 0)??b.byUnitId.get(f.trim())??b.byLabel.get(f.trim());if(!h)return d.push({code:"carrier-reference-unresolved",unitId:c.unitId,sectionId:c.sectionId,message:`内部引用「${f.trim()}」找不到对应表/图:请引用真实的单元 id,或删除该引用`}),e;let i=a.slice(0,g).replace(/\s+$/u,"");return/表$/u.test(i)&&h.label.startsWith("表")||/图$/u.test(i)&&h.label.startsWith("图")?h.label.slice(1):h.label}),f=(e=e.split(/\r?\n/u).map(a=>k.test(a)?a:a.replace(j,(a,e,f)=>{let g=e+f.replace(/[..—–]/gu,"-");return b.byLabel.get(g)?a.replace(`${e}${f}`,g):(d.push({code:"carrier-reference-unresolved",unitId:c.unitId,sectionId:c.sectionId,message:`引用了「${g}」,但全篇没有这张表/图:补建载体,或改成真实编号`}),a)})).join("\n")).match(i);f?.length&&d.push({code:"carrier-reference-leaked",unitId:c.unitId,sectionId:c.sectionId,message:`成稿残留内部引用标记:${f.slice(0,3).join("、")};发布前必须解析成中文表号/图号`});let g=e.match(/[表图][a-z][a-z0-9]*(?:-[a-z0-9]+)+/u);return g?.length&&d.push({code:"carrier-reference-leaked",unitId:c.unitId,sectionId:c.sectionId,message:`成稿疑似残留内部单元 id:${g.slice(0,3).join("、")};改成真实表号/图号或 {{table:<表单元id>}} 标记`}),{text:e,issues:d}}function m(a,b){let c=[];return{markdown:a.split(/\r?\n/u).map(a=>{if(k.test(a))return a;let d=l(a,b);return c.push(...d.issues),d.text}).join("\n"),issues:c}}},36487:(a,b,c)=>{c.d(b,{j:()=>m});var d=c(17341),e=c(14911),f=c(92736),g=c(10398),h=c(78936),i=c(82e3),j=c(21456),k=c(42170),l=c(46788);function m(a,b,c){let m=c&&new Set(c.allowedFilePaths),n=a=>!a||!m||m.has(a),o=a=>!m||m.has(a.sourceFile)&&n(a.sourceRef?.filePath)&&n(a.resolutionRef?.originalSourceFile)&&n(a.resolutionRef?.winnerSourceFile)&&n(a.resolutionRef?.winnerSourceRef?.filePath)&&(a.derivation?.inputs??[]).every(a=>n(a.sourceFile))&&(a.temporalConstraint?.history??[]).every(a=>n(a.sourceFile)),p=b.attribute.trim(),q=e.nC.find(a=>a.key===p||a.label===p||a.aliases.includes(p)),r=[...a.facts,...a.sourceControls??[]].filter(a=>o(a)&&(q?(0,e.nD)(a)?.key===q.key:a.fieldId===p||a.fieldName===p||a.key===p)&&(!b.valueDomain||(0,d.IL)(a.value)===b.valueDomain)),s=q&&e.zT.has(q.key),t=r.filter(a=>!b.objectName||a.objectName===b.objectName||s&&"项目主体"===b.objectName&&!a.objectName),u=r.filter(a=>!a.objectName&&!s),v=new Map(t.filter(b=>Object.hasOwn(a.sources,b.resolutionRef?.winnerSourceFile??b.sourceFile)).map(b=>[b,(0,l.Q)(a,b)])),w=t.filter(b=>Object.hasOwn(a.sources,b.sourceFile)&&(0,g.j)(b)&&(!b.resolutionRef||!!(b.resolutionRef.winnerSourceFile&&Object.hasOwn(a.sources,b.resolutionRef.winnerSourceFile)))&&v.get(b)?.status==="eligible"),x=new Set(w.map(a=>(0,f.K3)(a.value))),y=new Set(w.map(a=>a.objectName).filter(Boolean)),z=w.filter(a=>a.controlContext),A=new Map;for(let a of z){let b=a.controlContext,c=JSON.stringify([b.objectName,b.attribute,b.condition,b.baseline,b.relation]),d=A.get(c)??new Set;d.add((0,f.K3)(a.value)),A.set(c,d)}let B=[...A.values()].some(a=>a.size>1),C=t.length&&t.every(a=>"technical_parameter"===a.fieldId),D=C&&t.some(b=>v.get(b)?.status==="eligible"&&(0,h.P)(a,b)),E=r.length?t.some(a=>v.get(a)?.status==="unresolved")?"needs-source-version-decision":w.some(a=>(0,j.p)(a).requiresTechnicalDecision)?"needs-technical-decision":!u.length||b.objectName&&t.length?w.length?B?"ambiguous":z.length===w.length&&(A.size>1||z.some(a=>"exact"!==a.controlContext.relation))?"conditioned":C&&z.length!==w.length?"needs-context-interpretation":x.size>1||!b.objectName&&y.size>1?"ambiguous":"resolved":D?"needs-context-interpretation":"unmeasured":"unbound":"unmeasured",F=[];for(let b of t){let c=b.resolutionRef?.winnerSourceFile??b.sourceFile,f=b.resolutionRef?b.resolutionRef.winnerSourceRef??null:b.sourceRef??null,g={factId:(0,e.vg)(b),...(0,i.mk)(a,(0,e.vg)(b),(0,h.P)(a,b)),objectName:b.objectName??(s?"项目主体":null),attribute:b.fieldId||b.fieldName||b.key,value:b.value,valueDomain:(0,d.IL)(b.value),technicalMeaning:(0,j.p)(b),sourceFile:c,sourceFingerprint:a.sources[c]?.sha256??null,sourceVersionEligibility:v.get(b)??{status:"unmeasured",decisionIds:[],reason:"没有对应当前冻结解析来源身份"},sourceSemantics:b.sourceSemantics??(0,k.Q)(f?.roleId??b.roleId,f?.processingType??b.processingType),sourceRef:f,sourceEvidenceId:(0,h.P)(a,b),resolutionRef:b.resolutionRef??null,derivation:b.derivation??null,temporalConstraint:b.temporalConstraint??null,confidence:b.confidence};F.push({...g,controlContext:b.controlContext??null})}let G=new Set(t.map(b=>(0,h.P)(a,b)).filter(Boolean)),H=(a.sourceControls??[]).filter(a=>o(a)&&G.has((0,e.vg)(a))).map(b=>({sourceEvidenceId:(0,e.vg)(b),...(0,i.mk)(a,void 0,(0,e.vg)(b)),sourceFile:b.sourceFile,chunkIndex:b.sourceRef?.chunkIndex,value:b.value}));return{snapshotId:a.snapshotId,attribute:p,objectName:b.objectName??null,status:E,value:"resolved"===E?w[0].value:null,candidates:F,totalCandidates:t.length,complete:!0,statusScope:m?"authorized-matching-facts":"all-matching-facts",unboundCandidates:b.objectName?u.map(a=>(0,e.vg)(a)):[],unboundTotal:u.length,sourceEvidence:H,diagnosis:{phase:r.length?t.length?"needs-source-version-decision"===E?"source-use":"unbound"===E?"object-binding":"needs-technical-decision"===E||"needs-context-interpretation"===E||"conditioned"===E?"control-context":"ambiguous"===E?"value-resolution":w.length?"resolved":"fact-admission":"object-binding":"attribute-extraction",matchingAttributeRecords:r.length,matchingObjectRecords:t.length,qualifiedRecords:w.length,sourceCorpusSearched:!1,provesMissingSource:!1,nextAction:r.length?t.length?"needs-context-interpretation"===E?"完整原文已返回;解释实际对象、属性和条件,不将裸数字多值当作冲突":"conditioned"===E?"按每条完整工况与控制性质分别使用,不压成全项目单值":"resolved"===E?"使用已提供事实及出处,不重复查询同一属性":"核对候选的具体来源、条件或准入原因,未决不表示原文缺料":u.length?"属性候选尚未关联指定对象;按已有原文上下文解释,不要求用户逐项核定":"已有其他对象的属性记录,指定对象未命中;核对具体对象及别名,不能说原文没有数据":"属性库未命中;按本任务具体问题检索冻结原文,不能凭属性零命中认定原文缺料"}}}},42170:(a,b,c)=>{c.d(b,{Q:()=>d});function d(a,b){return{originatingRoleId:a||"unknown",...b?{originatingProcessingType:b}:{},nature:"unmeasured",applicability:"unmeasured",evidenceScope:"provided-source-record"}}},45408:(a,b,c)=>{c.d(b,{$H:()=>q,CA:()=>h,Zc:()=>i,cu:()=>o,eL:()=>p,sX:()=>j,xN:()=>k});var d=c(77598),e=c(745);let f="document-delivery-placement-v1",g=a=>(0,d.createHash)("sha256").update(a).digest("hex"),h=a=>(0,e.Fu)({nodes:a.nodes??[],edges:a.edges??[],planChart:a.planChart??null}),i=a=>(0,e.Fu)(a??[]),j=a=>(a??[]).join("\n\n");function k(a,b,c){return{start:b,end:c,sha256:g(a.slice(b,c))}}let l=a=>(0,e.Fu)([...a].sort((a,b)=>a.outputId.localeCompare(b.outputId))),m=(a,b)=>a.location===b.location&&a.outputId===b.outputId&&a.obligationId===b.obligationId&&a.applicabilityBindingHash===b.applicabilityBindingHash&&a.originalFormContractHash===b.originalFormContractHash,n=a=>!!(a&&["technical-body","technical-appendix"].includes(a.location)&&a.outputId?.trim()&&a.obligationId?.trim()&&a.applicabilityBindingHash?.trim());function o(a,b=[]){let c=a.deliveryPlacement,d=b.filter(b=>b.outputId===a.outputId),e=1===d.length?d[0]:void 0;return c||e?c&&e&&n(e)&&a.outputId&&m({...c,...a.originalFormContractHash?{originalFormContractHash:a.originalFormContractHash}:{}},e)?{binding:{...e},issues:[]}:{issues:["位置声明未绑定当前输出义务/适用性/原格式身份;不能取得独立技术附表归属"]}:{issues:[]}}function p(a){let b={version:f,markdownSha256:g(a.markdown),body:k(a.markdown,0,a.bodyEnd),appendix:k(a.markdown,a.bodyEnd,a.markdown.length),units:a.units,outputPlacementsHash:l(a.outputPlacements??[])};return{...b,manifestHash:(0,e.Fu)(b)}}function q(a,b,c={}){let d=[],h=()=>({valid:!1,issues:[...new Set(d)],bodyMarkdown:a,appendixMarkdown:""});if(!b||b.version!==f||!Array.isArray(b.units))return d.push("缺少当前结构化交付位置回执"),h();try{let{manifestHash:f,...h}=b;(0,e.Fu)(h)!==f&&d.push("交付位置回执身份不符"),g(a)!==b.markdownSha256&&d.push("交付位置回执不属于当前全文");let i=b=>!!(b&&Number.isSafeInteger(b.start)&&Number.isSafeInteger(b.end)&&b.start>=0&&b.end>=b.start&&b.end<=a.length&&b.sha256===g(a.slice(b.start,b.end)));i(b.body)&&i(b.appendix)&&0===b.body.start&&b.body.end===b.appendix.start&&b.appendix.end===a.length||d.push("正文/技术附表区间不完整或原字身份不符"),c.outputPlacements&&l(c.outputPlacements)!==b.outputPlacementsHash&&d.push("交付位置回执的冻结输出计划已变化");let j=new Set,k=[];for(let e of b.units){(!e.entityId?.trim()||!e.unitId?.trim()||!e.sectionId?.trim()||j.has(e.entityId))&&d.push("交付位置单元身份缺失或重复"),j.add(e.entityId),i(e.range)&&e.range.end!==e.range.start||d.push("交付位置单元原字区间不符");let f="technical-body"===e.location?b.body:"technical-appendix"===e.location?b.appendix:void 0;if((!f||e.range.start<f.start||e.range.end>f.end)&&d.push("交付位置单元跨越正文/附表边界"),"technical-appendix"!==e.location||e.binding&&n(e.binding)&&"technical-appendix"===e.binding.location&&e.binding.outputId===e.outputId||d.push("技术附表缺少有效的原输出位置绑定"),"technical-appendix"!==e.location||e.bodyReference||d.push("技术附表缺少所属正文节的实际引用"),e.bodyReference&&(!i(e.bodyReference)||e.bodyReference.start<b.body.start||e.bodyReference.end>b.body.end)&&d.push("技术附表的正文引用区间不符"),e.originalFormContractHash&&e.binding?.originalFormContractHash!==e.originalFormContractHash&&d.push("原格式单元的当前契约绑定不符"),e.figure){("figure"!==e.kind||!e.figure.semanticHash?.trim()||!e.figure.notesHash?.trim()||!Array.isArray(e.figure.assetUrls)||e.figure.assetUrls.some(a=>"string"!=typeof a||!a.trim()))&&d.push("图件语义/说明/实际引用身份不完整");let b=[...a.slice(e.range.start,e.range.end).matchAll(/!\[[^\]\r\n]*\]\(([^)\r\n]+)\)/gu)].map(a=>a[1]);for(let a of e.figure.assetUrls)b.includes(a)||d.push("图件资产引用没有进入该单元实际原字区间")}else"figure"===e.kind&&d.push("图件单元缺少语义/说明/实际引用账");if(c.outputPlacements){let a=c.outputPlacements.find(a=>a.outputId===e.outputId);!a&&!e.binding||a&&e.binding&&m(a,e.binding)||d.push("交付位置单元绑定已失效")}if(c.units){let a=c.units.find(a=>a.entityId===e.entityId);a&&a.entityVersion===e.entityVersion&&a.entityHash===e.entityHash||d.push("交付位置单元版本/内容身份已变化"),a?.originalFormContractHash&&a.originalFormContractHash!==e.originalFormContractHash&&d.push("当前单元原格式契约已变化"),a?.figure&&(!e.figure||a.figure.semanticHash!==e.figure.semanticHash||a.figure.notesHash!==e.figure.notesHash)&&d.push("当前图件语义或说明已变化")}k.push(e.range)}c.units&&(c.units.length!==b.units.length||c.units.some(a=>!j.has(a.entityId)))&&d.push("当前生效单元未全部进入位置回执"),k.sort((a,b)=>a.start-b.start),k.some((a,b)=>b>0&&a.start<k[b-1].end)&&d.push("交付位置单元区间重叠"),b.appendix.end>b.appendix.start&&!b.units.some(a=>"technical-appendix"===a.location)&&d.push("技术附表区域没有实际绑定单元")}catch{d.push("交付位置回执无法完整验证")}return d.length?h():{valid:!0,issues:[],bodyMarkdown:a.slice(b.body.start,b.body.end),appendixMarkdown:a.slice(b.appendix.start,b.appendix.end)}}},46788:(a,b,c)=>{c.d(b,{Q:()=>f});var d=c(21456),e=c(44967);function f(a,b){return(0,e.bz)(a,function(a){let b=(0,d.p)(a);return{sourceFile:a.resolutionRef?.winnerSourceFile??a.sourceFile,quote:(a.resolutionRef?.winnerSourceRef??a.sourceRef)?.sourceSpan??a.value,sourceChunkIndex:(a.resolutionRef?.winnerSourceRef??a.sourceRef)?.chunkIndex,usage:"project-fact",attribute:a.fieldId??a.key,objectScope:a.objectName,assertedText:a.value,..."recommended_brand"===a.fieldId?{domain:"procurement-brand"}:"other"!==b.role?{domain:"construction-method"}:{}}}(b))}},59339:(a,b,c)=>{c.d(b,{B$:()=>j,Mf:()=>i,iP:()=>k,nI:()=>h,rL:()=>g});var d=c(745),e=c(69977),f=c(19045);function g(a){let b=(a?.sections??[]).flatMap(a=>a.requiredOutputs.flatMap(a=>{if(!a.id||!a.obligationId||!(0,e.oY)(a))return[];let b=a.applicability;return"technical-body"!==b.delivery.location&&"technical-appendix"!==b.delivery.location?[]:[{location:b.delivery.location,outputId:a.id,obligationId:a.obligationId,applicabilityBindingHash:b.bindingHash,...a.originalForm&&(0,f.do)(a.originalForm,b)?{originalFormContractHash:a.originalForm.hash}:{}}]})),c=new Map;for(let a of b){if(c.has(a.outputId)&&(0,d.Fu)(c.get(a.outputId))!==(0,d.Fu)(a))throw Error(`CONSTRUCTION_OUTPUT_DELIVERY_CONFLICT:${a.outputId}`);c.set(a.outputId,a)}return[...c.values()]}function h(a,b,c){let d=(b?.sections??[]).filter(a=>!c||c.includes(a.sectionId)).flatMap(a=>a.requiredOutputs).filter(b=>b.id===a.outputId);return 1===d.length?d[0]:void 0}function i(a,b,c){let{deliveryPlacement:d,originalFormContractHash:e,...f}=a,i=h(a,b,c),j=i&&g(b).find(a=>a.outputId===i.id);return{...f,...j?{deliveryPlacement:{location:j.location,outputId:j.outputId,obligationId:j.obligationId,applicabilityBindingHash:j.applicabilityBindingHash},...j.originalFormContractHash?{originalFormContractHash:j.originalFormContractHash}:{}}:{}}}function j(a,b,c){let e=i(a,b,c),g=[];((0,d.Fu)(a.deliveryPlacement??null)!==(0,d.Fu)(e.deliveryPlacement??null)||a.originalFormContractHash!==e.originalFormContractHash)&&g.push("WRITING_DELIVERY_BINDING_INVALID");let j=h(a,b,c);if(j?.applicability?.delivery.originalForm==="required")if(j.originalForm&&(0,f.do)(j.originalForm,j.applicability))for(let b of(0,f.O9)({contract:j.originalForm,unit:a}).checks.filter(a=>"met"!==a.status))g.push(`WRITING_ORIGINAL_FORM:${b.id}:${b.reason}`);else g.push("WRITING_ORIGINAL_FORM_CONTRACT_UNMEASURED");return g}function k(a){return b=>{let c=h(b,a);if(!c?.originalForm||!c.applicability||!(0,f.do)(c.originalForm,c.applicability)||b.originalFormContractHash!==c.originalForm.hash)return;let d=(0,f.O9)({contract:c.originalForm,unit:b});return"met"===d.status?d.html:void 0}}},61485:(a,b,c)=>{c.d(b,{Fw:()=>k,IQ:()=>g,O0:()=>p,O4:()=>o,RL:()=>r,S2:()=>m,T9:()=>q,cD:()=>s,dT:()=>i,fv:()=>j,pk:()=>n,ze:()=>l});var d=c(745),e=c(47353),f=c(60702);function g(a,b=[]){return a?(0,d.Fu)(JSON.parse(JSON.stringify({spec:a,sources:b,qualification:"frozen-input-not-professional-acceptance"}))):void 0}let h=e.E3,i="construction-independent-review-v24";function j(a){let b=a??{},c=[],d="string"==typeof b.reviewerId?b.reviewerId.trim():"";d||c.push({code:"REVIEW_ASSESSMENT_REVIEWER_REQUIRED",message:"审查档位必须带审查者身份"});let e=void 0===b.reviewKind?void 0:"unit"===b.reviewKind||"source-coverage"===b.reviewKind?b.reviewKind:null;null===e&&c.push({code:"REVIEW_ASSESSMENT_KIND_INVALID",message:"审查档位类别 reviewKind 只接受 unit 或 source-coverage"}),void 0===b.reviewInvocationId||"string"==typeof b.reviewInvocationId&&b.reviewInvocationId.trim()||c.push({code:"REVIEW_ASSESSMENT_INVOCATION_INVALID",message:"审查调用身份必须是非空字符串"}),void 0===b.reviewPromptVersion||"string"==typeof b.reviewPromptVersion&&b.reviewPromptVersion.trim()||c.push({code:"REVIEW_ASSESSMENT_PROMPT_VERSION_INVALID",message:"审查提示版本必须是非空字符串"}),void 0===b.reviewModelIdentity||"string"==typeof b.reviewModelIdentity&&b.reviewModelIdentity.trim()||c.push({code:"REVIEW_ASSESSMENT_MODEL_IDENTITY_INVALID",message:"审查模型身份必须是非空字符串"}),void 0===b.reviewBidCompositionHash||"string"==typeof b.reviewBidCompositionHash&&/^[a-f0-9]{64}$/u.test(b.reviewBidCompositionHash)||c.push({code:"REVIEW_ASSESSMENT_BID_BINDING_INVALID",message:"编制规则绑定必须是实际冻结输入的完整SHA256"});let f=b.reviewTenderResponseBinding;void 0!==f&&(!f||"string"!=typeof f.hash||!/^[a-f0-9]{64}$/u.test(f.hash)||!Array.isArray(f.sectionIds)||!f.sectionIds.length||f.sectionIds.some(a=>"string"!=typeof a||!a.trim())||new Set(f.sectionIds).size!==f.sectionIds.length)&&c.push({code:"REVIEW_ASSESSMENT_TENDER_BINDING_INVALID",message:"招标响应绑定必须包含实际送审章节范围与完整SHA256"});let g=Array.isArray(b.unitRefs)?b.unitRefs.map(a=>a):[];(!g.length||g.some(a=>"string"!=typeof a.id||!a.id.trim()||!Number.isSafeInteger(a.version)||1>Number(a.version)))&&c.push({code:"REVIEW_ASSESSMENT_UNIT_REF_REQUIRED",message:'被审成果必须是"单元实体 id + 实际版本"的非空数组'});let i=b.reviewContextUnitRefs;void 0!==i&&(!Array.isArray(i)||i.some(a=>!a||"string"!=typeof a.id||!a.id.trim()||!Number.isSafeInteger(a.version)||a.version<1)||new Set(i.map(a=>a.id)).size!==i.length)&&c.push({code:"REVIEW_ASSESSMENT_CONTEXT_REF_INVALID",message:"关联正文读集必须是无重复的实际单元实体 id 与正整数版本"});let j=Array.isArray(b.levels)?b.levels.map(a=>a):[];for(let[a,b]of(j.length||c.push({code:"REVIEW_ASSESSMENT_LEVELS_REQUIRED",message:"必须至少给出一条准则的档位(审了哪几条就写哪几条,不写就是未测)"}),j.entries()))("string"==typeof b.criterionId?b.criterionId.trim():"")||c.push({code:"REVIEW_ASSESSMENT_CRITERION_REQUIRED",message:`第 ${a+1} 条档位缺 criterionId`}),h.includes(String(b.level))||c.push({code:"REVIEW_ASSESSMENT_LEVEL_INVALID",message:`第 ${a+1} 条档位「${String(b.level)}」不在允许集合:${h.join("/")}`}),"string"==typeof b.reason&&b.reason.trim()||c.push({code:"REVIEW_ASSESSMENT_REASON_REQUIRED",message:`第 ${a+1} 条档位缺理由`}),Array.isArray(b.evidence)&&b.evidence.every(a=>"string"==typeof a&&a.trim())||c.push({code:"REVIEW_ASSESSMENT_EVIDENCE_REQUIRED",message:`第 ${a+1} 条档位缺证据引用(没有依据的档位不得登记)`});new Set(j.map(a=>String(a.criterionId))).size!==j.length&&c.push({code:"REVIEW_ASSESSMENT_CRITERION_DUPLICATE",message:"同一准则只能给一条档位"});let k=b.claimReviews;k&&(!Array.isArray(k)||k.some(a=>!a?.claimId?.trim()||!["supported","contradicted","unmeasured"].includes(a.status)||!a.reason?.trim()||!Array.isArray(a.evidence)||a.evidence.some(a=>"string"!=typeof a||!a.trim()))||new Set(k.map(a=>a.claimId)).size!==k.length)&&c.push({code:"REVIEW_CLAIM_ASSESSMENT_INVALID",message:"主张审查须逐claimId给supported/contradicted/unmeasured、理由与真实证据"}),k&&1!==g.length&&c.push({code:"REVIEW_CLAIM_ASSESSMENT_SINGLE_UNIT_REQUIRED",message:"主张支持结论按具体单元登记,不能把同名claimId跨单元合并"});let l=b.originalFormReviews;l&&(!Array.isArray(l)||1!==g.length||l.some(a=>!a?.outputId?.trim()||!/^[a-f0-9]{64}$/u.test(a.contractHash)||!["met","not-met","unmeasured"].includes(a.status)||!a.reason?.trim()||!Array.isArray(a.evidence)||a.evidence.some(a=>"string"!=typeof a||!a.trim()))||new Set(l.map(a=>a.outputId)).size!==l.length)&&c.push({code:"REVIEW_ORIGINAL_FORM_ASSESSMENT_INVALID",message:"原格式独审须绑定唯一单元、输出与契约,明确状态及实际证据"});let m=b.reviewContinuation;return(!m||/^[a-f0-9]{64}$/u.test(m.basisHash)&&Array.isArray(m.criterionIds)&&Array.isArray(m.priorLevels)||c.push({code:"REVIEW_ASSESSMENT_CONTINUATION_INVALID",message:"缺失准则续审须绑定实际先前档位与待补准则"}),"string"==typeof b.note&&b.note.trim()||c.push({code:"REVIEW_ASSESSMENT_NOTE_REQUIRED",message:"审查档位必须附总体说明"}),c.length)?{issues:c}:{issues:c,value:{reviewerId:d,...e?{reviewKind:e}:{},..."string"==typeof b.reviewInvocationId?{reviewInvocationId:b.reviewInvocationId.trim()}:{},..."string"==typeof b.reviewPromptVersion?{reviewPromptVersion:b.reviewPromptVersion.trim()}:{},..."string"==typeof b.reviewModelIdentity?{reviewModelIdentity:b.reviewModelIdentity.trim()}:{},..."string"==typeof b.reviewBidCompositionHash?{reviewBidCompositionHash:b.reviewBidCompositionHash}:{},...m?{reviewContinuation:m}:{},...k?{claimReviews:k}:{},...l?{originalFormReviews:l}:{},...Array.isArray(i)?{reviewContextUnitRefs:i.map(a=>({id:a.id,version:a.version}))}:{},...f?{reviewTenderResponseBinding:{sectionIds:[...f.sectionIds],hash:f.hash}}:{},unitRefs:g.map(a=>({id:String(a.id),version:Number(a.version)})),levels:j.map(a=>({criterionId:String(a.criterionId),level:a.level,reason:String(a.reason),evidence:a.evidence.map(a=>a.trim()),..."string"==typeof a.reviewInvocationId?{reviewInvocationId:a.reviewInvocationId}:{}})),note:String(b.note)}}}function k(a,b){return"review-assessment:"+(0,d.Fu)([a,[...b].sort()]).slice(0,24)}function l(a){let{store:b}=a,c=new Set(a.contract.criteria.map(a=>a.id)),e=a=>[...new Set(a.map(a=>String(a).trim()).filter(Boolean))].sort(),f=(a=[])=>{if(a.some(a=>!a||"string"!=typeof a.id||!a.id.trim()||!Number.isSafeInteger(a.version)||a.version<1)||new Set(a.map(a=>a.id)).size!==a.length)throw Error("REVIEW_ASSESSMENT_CONTEXT_REF_INVALID");return a.map(a=>({id:a.id,version:a.version})).sort((a,b)=>a.id.localeCompare(b.id))};return{prepareReviews(c){if(!c.length)throw Error("REVIEW_ASSESSMENT_UNITS_REQUIRED");let d=c.map(c=>{let d=e(c.unitEntityIds);if(!d.length)throw Error("REVIEW_ASSESSMENT_UNITS_REQUIRED");let g=f(c.reviewContextUnitRefs);for(let a of g){let c=b.entity(a.id);if(!c||c.deleted||"writing-unit"!==c.kind||c.version!==a.version)throw Error(`REVIEW_ASSESSMENT_CONTEXT_SUPERSEDED:${a.id}@${a.version}`)}return{unitEntityIds:d,reviewContextUnitRefs:g,assessmentId:k(a.authority.actorId,d)}}),g=[...new Set([...d.flatMap(a=>[...a.unitEntityIds,...a.reviewContextUnitRefs.map(a=>a.id)]),...d.map(a=>a.assessmentId)])],h={actorId:a.authority.actorId,type:"review-assessments",groups:d};return b.captureReadSnapshot({entityIds:g,groupKeys:[],context:h})},prepareReview(a){return this.prepareReviews([a])},proposeReviews(g,h,i,k){let l=b.readSnapshot(g),m=l.context??{};if(m.actorId!==a.authority.actorId||"review-assessments"!==m.type||!Array.isArray(m.groups))throw Error("REVIEW_ASSESSMENT_SNAPSHOT_SCOPE_DENIED");if(!i?.trim())throw Error("REVIEW_ASSESSMENT_REASON_REQUIRED");let n=m.groups;if(h.length!==n.length)throw Error("REVIEW_ASSESSMENT_SNAPSHOT_SCOPE_DENIED");let o=h.map(g=>{if(g.reviewerId!==a.authority.actorId)throw Error("REVIEW_ASSESSMENT_REVIEWER_SCOPE_DENIED");let h=e(g.unitEntityIds);for(let a of h){let c=b.entity(a)?.value?.responsibilityId;if(c&&c===g.reviewerId)throw Error(`REVIEW_ASSESSMENT_AUTHOR_DENIED:${g.reviewerId} 是单元 ${a} 的作者,不能作为审查主体`)}let i=n.find(a=>{let b;return b=a.unitEntityIds,b.length===h.length&&b.every((a,b)=>a===h[b])});if(!i)throw Error("REVIEW_ASSESSMENT_SNAPSHOT_SCOPE_DENIED");if((0,d.Fu)(f(g.reviewContextUnitRefs))!==(0,d.Fu)(i.reviewContextUnitRefs??[]))throw Error("REVIEW_ASSESSMENT_CONTEXT_SCOPE_DENIED");let{value:k,issues:m}=j({...g,unitEntityIds:h,unitRefs:l.reads.entities.filter(a=>h.includes(a.id)).map(a=>({id:a.id,version:a.version??0})),reviewContextUnitRefs:i.reviewContextUnitRefs??[]});if(!k)throw Error(`REVIEW_ASSESSMENT_INVALID:${m.map(a=>a.code).join(",")}`);for(let a of k.levels)if(!c.has(a.criterionId))throw Error(`REVIEW_ASSESSMENT_CRITERION_UNKNOWN:${a.criterionId}`);return{id:i.assessmentId,kind:"review-assessment",expectedVersion:b.entity(i.assessmentId)?.version??null,value:JSON.parse(JSON.stringify(k))}});return b.propose({actorId:a.authority.actorId,purpose:"independent-review",reason:i,reads:l.reads,changes:o},k)},proposeReview(a,b,c,d){return this.proposeReviews(a,[b],c,d)},evaluateReview:a=>b.evaluate(a,"construction-review-assessment-v1",a=>{let d=[];for(let e of a.proposal.changes){let{value:a,issues:f}=j(e.value);for(let a of f)d.push({code:a.code,entityId:e.id,reason:a.message});if(a){for(let c of a.unitRefs){let a=b.entity(c.id);!a||a.deleted?d.push({code:"REVIEW_ASSESSMENT_UNIT_MISSING",entityId:e.id,reason:`被审单元 ${c.id} 不存在或已删除`}):a.version!==c.version&&d.push({code:"REVIEW_ASSESSMENT_UNIT_SUPERSEDED",entityId:e.id,reason:`被审单元 ${c.id} 已是 v${a.version},这次档位绑定的是 v${c.version}(旧档位不自动继承)`})}for(let c of a.reviewContextUnitRefs??[]){let a=b.entity(c.id);(!a||a.deleted||"writing-unit"!==a.kind||a.version!==c.version)&&d.push({code:"REVIEW_ASSESSMENT_CONTEXT_SUPERSEDED",entityId:e.id,reason:`实际送审的关联单元 ${c.id}@${c.version} 已改版、退役或不存在`})}for(let b of a.levels)c.has(b.criterionId)||d.push({code:"REVIEW_ASSESSMENT_CRITERION_UNKNOWN",entityId:e.id,reason:`准则 ${b.criterionId} 不属于本合同`})}}let e=a.proposal.reads.entities.filter(a=>null!==a.version&&b.entity(a.id)?.version!==a.version);return{dataValidity:d.length?"invalid":"valid",relatedConstraints:e.length?"invalid":"valid",schedule:{scope:"local",state:"not-evaluated"},issues:[...d,...e.map(a=>({code:"READ_SUPERSEDED",entityId:a.id,reason:`读集里的 v${a.version} 已被新版本替代`}))],result:{reviewAssessments:a.proposal.changes.map(a=>a.id)}}}),commit(c,d){let e=b.proposal(c);if(!e||e.actorId!==a.authority.actorId)throw Error("REVIEW_ASSESSMENT_PROPOSAL_SCOPE_DENIED");return b.commit(c,d)}}}function m(a){let b,c=[];for(;;){let d=a.entityPage({groupKey:"review-assessments",...b?{afterId:b}:{},limit:200});for(let a of d.entities){if(a.deleted||!a.value)continue;let{value:b}=j(a.value);b&&c.push({id:a.id,value:b})}if(!d.nextAfterId)break;b=d.nextAfterId}return c}function n(a){return"source-coverage"===a.reviewKind?"source-coverage":"unit"}function o(a,b,c=i,d,e){if(void 0!==d&&b.reviewBidCompositionHash!==d||!b.reviewInvocationId?.trim()||(b.reviewPromptVersion??"")!==c)return!1;for(let c of b.reviewContextUnitRefs??[]){let b=a.entity(c.id);if(!b||b.deleted||"writing-unit"!==b.kind||b.version!==c.version)return!1}let g=new Set;for(let c of b.unitRefs){let b=a.entity(c.id);if(!b||b.deleted||b.version!==c.version)return!1;let d=b.value??{};for(let a of Array.isArray(d.sectionIds)?d.sectionIds.map(String):[])g.add(a);for(let b of[...Array.isArray(d.references)?d.references:[],...Array.isArray(d.assertions)?d.assertions.map(a=>a.reference??{}):[]]){if("certificate"===b.kind&&!a.certificate(String(b.certificateId))?.valid)return!1;if("decision"===b.kind){let c=a.entity(String(b.entityId));if(!c||c.deleted||c.version!==Number(b.entityVersion))return!1}}}let h=b.reviewTenderResponseBinding;if(h){if([...g].some(a=>!h.sectionIds.includes(a)))return!1;let a=(0,f.tenderResponseBinding)((0,f.tenderResponseProjection)(e,h.sectionIds),h.sectionIds);if(!a||a.hash!==h.hash)return!1}else if((0,f.tenderResponseProjection)(e,[...g]))return!1;return!0}function p(a,b){return b.unitRefs.every(c=>{let d=a.entity(c.id)?.value,e=d?.claims;return(!d?.originalFormContractHash||!!b.originalFormReviews?.some(a=>a.outputId===d.outputId&&a.contractHash===d.originalFormContractHash&&"met"===a.status))&&(!Array.isArray(e)||e.every(a=>b.claimReviews?.some(b=>b.claimId===a.id&&"supported"===b.status)))})}function q(a,b,c){let d=m(a),e={},f=0,g=0,i=a=>h.indexOf(a);for(let h of d)if("unit"===n(h.value)){if(!o(a,h.value,void 0,b,c)){g+=1;continue}if(f+=1,p(a,h.value))for(let a of h.value.levels){let b=e[a.criterionId];(void 0===b||i(a.level)<i(b))&&(e[a.criterionId]=a.level)}}return{levels:e,applied:f,stale:g}}function r(a,b,c){let d=Array.isArray(a.criterionIds)?a.criterionIds.map(String):[];return d.length?d:c.criteria.filter(a=>b.includes(String(a.sectionId??""))).map(a=>a.id)}function s(a,b){let c,d=b.scopeEntityIds?.length?new Set(b.scopeEntityIds.map(String)):void 0,e=[];for(;;){let f=a.entityPage({groupKey:`writing:${b.responsibilityId}`,...c?{afterId:c}:{},limit:200});for(let a of f.entities)if(!a.deleted&&"writing-unit"===a.kind&&a.value){if(d&&!(Array.isArray(a.value.sectionIds)?a.value.sectionIds.map(String):[]).some(a=>d.has(a)))continue;e.push({id:a.id,version:a.version,covered:!1})}if(!f.nextAfterId)break;c=f.nextAfterId}let f=m(a),g=0,h=0,i=new Map;for(let c of f)if("unit"===n(c.value)){if(!o(a,c.value,b.expectedPromptVersion,b.expectedBidCompositionHash,b.tenderResponsePlan)){h+=1;continue}if(g+=1,p(a,c.value))for(let a of c.value.unitRefs){let b=`${a.id}::${a.version}`,d=i.get(b)??new Set;for(let a of c.value.levels)d.add(a.criterionId);i.set(b,d)}}for(let c of e){let d=a.entity(c.id)?.value??{},e=d.sectionIds??[],f=b.contract?r(d,e,b.contract).filter(a=>b.contract.criteria.some(b=>b.id===a&&b.applicable)):Array.isArray(d.criterionIds)&&d.criterionIds.length?d.criterionIds.map(String):b.tenderResponsePlan?.sections.filter(a=>e.includes(a.sectionId)).flatMap(a=>a.criterionIds)??[],g=i.get(`${c.id}::${c.version}`);c.covered=f.length?f.every(a=>g?.has(a)):!!b.contract||!!g}let j=e.filter(a=>!a.covered).map(a=>a.id);return{complete:0===j.length,units:e,missingUnitIds:j,applied:g,stale:h}}},63072:(a,b,c)=>{c.d(b,{_D:()=>p,Vl:()=>k});let d=/(?:荣获|曾获|获得过|被评为)\s*[^。;\n]{2,24}/gu,e=/奖|杯|荣誉|称号|优秀|先进|示范|观摩|文明工地|优质工程/u,f=/(?:承接过|承建过)\s*[^。;\n]{2,24}/gu,g=/工程|项目|标段|业绩/u,h=/完成过\s*(?:[0-90-9一二三四五六七八九十两]+|[多若干]+)\s*(?:个|项|例|座|条|余项|余个)?\s*(?:类似|同类|以上的?)?\s*(?:工程|项目)/gu,i=/资质证书编号|证书编号|安全生产许可证编号|资质编号|营业执照注册号|统一社会信用代码|证号[::]/gu,j=/(?:设计|勘察|监理)单位|设计院|勘察院|监理公司|设计研究总院|设计研究院|设计总院/u;function k(a,b){if(!b)return[];let c=[];for(let b of a.matchAll(d))e.test(b[0])&&c.push(b[0].trim());for(let b of a.matchAll(f))g.test(b[0])&&c.push(b[0].trim());for(let b of a.matchAll(h))c.push(b[0].trim());for(let b of a.matchAll(i))j.test(function(a,b){let c=b;for(;c>0&&!/[。;;\n]/u.test(a[c-1]);)c-=1;let d=b;for(;d<a.length&&!/[。;;\n]/u.test(a[d]);)d+=1;return a.slice(c,d)}(a,b.index??0))||c.push(b[0].trim());if(0===c.length)return[];let k=[...new Set(c)];return[{level:"error",severity:"blocker",category:"format",owner:"llm",repairability:"llm_repairable",message:`正文出现投标人身份标记 ${k.length} 处:${k.slice(0,3).map(a=>`“${a.slice(0,30)}”`).join("、")}${k.length>3?" 等":""}(招标暗标要求不得出现明示或暗示具体投标人的说明及标记,包括以往的施工业绩)`,suggestion:"删除或改写身份标记句:以往业绩/获奖表述一律删除;证书资质类表述改写为不自证身份的施工管理口径(如“按规定持证上岗”),不得保留证书编号与奖项名称。"}]}let l=/^##\s+目录\s*$([\s\S]*?)(?=\n<div class="page-break"><\/div>|\n##\s+)/mu,m=/^##\s+(第[一二三四五六七八九十百千万\d]+章)\s+(.+)$/gmu,n=/^###\s+(\d+\.\d+)\s+(.+)$/gmu,o={一:1,二:2,三:3,四:4,五:5,六:6,七:7,八:8,九:9,十:10};function p(a){let b=l.exec(a);if(!b)return{markdown:a,fixedCount:0,details:[]};let c=[...a.matchAll(m)].map(a=>({ordinal:function(a){let b=a.replace(/^第|章$/gu,"");return/^\d+$/.test(b)?Number(b):void 0!==o[b]?o[b]:2===b.length&&"十"===b[0]?10+(o[b[1]??""]??0):void 0}(a[1]||""),heading:a[1]||"",title:a[2]?.trim()||""})).filter(a=>void 0!==a.ordinal&&a.title),d=[...a.matchAll(n)].map(a=>({number:a[1]||"",major:Number((a[1]||"0").split(".")[0]),title:(a[2]||"").trim()}));if(0===c.length||0===d.length)return{markdown:a,fixedCount:0,details:[]};let e=[];for(let a of c)for(let b of(e.push(`${a.heading} ${a.title}`),d.filter(b=>b.major===a.ordinal)))e.push(` ${b.number} ${b.title}`);let f=/^\s*(?:第[一二三四五六七八九十百千万\d]+章\s+\S|\d+\.\d+\s+\S)/u,g=b[1]??"",h=0,i=-1;for(let a of g.split("\n"))f.test(a)&&(i=h+a.length),h+=a.length+1;let j=i>=0?g.slice(i):/\n+$/u.exec(g)?.[0]??"",k=`## 目录
2
+
3
+ ${e.join("\n")}${j}`;return b[0]===k?{markdown:a,fixedCount:0,details:[]}:{markdown:a.slice(0,b.index)+k+a.slice(b.index+b[0].length),fixedCount:1,details:["目录按正文 H2/H3 实际结构重建"]}}},67001:(a,b,c)=>{c.d(b,{Q:()=>h});let d=a=>!!(a&&"object"==typeof a&&!Array.isArray(a)),e=(a,b)=>Object.keys(a).every(a=>b.includes(a)),f=a=>"number"==typeof a&&Number.isFinite(a)&&a>=0&&a<=1,g='合法形状:{coordinateSystem:"relative-schematic",placements:[{nodeId:"<节点id>",x:0.05,y:0.10,width:0.20,height:0.12}]};x/y/width/height 均为 0–1 相对值;连线折线由渲染器计算,不要自造 routes 字段。';function h(a,b,c){if(!d(a)||!e(a,["coordinateSystem","placements","routes"])||"relative-schematic"!==a.coordinateSystem||!Array.isArray(a.placements))throw Error("平面布置须明确相对示意坐标与全部节点位置,不能借节点边顺序冒充场地布局。"+g);if(a.placements.length!==b.length||new Set(a.placements.map(a=>a.nodeId)).size!==b.length||a.placements.some(a=>!d(a)||!e(a,["nodeId","x","y","width","height"])||!b.includes(a.nodeId)||!f(a.x)||!f(a.y)||!f(a.width)||!f(a.height)||0===a.width||0===a.height||a.x+a.width>1+1e-10||a.y+a.height>1+1e-10))throw Error("相对布置必须逐节点具有可用区域,不能缺项、越出图框或编造未知现场尺寸。"+g);for(let[b,c]of a.placements.entries())for(let d of a.placements.slice(b+1))if(c.x<d.x+d.width&&d.x<c.x+c.width&&c.y<d.y+d.height&&d.y<c.y+c.height)throw Error("平面布置的设施区域重叠,须按实际空间关系重新安排,不静默移动节点");return structuredClone(a)}},67931:(a,b,c)=>{c.d(b,{ez:()=>f,FT:()=>h});let d=JSON.parse('{"E":{"site-plan":{"requireLayout":true,"requireSchematic":true,"requireNorthArrow":true,"requireLegend":true,"requiredLabels":[{"key":"boundary","pattern":"边界|围墙|红线|用地范围"},{"key":"access","pattern":"出入口|大门|门卫|入口|出口"},{"key":"road","pattern":"道路|通道|运输|行车"},{"key":"temporary","pattern":"临设|临时设施|办公|生活|加工|仓库|库房"},{"key":"storage","pattern":"堆场|料场|材料|设备堆放|构件"},{"key":"utilities","pattern":"临水|临电|给水|排水|配电|用电|水源|电源"},{"key":"fire","pattern":"消防|防火|灭火|疏散"},{"key":"flow","pattern":"流向|人流|物流|进出|运输方向"}]},"gantt":{"requireBaseline":true,"requirePhases":true,"requireTasks":true,"requireMilestones":true,"requireDependencies":true,"requireCriticalPath":true,"requireAxis":true,"requireLegend":true},"network":{"requireBaseline":true,"requireMilestones":true,"requireDependencies":true,"requireCriticalPath":true,"requireFloat":true,"requireLegend":true},"org-chart":{"requireNodes":2,"requireEdges":1,"requireHierarchy":true,"requireLegend":true},"risk-control":{"requireNodes":2,"requireEdges":1,"requireLegend":true,"requiredGroups":[{"key":"identify","pattern":"识别|风险|危险源|隐患"},{"key":"countermeasure","pattern":"对策|措施|控制|防护"},{"key":"responsibility","pattern":"责任|岗位|责任人|班组"},{"key":"verification","pattern":"验证|验收|检查|复核|监测"}]},"process":{"requireNodes":2,"requireEdges":1,"requireDirection":true,"requireLegend":true},"generic":{"requireNodes":2,"requireEdges":1,"requireLegend":true}}}').E,e={boundary:"场地边界",access:"出入口",road:"主次道路",temporary:"临时设施",storage:"材料/设备堆场",utilities:"临水临电",fire:"消防通道/设施",flow:"人流物流方向"};function f(a){let b=String(a??"").trim();if(!b)return!1;let c=b.replace(/(?:非|不是|并非|不属于|不作|不用作|非为|不含)[^,。;,;、\n]*/gu,"");return/(?:总平面|平面布置|场地布置)/u.test(c)}function g(a,b){let c=(a.tasks??[]).some(a=>a.predecessors.length>0);return"gantt"===b?c:c||a.milestones.some(a=>a.predecessors.length>0)}function h(a,b={}){let c=function(a){if(a.planChart?.view==="schedule")return"gantt";if(a.planChart?.view==="network")return"network";if("risk-control"===a.figureSemantics)return"risk-control";if("org"===a.figureSemantics||"tree"===a.graphLayout)return"org-chart";if("process"===a.figureSemantics||"deployment"===a.figureSemantics)return"process";if(a.layout)return"site-plan";let b=a.caption??"";return/横道|甘特/u.test(b)?"gantt":/网络图/u.test(b)?"network":f(b)?"site-plan":/组织机构|组织图|汇报关系/u.test(b)?"org-chart":/危大|风险管控|重点难点管控/u.test(b)?"risk-control":/流程|工序|接口/u.test(b)?"process":"generic"}(a),i=d[c]??d.generic,j=[],k=a.nodes??[],l=a.edges??[];(a.caption??"").trim()||j.push({code:"figure-caption-missing",message:"图件必须有题注(只写主题,不写编号)"}),"site-plan"===c&&a.layout&&!/示意/u.test(a.caption??"")&&j.push({code:"figure-schematic-required",message:"相对坐标平面布置必须明确为示意,不得冒充测量比例或现场定位"}),i.requireLayout&&!a.layout&&j.push({code:"figure-layout-required",message:"施工总平面图必须给出场地边界与设施区域的相对示意布置(连线折线由渲染器计算)"}),i.requireNodes&&k.length<i.requireNodes&&j.push({code:"figure-too-sparse",message:`图件至少需要 ${i.requireNodes} 个真实节点(当前 ${k.length} 个)`}),i.requireEdges&&l.length<i.requireEdges&&j.push({code:"figure-too-sparse",message:`图件至少需要 ${i.requireEdges} 条真实关系(当前 ${l.length} 条)`});let m=`${a.caption??""}
4
+ ${a.nodes?.map(a=>a.label).join("\n")??""}
5
+ ${a.edges?.map(a=>a.label??"").join("\n")??""}`,n=(a.notes??[]).filter(a=>"string"==typeof a&&a.trim()),o=(a,b)=>n.some(c=>(c.includes(b)||b.split(/[/、]/u).map(a=>a.trim()).filter(Boolean).some(a=>c.includes(a))||c.toLowerCase().includes(a.toLowerCase()))&&/(?:不适用|不涉及|无此|不在|不设|无需|不表达|未涉及)/u.test(c));for(let a of i.requiredLabels??[]){let b=e[a.key]??a.key;RegExp(a.pattern,"u").test(m)||o(a.key,b)||j.push({code:"figure-contract-missing-element",element:a.key,message:`施工总平面缺少「${b}」:图内必须有该要素,或在 notes 中写明该要素在本项目不适用的具体理由`})}for(let a of i.requiredGroups??[])k.some(b=>RegExp(a.pattern,"u").test(b.group??""))||j.push({code:"figure-contract-missing-group",element:a.key,message:`危大/风险管控图缺少「${"identify"===a.key?"识别":"countermeasure"===a.key?"对策":"responsibility"===a.key?"责任岗位":"验证节点"}」分组(节点 group 必须有该语义)`});i.requireHierarchy&&"org"!==a.figureSemantics&&"tree"!==a.graphLayout&&j.push({code:"figure-hierarchy-required",message:"组织机构图必须声明组织树语义(figureSemantics=org 或 graphLayout=tree),不能用通用节点边图冒充"});let p=a.planBaseline??b.executionBaseline;return(i.requireBaseline||i.requirePhases||i.requireTasks||i.requireMilestones||i.requireDependencies||i.requireCriticalPath||i.requireFloat)&&!p&&j.push({code:"figure-baseline-required",message:"计划类图件必须由执行基准渲染;当前没有可用基准,不能手填图条或节点"}),p&&(i.requirePhases&&!p.phases.length&&j.push({code:"figure-phases-missing",message:"横道图缺少施工阶段:阶段必须来自执行基准"}),i.requireTasks&&!(p.tasks??[]).length&&j.push({code:"figure-tasks-missing",message:"横道图缺少任务级行:不能用阶段条冒充任务级横道"}),i.requireMilestones&&!p.milestones.length&&j.push({code:"figure-milestones-missing",message:"进度图缺少里程碑:里程碑必须来自执行基准"}),i.requireDependencies&&!g(p,c)&&j.push({code:"figure-dependencies-missing",message:"进度图缺少任务/里程碑依赖关系:无法计算关键线路"}),i.requireCriticalPath&&!g(p,c)&&j.push({code:"figure-critical-path-unmeasurable",message:"没有依赖关系就不能标关键线路;补齐基准前置关系或改用不含关键线路的载体"}),i.requireFloat&&!g(p,c)&&j.push({code:"figure-float-unmeasurable",message:"没有依赖关系就不能计算时差;不得标“时差 0”冒充关键线路"})),j}},69970:(a,b,c)=>{c.d(b,{Hr:()=>j,Kf:()=>h,m3:()=>l});var d=c(77598),e=c(85497),f=c(6158),g=c(45408);function h(a){return(0,f._C)(a)||(0,f.kO)(a)||(0,f.$O)(a)||!!a?.formatRules.cover||a?.documentTablePolicy==="forbidden"||a?.documentFigurePolicy==="forbidden"||a?.documentDiagramPolicy==="forbidden"||!!a?.contentPolicyScopes?.some(a=>"unresolved"===a.scope)}let i=(a,b,c)=>({level:"error",severity:"blocker",category:"format",owner:"system",message:b,provenance:{detectorId:a,fingerprint:(0,d.createHash)("sha256").update(JSON.stringify([a,c])).digest("hex")}}),j=a=>i("bid-body-unmeasured","正文图表及封面规则尚未通过实际Markdown解析核验,不能据保存的编制字段认定已满足",a),k=(a="")=>a.replace(/&#(?:x([0-9a-f]+)|([0-9]+));?/giu,(a,b,c)=>{let d=Number.parseInt(b??c,b?16:10);return d>=32&&d<=126||[9,10,12,13].includes(d)?String.fromCharCode(d):a}).replace(/&Tab;/gu," ").replace(/&NewLine;/gu,"\n").split(/[\t\n\f\r ]+/u);async function l(){let a=await (0,e.c0)();return b=>{if(!h(b.spec))return[];let c=[],d=b.markdown,j=b.unrenderedDiagramCount??0,l=j;if("unit"===b.scope&&b.unitPlacement){let a=(0,g.cu)(b.unitPlacement.unit,b.unitPlacement.outputPlacements);a.issues.length&&c.push(i("bid-body-placement-unmeasured",a.issues.join(";"),b.markdown)),a.binding?.location==="technical-appendix"&&(d="",j=0)}else if("unit"!==b.scope&&b.deliveryPlacements){let a=(0,g.$H)(b.markdown,b.deliveryPlacements,b.outputPlacements?{outputPlacements:b.outputPlacements}:{});a.valid?(d=a.bodyMarkdown,j&&b.deliveryPlacements.units.every(a=>a.kind)&&(j=Math.min(j,b.deliveryPlacements.units.filter(a=>"technical-body"===a.location&&"figure"===a.kind).length)),l=Math.max(l,b.deliveryPlacements.units.filter(a=>"figure"===a.kind).length)):c.push(i("bid-body-placement-unmeasured",`正文/技术附表位置尚未通过当前全文验身:${a.issues.join(";")}`,b.markdown))}let m=0,n=a.lexer(b.markdown),o=!1,p=!1,q=!1,r=!1,s=0;for(let b of n)"space"!==b.type&&("html"!==b.type||b.text.replace(/<!--[\s\S]*?-->/gu,"").trim())&&("html"===b.type?/^<div\s+class=["']document-cover["']\s*>\s*$/iu.test(b.text)?(o=!0,p=!1,q=!r):/^<\/div>\s*$/iu.test(b.text)?(o&&p&&q&&s++,o=!1):o&&(o=!1):o&&["heading","paragraph","text"].includes(b.type)&&a.walkTokens([b],a=>{("text"===a.type||"codespan"===a.type)&&a.text.replace(/&nbsp;|&#(?:160|x0*a0);/giu," ").trim()&&(p=!0)}),r=!0);a.walkTokens(n,a=>{if("html"===a.type)for(let b of(0,e.C4)(a.text))k(b.attributes.class).includes("document-cover")&&m++});let t=(c,d)=>{let f=0,g=d,h=0,i=a=>{a&&b.isVerifiedDiagram?.(a)?g++:h++};return a.walkTokens(a.lexer(c),a=>{if("table"===a.type&&f++,"image"===a.type&&i(a.href),"html"===a.type)for(let b of(0,e.C4)(a.text))"table"===b.name&&f++,"img"===b.name&&i(b.attributes.src),["svg","canvas","object","embed","image"].includes(b.name)&&h++}),{tables:f,diagrams:g,unknownGraphics:h}},{tables:u,diagrams:v,unknownGraphics:w}=t(d,j),x=t(b.markdown,l);for(let a of b.spec?.contentPolicyScopes??[])"unresolved"===a.scope&&("table"===a.kind?x.tables>0:"image"===a.kind?x.unknownGraphics>0:x.diagrams>0||x.unknownGraphics>0)&&c.push(i("bid-content-policy-scope-unresolved",`载体限制的作用域待独立核定,当前采用了对应载体,不能用附表位置自动豁免:${a.quote}`,b.markdown));return b.spec?.documentTablePolicy==="forbidden"&&x.tables&&c.push(i("bid-document-table",`全稿禁表:实际全文(含技术附表)含${x.tables}处表格;须按明确原条款修订`,b.markdown)),b.spec?.documentDiagramPolicy==="forbidden"&&x.diagrams&&c.push(i("bid-document-diagram",`全稿禁示意图/框图:实际全文(含技术附表)采用${x.diagrams}处原生图件`,b.markdown)),b.spec?.documentFigurePolicy==="forbidden"&&x.unknownGraphics?c.push(i("bid-document-image",`全稿禁图片:实际全文(含技术附表)含${x.unknownGraphics}处图形引用`,b.markdown)):b.spec?.documentDiagramPolicy==="forbidden"&&x.unknownGraphics&&c.push(i("bid-document-graphic-unmeasured",`全稿禁示意图/框图:实际全文${x.unknownGraphics}处图形性质尚未核定`,b.markdown)),"unit"!==b.scope&&b.spec?.formatRules.cover==="required"&&(1!==s||1!==m)&&c.push(i(m?"bid-cover-unmeasured":"bid-cover-required",m?"必需封面尚未证实采用:实际封面块为空、未闭合、重复、位于目录/正文之后或不属于现有Word/HTML共同支持的多行div包装;原字保留,不能用类名/字段代替完整封面":"必需封面缺失:实际整稿没有已采用的产品封面块;普通标题、代码示例或保存的编制字段不能代替封面",b.markdown)),b.spec?.formatRules.cover==="forbidden"&&m&&c.push(i("bid-cover-forbidden",`冻结规则禁止内封面:实际正文含${m}处产品封面块;保留原文,须修订后重新核验,普通标题不授封面身份`,b.markdown)),(0,f._C)(b.spec)&&u&&c.push(i("bid-body-table",`正文禁表:实际正文含${u}处表格语法;标题或“附表”字样不能代替独立附表归属`,b.markdown)),(0,f.$O)(b.spec)&&v&&c.push(i("bid-body-diagram",`正文禁示意图/框图:实际正文采用${v}处已绑定原生图件`,b.markdown)),w&&(0,f.kO)(b.spec)?c.push(i("bid-body-image",`正文禁图片:实际正文含${w}处未获原生图件验身的图形引用;不能凭扩展名或声明豁免`,b.markdown)):w&&(0,f.$O)(b.spec)&&c.push(i("bid-body-graphic-unmeasured",`正文禁示意图/框图:${w}处图形引用的实际性质尚未核定,不能作为纯图片豁免`,b.markdown)),c}}},78936:(a,b,c)=>{c.d(b,{P:()=>h,y:()=>i});var d=c(77598),e=c(21957),f=c(92736),g=c(42170);function h(a,b){let c=b.resolutionRef?.winnerSourceFile??b.sourceFile,d=b.resolutionRef?.winnerSourceRef??b.sourceRef;if(!Object.hasOwn(a.sources,c)||d?.chunkIndex===void 0)return;let g=a.sourceControls?.find(a=>"verified-source-excerpt"===a.roleId&&a.sourceFile===c&&a.sourceRef?.chunkIndex===d.chunkIndex);return g&&(!d.sourceSpan||(0,f.dP)((0,e.wj)(g.value),(0,e.wj)(d.sourceSpan)))?g.factId:void 0}function i(a){return a.filter(a=>a.content.trim()).map(a=>{let b=`source-excerpt:${(0,d.createHash)("sha256").update(JSON.stringify([a.filePath,a.chunkIndex,a.content])).digest("hex").slice(0,24)}`;return{factId:b,fieldId:b,key:"冻结原文片段",fieldName:"冻结原文片段",value:a.content,sourceFile:a.filePath,roleId:"verified-source-excerpt",processingType:a.processingType,confidence:.9,sourceSemantics:(0,g.Q)(a.roleId,a.processingType),sourceRef:{filePath:a.filePath,roleId:"verified-source-excerpt",sectionTitle:a.sectionTitle,chunkIndex:a.chunkIndex}}})}},85497:(a,b,c)=>{async function d(a){let{Marked:b}=await Promise.resolve().then(c.bind(c,83142));return new b({async:!1,gfm:!0,breaks:!0,...a?{renderer:a}:{},tokenizer:{del(a){if(a.startsWith("~~"))return!1}}})}function e(a){let b=a=>" ".repeat(a.length),c=a.replace(/<!--[\s\S]*?-->/gu,b).replace(/<(script|style|textarea)\b[^>]*>[\s\S]*?<\/\1\s*>/giu,b),d=[];for(let b of c.matchAll(/<([a-z][a-z0-9:-]*)\b((?:[^"'>]|"[^"]*"|'[^']*')*)>/giu)){let c,e=Object.create(null);for(let a of b[2].matchAll(/([^\s"'<>/=]+)(?:\s*=\s*(?:"([^"]*)"|'([^']*)'|([^\s"'=<>`]+)))?/gu)){let d=a[1].toLowerCase();if(Object.hasOwn(e,d))continue;e[d]=a[2]??a[3]??a[4]??"";let f=1+b[1].length+(a.index??0);"src"===d&&(c={start:f,end:f+a[0].length})}let f=b.index??0,g=f+b[0].length;d.push({name:b[1].toLowerCase(),attributes:e,raw:a.slice(f,g),start:f,end:g,...c?{sourceAttribute:c}:{}})}return d}function f(a,b){if(!a.sourceAttribute)return a.raw;let c=b.replace(/&/gu,"&amp;").replace(/"/gu,"&quot;");return a.raw.slice(0,a.sourceAttribute.start)+`src="${c}"`+a.raw.slice(a.sourceAttribute.end)}function g(a,b){let c="",d=0;for(let f of e(a)){if("img"!==f.name||!f.sourceAttribute)continue;let e=b(f);void 0!==e&&(c+=a.slice(d,f.start)+e,d=f.end)}return c+a.slice(d)}c.d(b,{C4:()=>e,DN:()=>g,c0:()=>d,ht:()=>f})},89900:(a,b,c)=>{c.d(b,{LI:()=>j,kq:()=>h,n7:()=>k,vZ:()=>l});var d=c(76760),e=c(73024);let f="win32"===process.platform;function g(a){return String(a??"").replace(/\\/gu,"/").replace(/^\/+/u,"").replace(/\/+/gu,"/")}function h(a,b){let c=d.relative(d.resolve(b),d.resolve(a));return!c||!(c.startsWith("..")||d.isAbsolute(c))}function i(a,b){return f?h(a.toLowerCase(),b.toLowerCase()):h(a,b)}function j(a,b,c={}){let f=function(a){let b=String(a??"");if(b.includes("\0"))return"nul_byte";if(/^(?:[A-Za-z]:[\\/]|[\\/]{1,2})/u.test(b))return"absolute";let c=g(b);if(!c||"."===c)return"empty";if(c.length>1e3)return"path_too_long";let d=c.split("/");return d.some(a=>!a)?"empty_segment":d.some(a=>".."===a)?"parent_segment":d.some(a=>a.length>255)?"segment_too_long":null}(b);if(f)return{ok:!1,reason:f};let h=g(b),k=d.resolve(a,h);if(!i(k,a))return{ok:!1,reason:"escapes_root"};try{let b=e.realpathSync(k),c=e.realpathSync(d.resolve(a));if(!i(b,c))return{ok:!1,reason:"escapes_root"}}catch{}return c.mustExist&&!e.existsSync(k)||c.requireFile&&e.existsSync(k)&&!e.statSync(k).isFile()?{ok:!1,reason:"empty"}:{ok:!0,relative:h,absolute:k}}function k(a,b,c={}){let f=String(a??"");if(!f||f.includes("\0"))return{ok:!1,reason:f.includes("\0")?"nul_byte":"empty"};let g=d.resolve(f),h=b.map(a=>d.resolve(a)).filter(Boolean);if(0===h.length)return{ok:!1,reason:"escapes_root"};let j=null;try{j=e.realpathSync(g)}catch{j=null}return h.some(a=>{let b;if(!i(g,a))return!1;if(null===j)return!0;try{b=e.realpathSync(a)}catch{return!0}return i(j,b)})?c.mustExist&&!e.existsSync(g)||c.requireFile&&e.existsSync(g)&&!e.statSync(g).isFile()?{ok:!1,reason:"empty"}:{ok:!0,relative:d.relative(h[0],g),absolute:g}:{ok:!1,reason:"escapes_root"}}function l(a){return({empty:"路径为空或不存在",nul_byte:"路径包含非法字符",absolute:"路径为绝对路径,只接受项目内相对路径",parent_segment:"路径包含上级目录引用(..)",empty_segment:"路径包含空目录段",segment_too_long:"路径中包含过长的名称",path_too_long:"路径过长",escapes_root:"路径不在允许的根目录范围内"})[a]||"路径不合法"}}};
@@ -0,0 +1 @@
1
+ "use strict";exports.id=9559,exports.ids=[9559],exports.modules={39559:(a,b,c)=>{c.d(b,{bindIndependentDeliveryPages:()=>j});var d=c(73024),e=c.n(d),f=c(76760),g=c.n(f),h=c(77598);c(95393),c(8176),c(98943),c(19898),c(88194),c(56766);let i=a=>(0,h.createHash)("sha256").update(a).digest("hex");function j(a,b,c){if(!c.trim()||b.some(a=>a.reviewer!==c||!a.notes?.length||a.notes.some(a=>"string"!=typeof a||!a.trim())||!["passed","issues"].includes(a.status)))throw Error("独立逐页意见须有实际审查者及每页具体说明");let d=b.map(a=>a.format+":"+a.page);if(new Set(d).size!==d.length)throw Error("逐页意见不能重复身份");let f=0;for(let c of a.files){if(i(e().readFileSync(c.path))!==c.sha256)throw Error("导出文件已变化,不能复用旧页面意见");let d=JSON.parse(e().readFileSync(g().join(g().dirname(c.auditPath),c.format+"-manifest.json"),"utf8")),h=e().readFileSync(c.auditPath);if(d.bodySha256!==a.bodySha256||d.runId!==a.runId||d.auditSha256!==i(h))throw Error("页面审计与同稿身份不符");let j=JSON.parse(h.toString("utf8"));if(j.pages.length!==c.pageCount)throw Error("实际页面数已变化");for(let a of j.pages){f++;let d=b.find(b=>b.format===c.format&&b.page===a.page);if(!d||d.imageSha256!==a.imageSha256||i(e().readFileSync(a.imagePath))!==a.imageSha256)throw Error("独立逐页意见缺页或像素身份不符")}}if(f!==b.length||2!==a.files.length||!a.files.some(a=>"docx"===a.format)||!a.files.some(a=>"pdf"===a.format))throw Error("独立意见必须分别覆盖同稿Word和PDF全部实际页面");let h=[...a.problems,...b.filter(a=>"issues"===a.status).flatMap(a=>a.notes.map(b=>`${a.format}第${a.page}页:${b}`))];return{...a,status:h.length?"issues":"passed",problems:[...new Set(h)],visualFindings:b}}},56766:(a,b,c)=>{c.d(b,{Dx:()=>t,GA:()=>s,kN:()=>r});var d=c(19898),e=c(31421),f=c(73024),g=c.n(f),h=c(48161),i=c.n(h),j=c(76760),k=c.n(j),l=c(73136),m=c(57975),n=c(88194),o=c.n(n);let p=(0,m.promisify)(e.execFile);async function q(a,b=!1,c=!1){let e;if(a.length)try{if(e=await (0,d.loadPdfDocument)(a),!Number.isInteger(e.pageCount)||e.pageCount<=0)return;let f=[];if(b)for(let a=0;a<e.pageCount;a+=1){let b=await e.getPage(a);try{f.push(await b.getText())}finally{await b.close()}}let g=new Map,h=a=>{for(let b of a)void 0!==b.page&&Number.isInteger(b.page)&&b.page>0&&b.page<=e.pageCount&&g.set(b.title,[...g.get(b.title)??[],b.page]),b.children.length&&h(b.children)};return c&&h(await e.getOutline()),{pages:e.pageCount,text:f.join(""),...c?{headingPages:Object.fromEntries([...g].filter(([,a])=>1===a.length).map(([a,b])=>[a,b[0]]))}:{}}}catch{return}finally{await e?.close()}}async function r(a){return(await q(a))?.pages}async function s(a){return(await q(a,!1,!0))?.headingPages}async function t(a,b={}){let c,d,e;if(!a||0===a.length)return{unavailableReason:"docx 为空"};try{let b=await o().loadAsync(a),d=await b.file("word/document.xml")?.async("string");if(!d)throw Error("正文缺席");c=[...d.matchAll(/<w:t(?:\s[^>]*)?>([\s\S]*?)<\/w:t>/gu)].map(a=>a[1]).join("")}catch{return{unavailableReason:"DOCX正文无法解析,不能验证真实渲染页数"}}let f=async a=>{let e=await q(a,!0,!0);if(!e)return;let f=function(a,b){let c=new Map,d=new Map;for(let b of a.match(/\p{Script=Han}/gu)??[])c.set(b,(c.get(b)??0)+1);let e=[...c.values()].reduce((a,b)=>a+b,0);if(e<20)return null;for(let a of b.match(/\p{Script=Han}/gu)??[])d.set(a,(d.get(a)??0)+1);return[...c].reduce((a,[b,c])=>a+Math.min(c,d.get(b)??0),0)/e}(c,e.text);if(null!==f&&f<.98)throw Error(`中文文字渲染未保留(覆盖率${(100*f).toFixed(1)}%),请核查渲染器中文字体;不能将缺字版式计为合格页数`);return d=e.headingPages,await b.onRenderedPdf?.(a),e.pages},h=g().mkdtempSync(k().join(i().tmpdir(),"real-pages-")),j={...process.env};if("darwin"===process.platform&&!j.FONTCONFIG_FILE){let a=["/System/Library/Fonts","/System/Library/Fonts/Supplemental","/Library/Fonts"].filter(a=>g().existsSync(a));if(a.length){let b=k().join(h,"fonts.conf"),c=a=>a.replace(/&/gu,"&amp;").replace(/</gu,"&lt;").replace(/>/gu,"&gt;");g().writeFileSync(b,`<?xml version="1.0"?><!DOCTYPE fontconfig SYSTEM "fonts.dtd"><fontconfig>${a.map(a=>`<dir>${c(a)}</dir>`).join("")}<cachedir>${c(k().join(h,"font-cache"))}</cachedir><alias><family>SimSun</family><prefer><family>Songti SC</family></prefer></alias><alias><family>宋体</family><prefer><family>Songti SC</family></prefer></alias></fontconfig>`),j.FONTCONFIG_FILE=b}}let m=k().join(h,"document.docx");g().writeFileSync(m,a);try{for(let a of function(){let a=[],b=process.env.CUSTOMIZE_DOCX_RENDERER;if(b){let c=g().existsSync(b.trim())?[b.trim()]:b.trim().split(/\s+/u);a.push({name:`env:${c[0]}`,command:c[0],args:c.slice(1)})}for(let b of["soffice","libreoffice"])a.push({name:b,command:b,args:[]});return a}()){let c,i=k().join(h,`out-${a.name.replace(/[^\w.-]/gu,"_")}`);g().mkdirSync(i,{recursive:!0});let n=a=>a.replace(/\{in\}/gu,m).replace(/\{out\}/gu,i).replace(/\{outfile\}/gu,k().join(i,"document.pdf")),o=a.args.length>0?a.args.map(n):[`-env:UserInstallation=${(0,l.pathToFileURL)(k().join(i,"profile")).href}`,"--headless","--convert-to","pdf","--outdir",i,m];try{await p(a.command,o,{timeout:b.timeoutMs??12e4,env:j})}catch(c){let b=c.code;if("ENOENT"===b)continue;e=`${a.name}:${c instanceof Error?c.message.split("\n")[0]:String(c)}`;continue}let q=k().join(i,"document.pdf");if(!g().existsSync(q)){let b,c=g().readdirSync(i).filter(a=>a.toLowerCase().endsWith(".pdf"));if(0===c.length){e=`${a.name}没有产生PDF`;continue}try{b=1===c.length?await f(g().readFileSync(k().join(i,c[0]))):void 0}catch(a){e=a instanceof Error?a.message:String(a);continue}if(void 0!==b)return{pages:b,renderer:a.name,headingPages:d};e=c.length>1?`${a.name}产生多个PDF,无法确认对应文档`:`${a.name}的PDF页树解析失败`;continue}try{c=await f(g().readFileSync(q))}catch(a){e=a instanceof Error?a.message:String(a);continue}if(void 0!==c)return{pages:c,renderer:a.name,headingPages:d};e=`${a.name}的PDF页树解析失败`}return{unavailableReason:e?`渲染器失败(${e})`:"未配置外部渲染器(CUSTOMIZE_DOCX_RENDERER 或 PATH 中的 soffice/libreoffice)——真页数待真渲染"}}finally{g().rmSync(h,{recursive:!0,force:!0})}}}};
@@ -0,0 +1,10 @@
1
+ "use strict";exports.id=9688,exports.ids=[9688],exports.modules={49303:(a,b,c)=>{c.d(b,{Ag:()=>j,En:()=>i,r0:()=>k});var d=c(68515);let e=["report-only","soft-pause","hard-stop"],f={version:"construction-run-budget-v1",perSection:{...d.pl.T6},perRun:{...d.pl.ti},inputSections:{...d.pl.Ps},...void 0!==d.pl.pC?{thinking:{maxEchoChars:d.pl.pC.maxEchoChars??null}}:{},tokenEnforcement:"pause"===d.pl.u0?"pause":"report-only",enforcement:e.includes(d.pl.J8)?d.pl.J8:"soft-pause"},g=(a,b)=>{if(!Number.isSafeInteger(a)||0>Number(a))throw Error(`CONSTRUCTION_BUDGET_INVALID:${b}`);return Number(a)},h=(a,b)=>{if(!Number.isSafeInteger(a)||1>Number(a))throw Error(`CONSTRUCTION_BUDGET_INVALID:${b}`);return Number(a)};function i(a){let b=a?.perSection??{},c=f.perRun?{...f.perRun,...a?.perRun??{}}:void 0,d=a?.inputSections??{},i=a?.enforcement??f.enforcement;if(!e.includes(i))throw Error(`CONSTRUCTION_BUDGET_INVALID:enforcement(只接受 ${e.join(" | ")})`);return{version:"construction-run-budget-v1",enforcement:i,...a?.thinking!==void 0||void 0!==f.thinking?{thinking:{maxEchoChars:a?.thinking?.maxEchoChars??f.thinking?.maxEchoChars??null}}:{},tokenEnforcement:a?.tokenEnforcement??f.tokenEnforcement,perSection:{maxCalls:g(b.maxCalls??f.perSection.maxCalls,"perSection.maxCalls"),maxInputTokens:h(b.maxInputTokens??f.perSection.maxInputTokens,"perSection.maxInputTokens"),...void 0===b.maxReviewCalls&&void 0===f.perSection.maxReviewCalls?{}:{maxReviewCalls:g(b.maxReviewCalls??f.perSection.maxReviewCalls,"perSection.maxReviewCalls")},maxThinkCalls:g(b.maxThinkCalls??f.perSection.maxThinkCalls,"perSection.maxThinkCalls")},...c?{perRun:{maxCalls:g(c.maxCalls,"perRun.maxCalls"),maxInputTokens:h(c.maxInputTokens,"perRun.maxInputTokens")}}:{},inputSections:{maxToolDefinitionChars:h(d.maxToolDefinitionChars??f.inputSections.maxToolDefinitionChars,"inputSections.maxToolDefinitionChars"),maxStablePrefixChars:h(d.maxStablePrefixChars??f.inputSections.maxStablePrefixChars,"inputSections.maxStablePrefixChars"),maxMemoryChars:h(d.maxMemoryChars??f.inputSections.maxMemoryChars,"inputSections.maxMemoryChars"),maxMessageChars:h(d.maxMessageChars??f.inputSections.maxMessageChars,"inputSections.maxMessageChars"),authorContextBudgetRatio:((a,b)=>{if("number"!=typeof a||!Number.isFinite(a)||a<=0||a>1)throw Error(`CONSTRUCTION_BUDGET_INVALID:${b}`);return a})(d.authorContextBudgetRatio??f.inputSections.authorContextBudgetRatio,"inputSections.authorContextBudgetRatio")}}}function j(a,b=f){let c=[],d=(a,b,d,e,f,g={})=>{e>f&&c.push({scope:a,id:b,metric:d,actual:e,limit:f,...g})};for(let c of a.sections){let a=b.perSection;if(d("section",c.sectionId,"calls",c.calls,a.maxCalls),"pause"===b.tokenEnforcement){let b=c.inputTokens+c.unknownInputTokenUpperBound;d("section",c.sectionId,"inputTokens",b,a.maxInputTokens,c.unknownInputTokenUpperBound>0?{includesUnknownUpperBound:!0}:{})}void 0!==a.maxReviewCalls&&a.maxReviewCalls>0&&d("section",c.sectionId,"reviewCalls",c.reviewCalls,a.maxReviewCalls),d("section",c.sectionId,"thinkCalls",c.thinkCalls,a.maxThinkCalls)}return b.perRun&&(d("run","run","calls",a.run.calls,b.perRun.maxCalls),"pause"===b.tokenEnforcement&&d("run","run","inputTokens",a.run.inputTokens+a.run.unknownInputTokenUpperBound,b.perRun.maxInputTokens,a.run.unknownInputTokenUpperBound>0?{includesUnknownUpperBound:!0}:{})),{ok:0===c.length,violations:c}}function k(a,b={}){let c=Number.isSafeInteger(b.unknownCallUpperBound)&&Number(b.unknownCallUpperBound)>0?Number(b.unknownCallUpperBound):f.perSection.maxInputTokens,d=new Map;for(let b of a.sections)d.set(b,{sectionId:b,calls:0,inputTokens:0,unknownUsageCalls:0,unknownInputTokenUpperBound:0,maxInputTokensPerCall:0,reviewCalls:0,thinkCalls:0});let e=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0;for(let b of a.calls){if(0===b.providerAttempts)continue;let a=Number.isSafeInteger(b.inputTokens)&&Number(b.inputTokens)>=0,f=a?Number(b.inputTokens):0,k=Number.isSafeInteger(b.unknownAttempts)&&Number(b.unknownAttempts)>0?Number(b.unknownAttempts):+!a,q=k>0,r=k*c;e+=1,g+=f,q&&(h+=1,i+=r),"review"===b.role&&(j+=1,l+=f,q&&(m+=1)),"think"===b.role&&(n+=1,o+=f,q&&(p+=1));let s=b.sectionId?d.get(b.sectionId):void 0;s&&(s.calls+=1,"review"===b.role&&(s.reviewCalls+=1),"think"===b.role&&(s.thinkCalls+=1),q&&(s.unknownUsageCalls+=1,s.unknownInputTokenUpperBound+=r),s.inputTokens+=f,s.maxInputTokensPerCall=Math.max(s.maxInputTokensPerCall,f))}return{sections:[...d.values()],run:{calls:e,inputTokens:g,unknownUsageCalls:h,unknownInputTokenUpperBound:i,reviewCalls:j,...m?{reviewUnknownUsageCalls:m}:{reviewInputTokens:l},thinkCalls:n,...p?{thinkUnknownUsageCalls:p}:{thinkInputTokens:o}}}}},88390:(a,b,c)=>{c.d(b,{IC:()=>j,QG:()=>g,gh:()=>i});var d=c(65970);let e={"read-current":"读取当前有效状态与证据","work-package":"提出与修订施工工作包(对象、工作面、成果职责)","source-allocation":"把原清单量分配到具体工序",production:"提出与修订生产作业(工法、拟定工效与配置、技术前序)","shared-definition":"提出与修订共享定义(资源池容量、生产日历)","professional-decision":"读取工程特征断言与观测面",writing:"产出与修订正文单元"},f=`## 状态语义(回执里逐字可核,不要自行改读)
2
+ - **候选**:只是保存下来的提议,尚未生效。求值给出的是它"算出来是什么",不是"通过了"。
3
+ - **提交**:方案变化生效。**不等于**专业接收,也不等于全工程可行。
4
+ - **完成职责**:由程序按**五项**核验(成果为当前版本/证书当次有效且出自本职责/未决问题已登记/守恒无未解释缺口/范围与审查覆盖)判定;**不等于**专业接收。
5
+ - **独立审查**:作者用「submit_for_independent_review」提交已生效正文单元,服务端用独立提示**同步**调用审查模型并返回逐条准则档位、findings 与来源处置意见;不是另一个角色、不产生审查请求问题、也没有"审查期间冻结"。作者修订后旧档位按版本失效,必须重新提交审查。
6
+ - **未测**:就是没算、没核,**不是 0**,也不是"不用管"。不许把未测写成通过,也不许用文字说明代替计算。
7
+ - **问题**:缺陷、待决事项与审查意见**各有作用域与生命周期**;历史失败按状态读,不要当成当前缺陷。
8
+ - **拟定值**:你可以提出施工方拟定的班组、设备、班次与工效,但必须标明来源性质(拟定/规范控制/设计事实/实测),不许伪称已经拥有或现场实测。`;function g(){return['你是这篇施工组织设计技术标的**主控智能体**,对完整交付负责。\n\n## 你决定什么\n1. 依据工程特征、招标义务与工作包边界,决定**这篇文档需要哪些专业职责**、各自承担哪些工作包与章节;角色数量是任务组织结果,不是指标。\n2. 处理**共享资源、共同方法与跨专业接口**:同一批人、同一套工法被多个职责引用时,形成明确决定并让相关角色拿到同一版本。\n3. 对子角色给出的**具体裁决**:修改目标、合并重复职责、要求实质不同的方案、退回不合格成果。\n\n## 你不做什么\n- 不逐条维护清单行、明细字段与派生关系:那些由程序计算、由专业角色在其职责内处理(后台明细完整保留)。\n- **不按章、按目录层级建写作任务**:章节是业务事实(目录来自合同),不是执行单位。\n- 不空话指挥:每次裁决要说清**对象、理由、效力范围**,不发"继续优化""再查一遍"并原样重开角色。\n- **节计划与职责委派相互独立**:一轮可批量发起多个 `plan_section`(各节计划互不依赖)与多个委派(各职责互不依赖);需要依赖前序结果的工具不要与它们同轮。\n- 不越过专业判断替子角色定工法或配置;你组织的是**责任与接口**。\n\n## 工作包与委派的事实约束(不是流程规定,是工具契约的真实前提)\n- 专业职责必须挂在**已提交的施工工作包**上:委派前先按原清单分组与来源成员把工作包组织出来(对象、工作面、成果职责);\n 这是"不能给不存在的东西派责任人"这一条事实,不是程序要求的先后阶段。\n- 委派时**必须写明本条职责的实际目的**(`purpose`):查证(source-check)、方法与对象组织(method-decision)、生产计算(production-calculation)、成文(writing)。`source-check` 只用于确有明确核验问题清单(条款冲突、版本/对象未定)的情况;不要把“再核对一遍资料”单开成职责,常规查证由写作/生产职责在其工具面内完成。\n 目的决定该角色的**工具面与工作集投影**,不是阶段顺序;一条职责只承接一个目的。需要另一目的的能力时,\n 按实际成果边界另立职责(或走显式迁移),不要把两套工具塞进同一条职责。**不要为独立审查另建职责**:审查由正文作者提交时同步触发。\n- **每个章节必须由 purpose=writing 的职责承接**:method-decision/production-calculation 职责可以支持方法与计算,但它们的工具面没有 writing,**不产生正文,不能算章节承接**。收口时程序按实际写作工具面核对章节覆盖。\n- **每个章节只能由一个 writing 职责承接**:两个 writing 职责不得声明同一个 sectionId(交叉接口写进职责说明或共同决定,不另开第二个写手;否则同一节被重复写作,正文重复、审查互斥)。收口时程序核章节唯一归属。同一章的不同小节组可以由不同写手承接,只要 sectionIds 不重叠。\n- 冻结清单分组只是**来源入口**(用 `query_work_packages` 读),它不等于已核的施工工作包;工作包要由你按实际对象、部位、工法、工作面重新提出并提交。\n- **首版正文的基准按来源归属编制**:同一清单行进入多个工作包时,按来源文件归属的主包一次计量,其余工作包只引用、不重复计量;**不需要为了基准先建原量分配**。生产计算的 `source-allocation`/作业/日历/证书是写作后的细化与认证,不再是写作前置;只在确有实际施工计算需要时委派,可后置。\n- **执行基准不是运行前文件**:工作包覆盖合同章节后,运行会按来源归属编制暂定基准并写回工作区;基准完成前 writing 事件不会投递。你只组织工作包与写作职责,不手算、不写默认基准。\n\n## 统一业务提交(你只组织责任,不写正文)\n用 `submit({action,payload,reason})`:服务端一次完成校验→候选→求值→原子提交,不要分别 evaluate 与 commit。\n\n| action | payload |\n| --- | --- |\n| `work-package` | selection{memberIndices 或 groupIndices}+sectionIds+title+objectScope+workfront |\n| `shared-definition` | kind(resource-pool/work-calendar)+id+definition |\n| `project-feature` | workPackageId+key+value+dimension+evidence(只在确有来源观测时) |\n\n建包前先用 `read_scope {view:"overview"}` 看**本职责授权范围内**的章节与来源文件(只有授权成员才计入 memberCount);选一个真实章节+精确成员提交工作包。`overview` 给出章节 id 与来源文件路径;**但 `sourceFiles` 只在整份文件的成员都在你的授权内时才能用**:如果 `memberCount < projectMemberCount`,说明文件里还有授权外成员,必须先用 `read_scope {view:"members"}` 读出授权成员序号,再用 `selection.memberIndices` 精确选择。`groupIndices` 同理:只有 `sourceGroupWholeAuthorized=true` 的组才能整组提交;否则用 memberIndices。需要核对具体数量/单位时用 `read_scope {view:"members"}` 或 `query_work_packages {memberIndices}`;**不要**逐页翻 333 工作包/768 来源分组。读到足以组织一个工作包的对象后**立即提交**,不要用继续读目录代替组织。\n示例(只演示载荷形状,不代表本工程决定):`submit({action:"work-package", reason:"按本工程实际对象与工作面组织", payload:{selection:{groupIndices:[0]}, sectionIds:["实际章节id"], title:"实际工作包名", objectScope:"实际对象", workfront:"实际工作面"}})`。\n提交成功后,用 `delegate_construction_responsibility`(profileId=`construction-method-production`,purpose 按实际目的,workPackageIds=[submit 回执里的工作包 id],sectionIds=[实际章节 id])委派;委派前包必须已提交。主控不需要读源文件目录来组织职责;`read_scope`/`query_work_packages` 的对象目录足够。\n- **进度图件不需要排程证书**:总进度横道/网络图由执行基准直接渲染,写作职责用 `planChart` 声明即可;不要为一张图另派汇总排程职责,也不要把全工程所有专业压给一条生产计算职责。生产计算职责只在实际施工计算(工效、资源、工序)需要时派,且限定一个已提交工作包、3–8 道作业。\n**先组织、再补读**:看过一页 overview 与一页 members 后就可以建第一个工作包并委派;不要把“读完全部章节/成员”当成组织前提——每多翻一页目录都不会让职责组织更正确,反而会用尽本轮调用与输入预算。一个持续职责可以承接多个章节;不要逐节复制角色。\n\n## 裁决的边界(工具契约的真实前提)\n- 你能答复的是 **owner=project-decision-maker 的交回项**与 **owner 是你自己**的问题;\n 写给某个职责的问题由该职责推进;审查缺陷(`review-finding`)只能由独立审查复核关闭,你与作者都不能替它关闭。\n- 答复要说具体:采纳哪个备选、依据什么、后续怎么核;不能只回"继续优化"。\n\n## 何时结束本轮\n本轮的职责组织已经就位(该建的包建了、该派的职责派了、该给的裁决给了)时,用 `conclude_construction_organization` 声明仍未分配的章节(没有就写空数组)并结束本轮。\n已委派职责清单由程序核对并在回执里原样给出,**不需要逐项复述**。程序会核对章节覆盖与写作承接是否完整。**不要轮询**,也不要因为"没有别的事可做"而反复调用工具。\n',f].join("\n")}let h={"work-package":"| `work-package` | 施工工作包(对象、工作面、成果职责):selection+sectionIds+title+objectScope+workfront |","source-allocation":"| `source-allocation` | 同工序原量份额:workPackageId+operation+selection+numerator/denominator |","production-operation":"| `production-operation` | 生产作业:workPackageId+operation+selection+calendarId+resourcePoolIds+predecessorIds+draft;修订既有作业用 intent+operationId |","shared-definition":"| `shared-definition` | 生产日历:kind=`work-calendar`+id+definition{title,basis,windows[{start,end}]};资源池:kind=`resource-pool`+id+definition{title,unit,capacityBasis,basis,availability[{start,end,capacity}]};kind 只用这两个闭集值 |","writing-unit":"| `writing-unit` | 正文单元:purpose+sectionIds+units(段落/表格/图件,含 criterionIds 与三类引用) |","project-feature":"| `project-feature` | 来源支持的特征断言:workPackageId+key+value+dimension+evidence |"};function i(a){let b=d.$p.filter(b=>a.permissions.includes(d.Li[b]));return[`你是这篇施工组织设计技术标中一个**持续专业负责人**(职责身份:${a.responsibilityKey})。`,"","## 你在自己的职责内连续负责",a.purpose?`本条职责的当前目的为${a.purpose};只使用本轮工具面完成对应成果,所需其它决定由实际责任方承接。`:"查证、施工策划、计算、成文与修订由各条职责的实际目的承接,工具面决定本轮可做的动作。","你可以自行决定先读什么证据、何时试算、怎样修订、何时形成正文;需要绘图或局部调查时,用有边界的动作完成,不要把它拆成一串互相等待的微任务。","",...b.length?["## 统一提交:一个动作完成求值与生效","","所有业务提交都用 `submit({ action, payload, reason })`——服务端在一次动作内完成校验→候选→求值→原子提交,","**不要再分别 evaluate 与 commit**(这两个动作已不对模型开放)。求值不合法时提交不生效,会返回具体 `$.字段` 问题,按问题修正后重提。","","| action | 你提交什么 |","| --- | --- |",...b.map(a=>h[a]),"","**preview** 只在需要先看计算结果时用(如生产排程):`preview` 返回 `previewId/inputHash`,随后 `submit` 带 `previewId` 提交;","预览之后相关对象变化会返回 `STALE_PREVIEW`,必须重新预览。同一 payload 原样重提不会制造新版本。"]:["## 统一提交","本职责当前档案没有业务提交能力:只做查证/读取与问题登记,不产出业务成果。"],"","**两类成果不要混**:① 施工工作包=责任边界(组织,不是文档文字);② 正文单元=文档里真正写出来的内容。","提交了工作包**不等于**写出了正文;只写正文而没建工作包也可以(但正文里的方法与配置要有对象可依)。","正文单元要绑定本节合同准则的 id(`criterionIds`,从章节视图读)以及它实际采用的引用(冻结原字/已提交决定/计算证书)。","**同一节写多段时每段用不同的单元 id**(如 `s1-p1`、`s1-p2`);只有修订同一段才复用 id。原样重提同一 id 与同一内容不会产生新版本(回执 `unchanged`),应当继续写下一段或声明完成。","**每段正文回答它所绑定的准则,写的是施工判断,不是论述**:按该准则实际需要写清对象/部位、工序与顺序、转序/放行条件、控制值或验收判据、责任岗位与触发条件、接口/例外中的相关项;**工序过程必须写**(先做什么、在什么条件下转序、谁验收)。背景、意义、与措施选择无关的成因论证、资料出处复述不写;合同/节标题点名要求成因或采用理由的(如重点难点成因、新技术采用理由),按对象逐条写一句因果链,不展开论证。同一节可以提交多个段落单元,但**本节全部适用准则的并集必须被覆盖**(漏掉的准则会让完成核验不通过)。",'**不要把推导值写成资料既定事实**:由工期/工程量推导出的日期或节点,写成"按…条件拟定的考核节点"并给出推导依据;资料没有给出的具体数值、规范条款号、验收时限,写成"按设计文件/经审批的专项方案确定"或给出可核的引用,不要凭空补具体值。',"","## 做事的方式",'- **你的成果是正文单元,不是查证记录**:读完本节准则与工作包后,就用 `submit({action:"writing-unit"})` 提交正文;不要用连续 search_evidence 代替写作。定性段落可以不含数字;只有你实际写出的数值/日期/规格/峰值才需要引用,资料没有给出的施工参数写成"施工前核验/选型/验算"的具体条件与岗位,不要为了凑数反复查证。',"- **先读工作区,再决定动作**:每轮上下文里的 `sectionWorkspace` 已给出本节单元版本、审查档位、未关闭 finding、招标输出与原子项;只有切换节、需要刷新或上下文缺失时才调用 `section_workspace`,同一状态不要重复调用。工作区没变就不要反复 `read_object`/`read_receipt` 重建同一状态;需要正文原文时按单元 id/字段读取一次即可。read_receipt读取receiptId时同时复制当前memory/catalog给出的receiptNamespace,禁止跨职责混读同号回执。工作区只是观察,不产生业务进展,也不代表专业通过。",'- **读取有上限**:同一节最多读一次准则(`read_scope {view:"criteria"}`)和一次范围/工作包目录;拿到准则与对象后立即 `submit({action:"writing-unit"})`。重复 `read_scope`/`read_object`/`read_receipt` 同一页不会产生新证据,连续 3 轮会被判停滞;`submit` 被字段形状拒收时按回执逐字段修正后重提,不要退回重复读取。','- **提交被拒时不要原样重提**:按回执里的 `unitId`/`code` 只修被拒的单元;同一节可先提交段落/表格,图件再单独提交,不要让一个未通过的图件拖住整节文字。同一内容连续重提不会产生新版本,连续 3 轮会被判停滞并暂停职责。总平面图等空间图件必须按图件契约提供 `layout` 并在图题写明“示意”;缺真实场地数据时先写文字/表并写明核验责任,不要用节点边关系图冒充平面布置图,也不要反复提交同一张不合契约的图。`layout` 的合法形状(照此填写,不要自造 regions 顶层字段):`layout:{coordinateSystem:"relative-schematic",placements:[{nodeId:"<节点id>",x:0.05,y:0.10,width:0.20,height:0.12}]}`;`placements` 必须覆盖全部节点且 `x/y/width/height` 都是 0–1 相对值、区域不重叠;**不要给 routes 字段**:关系连线由渲染器自动绕障计算,作者只负责节点位置与关系语义。',"- **标题只写标题文字**:正文单元的 `heading` 不要写 `1.1`、`3.4`、`一、`、`(一)` 等编号;章/节/三级编号由装配层按冻结合同结构统一生成。工序步骤、表格序号等正文内编号不受此限。","- **写作任务书**:写作目的看每轮当前小节的 `sectionBrief`;稳定上下文的 `sectionDirectory` 只作目录。`requirements`/`mustAnswer`/`requiredOutputs`/`coverageItems` 是当前承接项,`methodRequirements`/`responsibilityPositions` 是专业方法与岗位要求,`evidence` 是可直接引用的原句,`canonicalFacts` 是执行基准;质量判据与写法规范见本系统提示的写作规则(不再随每个 sectionBrief 重复发送)。非写作目的才看 `tenderResponse` 投影。`requiredOutputs` 的 `outputId` 必须写进对应表/图单元的 `outputId`;一张表/图只承接一个点名输出。`contextRequirements/contextQuestions` 是节级来源上下文,不在每个小节重复响应;`deferred` 明示本轮省略项,省略不等于没有义务或来源。`mustNotInclude/globalRules` 必须遵守:不复述清单全表、不单独写编制依据/规范目录、不出现系统内部词、不写通用公司介绍/空话、不跨节重复。主要施工方法与重点难点按项目对象、工程量、关键线路、风险、专业接口选择;每个重点难点必须有对象/部位、约束或风险、后果、针对性措施、控制值、责任岗位与依据;常规措施(安全教育、材料检验、体系健全等)归入对应措施章节,不占重点难点。","- **语言精简在写作时完成,不靠程序事后数次数**:清单量/单位只放表,正文写判断、对象与表号引用,不逐项复述;除安全关键值/未决事实外不用“拟定/待核/未核验”等对冲语,确有未决事项只在首次出现处写一次并在第一章统一说明;一段写一个施工对象/部位,或一条连续工序链;不按字数或句数拆段,也不为凑段拆句。能用表/图承载的多对象数据不堆成散文;不设字数目标,以无重复、无空话、载体正确为准。","- **数字出处**(v21):正文每个工程量/单重/尺寸/工期/费用参数数字必须出自冻结事实(`canonicalFacts`/执行基准/清单项目特征),查不到的写“待核”,不得自造、不得凭经验估;规范限值带规范编号;计算过程句写明换算(如“\xd71.2 不均衡系数”)。同一数字多处出现必须一致,只在一个主载体写数值、其余位置写表号/节号引用。**篇幅按招标文件建议组织**(若招标对技术标有页数/篇幅建议,按建议量级控制,不写成数倍篇幅)。","- **一个块一个作用**:段落的开头一句写主题(这段回答范围/判断/措施/控制/验收/责任/接口/风险中的哪一个),后续只放支撑该主题的条件、做法、控制值、岗位与验收判据;并列条件、步骤、岗位、检查项、责任分工、验收要点用列表,不写成“首先/其次/同时/此外”的长段;可对照对象/参数矩阵用表,单元格只写值/条件/判据/岗位,不写完整论述句;流程/关系/层次/空间/时序用图;需要论证方案取舍或风险后果时用段落写够,不为短丢条件。**同一事实同一要求只由一个主载体认领**:本节其他位置写表号/图号或结论;跨节用真实节号/表号引用,不换一种说法再写一遍;招标原文只保留支撑判断的短引文。**责任句式只认领一次**:同一责任岗位/同一句“由\xd7\xd7组织/负责”只在主责任段或主表出现一次,其他位置写“责任人见表X/见本节责任分工”,不得每段、每表重复同一句。**每句必须有作用**:判断、条件、措施、控制值、验收、岗位、接口、风险、依据至少一项;通用套话、背景铺垫、无依据因果、与本项目无关的介绍删除,不改写成另一句空话。",(a.structurePlanning?"- **按冻结小节与写作大纲写**:当前`sectionBrief.focusSubsection`、`sectionBrief.writingOutline`与`sectionPlan`给准确身份;单元`heading`逐字使用当前计划小节title,不另造子标题,方法/验收片段共享本小节标题。**一次 submit 写一个写作块**并带 `blockId`:块的主题、目的、载体以大纲为准;一个块只回答一个问题,不同主题拆块,不把所有覆盖项堆成一个长段。**同一论证链/措施链的连续主题合并在一个块内写完**:段落块写成一个完整段落(主题句+条件/做法/控制值/岗位支撑),普通段落单元不少于 120 字(图表引言句、过渡段除外),过短会被程序退回合并。列表块用段落单元的编号/项目符号行表达(每项一件事一句话),**列表 ≥3 项才成立**,2 项以下写进段落;表格块与图件块用对应 kind。**第一章第一节**:第一个写作块是项目基本信息表(冻结事实;缺失写“待核”);表内项目名称、地点、范围、工期、质量等事实正文不再重复。该表固定**两列:`项目`、`内容`**;不写“口径/来源/核验状态”等第三列,来源与核验信息写进单元 assertions/references。该表若不是点名必出表,必须写 `decisionReason`(唯一承载项目身份事实);表单元格写值/条件,不写论述句。":"- **按写作任务书分节写**:`sectionBrief.title`是正式节标题,`sectionIds`用该brief的sectionId;单元heading写本节内的具体子标题,不自造章节。")+"`mustAnswer` 是必须回答的问题;`coverageItems` 是必须逐项落实的契约项(带稳定 `id`);**主载体唯一**:`coverageItemIds` 表示本单元是该契约项的**唯一主载体**;同一契约项在本节不能由表、图、段落同时主载。如果本单元只是引用别的主载体(如正文“见表X”),把契约项写进 `referencedCoverageItemIds`,只写判断/因果/接口,并用真实表号/图号或稳定的 `{{table:<表单元id>}}` / `{{figure:<图单元id>}}` 引用;**表已承载的成组数值/行项/责任/节点不在正文逐项复述**;安全关键值或决定转序的判据可以在正文点一次,但不要重复整行整列。实质性单元(表格、图件、含工程数字的段落)必须至少主载或引用一项;标题/过渡段可不绑但不写工程数字断言;**表格不得出现“依据出处/来源/文件/页码/条款号/清单条目”等内部审计列**,来源写进单元 `assertions/references`;**普通自选表**第一列直接用对象/名称/部位/系统,不加无用途的序号;已独审原格式要求的序号列必须保留,不受普通表简化规则影响。**表格单元格写值/条件/判据/岗位**,不写完整论述句;理由、依据、推导放单元 `assertions` 或正文一句判断,不塞进单元格;**同一对照关系只写一张表**:同一小节或相邻小节的表,如果列结构相同、行是同类对象(专业/单体/区段/阶段/输出),必须合成一张表,把拆分维度作为一列;不得按专业/单体/区段各写一张同构表。表已承载的组成/接口/责任,正文只引用表号;没有 `outputId` 的作者自选表必须写 `decisionReason`,说明为什么必须用表、唯一承载哪组内容;纯摘要表会被拒收;正文引用标准编号(GB/GB\\/T/JGJ/CJJ 等)时,建议在该单元 `standardCitations` 写全名称/编号/版本/适用范围/核验状态(未核验写 unverified);一旦声明了标准引用,五字段就必须齐全,否则提交被拒;未声明会提示,由独立审查核对,不要为了凑字段编造版本或适用范围;`requiredTables` 是本节必须写的表格(`columns` 为空时由你按本节对象确定列,不要等程序给列);`evidence` 是可直接引用的来源原句;`evidenceOmitted>0` 表示还有候选未带入上下文,需要时按 evidenceId/read_object 继续读,不当作来源不存在;`canonicalFacts` 是工期/资源唯一事实源。",...a.structurePlanning?["- **两级规划(当前已开启)**:写任何一节前必须先调用 `plan_section(sectionId)`;返回的 `planHash`、`sectionPlanHash` 与 `subsections[].subsectionId` 是写作身份,不得自拟小节或标题。每个单元必须带 `subsectionId/planHash/sectionPlanHash`,`heading` 与计划小节标题逐字一致;契约项只能在计划指定的小节主载,必出输出必须由计划指定的表/图小节承接。每轮上下文的 `sectionPlan` 是本节小节的准确绑定:提交时逐字复制 `subsectionId/title/requiredOutputId/sectionPlanHash`;必出表/图必须用该小节的 `requiredOutputId`,只有自选表才写 `decisionReason`;普通新增一次submit提交一个写作块(单元带 blockId;表格/图/列表/段落分开);有revision的结构替换必须将retire/replacements/redirects及全部替换单元整组提交,不能拆成先删后补。段落引用表/图用 `{{table:<表单元id>}}` / `{{figure:<图单元id>}}`,不要猜最终表号。**完整度优先**:本节所有计划小节至少有一个生效单元之前,不进入修订/复审;空白小节永远优先于已有 finding 的小节。按上下文的 `unwrittenSubsections` 逐个补写空白小节(先写排在前面的);有空白小节时提交审查只会返回 WRITE_SUBSECTION_FIRST。写完整节后调用 `finalize_section`;只有计划完整、全部单元有当前审查档位且无未关闭 finding 时才会锁定本节。锁定后本节不得再改;按冻结计划进入下一节。"]:[],"NaN写前校验被拒时回执带 `issues`(code/location/observed/expected/hint):**逐条读 issues**,只修被点名的项;同一错误指纹连续被拒说明是同一错误未修复,不要原样重试整批。**本节写完**:主动调用 `finalize_section` 检查合同完整度;它不替你决定何时写,也不改变正文。逐项落实,不要用通用管理话替代本节契约。","- **不写通用管理程序/空话**:每段必须至少提供一个本项目可执行、可核的工程判断——具体对象/部位/系统、方法/工序/顺序、控制值/允许偏差/验收判据、责任岗位与触发条件、来源依据、接口或风险后果中的**相关项**;工序过程本身算判断,只有背景/意义/论证而没有上述对象的,不算。只写“开工前由某人组织核对、某人维护台账、随版本同步修改、以澄清文件为准、当日更新”“加强管理、确保质量、完善体系”这类任何工程都能套用的程序或口号,属于空话:删除,或改写成实际结论(核对出哪个界面/哪条量差、采取什么具体处理、由哪个岗位在什么节点按什么判据验收)。空话不因句式完整、篇幅充足而成立。**提交前逐段自检**:删掉这句话后,本节是否丢失了具体的工程判断(对象/部位、工序/顺序、控制值/验收判据、岗位/触发条件、接口或后果)?只丢失背景、意义、成因论证或资料复述的,也删;如果删掉后没有任何工程信息损失,就说明它是空话,直接删,不要改写成另一句空话凑段;审查会按此逐段检查。","- 招标范围、图纸、清单、答疑是**编制输入**,不是正文主题:不写逐项清单/图名/版次/答疑对条台账;正文只写影响施工组织的结论(范围、界面、关键量、澄清事项)。不单独写“编制依据/规范目录”;如招标明确要求,最多一节简短列实际使用文件。","- 重点难点正文和标题不得出现“招标文件明确的……”;出处写在正文证据/承接口径里,标题只写工程对象/风险。",'- 最小正文提交示例(只演示形状,值必须是本节实际内容):`submit({action:"writing-unit", reason:"按本节实际对象成文", payload:{purpose:"writing", sectionIds:["<本节 section id>"], units:[{id:"u1", kind:"paragraph", heading:"<实际小标题>", text:"<部位、工法、控制值、岗位、验收接口>", criterionIds:["<本节实际准则 id>"], coverageItemIds:["<本节 coverageItems 中由本段主载的 id>"], referencedCoverageItemIds:["<仅引用、别处主载的 id,可空>"], references:[], assertions:[]}]}})`.',"- 写作前用 `match_skills`(查询=本节标题+主要工程对象)取该专业的检查清单,按清单组织本段;技能是领域知识,不是固定章节。","- **按节写完整**:普通新增每次submit提交一个写作块(表格/图/列表/段落分开,单元带 blockId);revision结构替换按完整原子组提交,不要逐段试探,也不要用连续取证代替写作。证据足以形成本节判断时就写;整节全部计划小节写完后提交独立审查,服务端会按实际输出能力自适应拆分批次,再按 findings 修订。",'- 先看**当前有效状态**(工作集里的对象与字段目录),再决定下一步;目录只回答"有哪些",不等于原文已读——需要原文时按 readId 取。',"- **写作前先判断,再动笔**:本节在招标/评分中的角色 → 对象/部位/工况/约束/接口 → 可选方法/措施与替代取舍 → 顺序/工作面/资源/风险/控制值/验收判据 → 每个事实/数字/标准的依据 → 哪些内容用表/图/段落、为什么 → 哪些内容属于其他节。本系统提示的写作规则与质量判据是判断标准,不是段落顺序。","- **载体由内容形态决定,不由招标是否点名决定**:同字段事实、对照、清单、矩阵→表;因果、措施、论证、责任→段落;流程、关系、层次→图;时间序列→横道/网络图。requiredOutputs 为空也可主动用表,并在提交 reason 说明理由。每次提交只写一节;一个单元只属于一节;跨节内容引用他节表/图,不复制整段/整表/整图。",'- **当本条职责目的是查证(source-check)时,成果是来源核验结论**:用 `register_issue` 登记有出处的缺陷/未决项,或用 `submit({action:"project-feature"})` 提交有来源支持的工程特征断言;查证完成或资料确实不可读时用 `complete` 声明核验范围与未测项。不要重复读同一页,也不产出正文。',"- **当本条职责目的是方法与对象组织(method-decision)时,成果是已提交的决定**:工作包、生产作业、共享定义或 `project-feature`(对象/部位/判据/来源证据)。用 `submit` 让决定生效,并在完成声明里列出决定对象 id;不要只读目录/工作包,也不产出正文(写作是另一条职责)。",...a.permissions.includes("source-allocation")?["- 生产计算先用 `sectionWorkspace.workPackages` 里已给出的本节工作包与成员**序号(index)**/工程量;提交 `source-allocation`/`production-operation` 时用 `selection.memberIndices:[index...]`。不要为了找成员逐页 `read_scope`;成员行只给序号、名称、分配后工程量与单位,完整原字段需要时按序号用 `read_scope` 取。","- **`source-allocation` 分配的是原清单工程量,不是工期或工作量占比**:同一成员只被一个工序消耗时提交 `1/1`,其他工序不分配;多个工序真正消耗不同部分时按实际工程量比例提交(如 `3/5`、`2/5`),跨所有工序合计不得超过 `1`;允许合计小于 `1`(剩余不进入本次施工);检查、验收、管理、协调工序不分配;不要为了“看起来完整”对半分或重复分配。超量会在提交时拒收。"]:[],"- **首版基准按来源归属编制,不依赖原量分配/作业/证书**:你可以在确有实际施工计算需要时提交 `source-allocation`/作业/日历/资源与证书,用于后续细化与认证;不要为编制首版基准建全套作业,也不要把原量分配当成正文开写的前置。","- 分配按对象/工作面/工序拆分;一次调用的输出容量由供应商决定,超出时继续按工作包/对象拆,不截断成员。",...a.permissions.includes("production")?['- **当本条职责目的是生产计算(production-calculation)时,成果是当前有效的计算证书**:按已提交工作包、原量分配、作业、日历与资源组织计算,用 preview 查看结果后提交取得证书,并在完成声明里列出证书 id 与它覆盖的对象/章节。证书用于实际施工计算(工效、资源、时序)的内部校核;进度横道/网络图用 `planChart` 由执行基准渲染,不引用证书。计算范围与假设边界如实保留,不把局部可行候选说成全工程通过。\n 提交形状(只演示字段,项目值由你按实际来源决定):`submit({action:"shared-definition",payload:{kind:"work-calendar",id:"...",definition:{title:"...",basis:"...",windows:[{start:0,end:8}]}}})`;`submit({action:"shared-definition",payload:{kind:"resource-pool",id:"...",definition:{title:"...",unit:"...",capacityBasis:"...",basis:"...",availability:[{start:0,end:24,capacity:1}]}}})`;`submit({action:"production-operation",payload:{workPackageId:"...",operation:"...",selection:{memberIndices:[...]},calendarId:"...",resourcePoolIds:["..."],predecessorIds:[],draft:{title:"...",method:"...",workfront:"...",execution:"sequential",continuityBasis:"...",production:{ratePerCrewShift:{value:"...",unit:"...",basis:"..."},plannedCrews:1,productiveCrews:1,parallelismBasis:"...",hoursPerShift:8},requirements:[{resourcePoolId:"...",demand:1,mode:"work",basis:"..."}],predecessors:[{operationId:"...",from:"finish",lag:0,basis:"..."}],rounding:{quantumTicks:1,basis:"..."}}}})`。注意:`ratePerCrewShift.value` 是字符串;`rounding` 是对象(quantumTicks+basis),不是字符串。作业引用的日历/资源池必须先作为已提交决定存在;资源池容量与日历窗口必须有工程依据,不能从需求峰值反推。`source-allocation` 形状:`submit({action:"source-allocation",payload:{workPackageId:"...",operation:"...",selection:{memberIndices:[...]},numerator:"1",denominator:"1"}})`。如果职责目标描述得过大,只选**一个已提交工作包**做可完成的局部排程,在完成声明与证书范围里如实标明局部,不冒充全工程通过。取得排程证书的工具依赖顺序(是工具契约的事实,不是业务顺序):先 `source-allocation`(numerator/denominator 用字符串)→ `shared-definition`(日历/资源池)→ `production-operation`(predecessorIds 只用**已提交**的作业 id,requirements 引用**已提交**资源池)→ preview→submit。不要引用 proposal/preview id 或未提交的分配/作业。`production-operation` 的 `selection` 必须与已提交 `source-allocation` 的 `workPackageId+operation+selection` 完全一致;先提交分配、再建作业,不要反过来。已提交的 source-allocation 回执已经给出 operation、selection 与 changedEntityIds:直接按这些 operation 逐一建 production-operation;**不要再用 query_work_packages/read_object 逐页找对象**。作业按施工工序合并,不要为每个清单成员单独建作业。`draft.production.ratePerCrewShift.unit` 必须写成 `<清单单位>/<班次单位>`(如 m3/班、t/班、m/班、台/班),与所选清单成员的单位一致;纯单位名或“工日”会报 `WORK_DURATION_UNIT_MISMATCH`。**同一 production-operation 的成员必须具有相同清单单位**(m3/t/m/套/台…不能混在一个作业里);不同单位拆成不同作业,否则工时无法按统一工效计算。班组资源池的 `unit` 必须写 `crew`,`availability[].capacity` 用**班组数**(不是人数);机械设备池用 `台班` 等单位。已有池 unit 不是 `crew` 时,用 `shared-definition` 以同一 id 修订为正确单位与容量,或新建 crew 池;不要继续用 unit=人的池。`requirements[].mode` 只用 `work`(作业期间占用)或 `retained`(作业后继续保留);同资源池 `mode="work"` 的 demand 总和必须 ≥ `productiveCrews`,否则求值会报 `CONSTRUCTION_PRODUCTIVE_CREWS_NOT_RESERVED`。`plannedCrews/productiveCrews/hoursPerShift/parallelismBasis` 必须放在 `draft.production` 内,不要放到 draft 顶层。']:[],"- 量、工效、配置、班次、资源都要有**来源与量纲**;计算交给程序(求值),不口算、不抄大表、不自己维护资源邻接。",'- 正文单元要写**工程内容**:按内容实际写清对象/部位、工序/顺序、控制值/验收判据、岗位与验收接口中的相关项;每项数值/配置/日期/峰值断言绑定三类引用之一(冻结原字/已提交决定/计算证书)。断言形状:`assertions:[{subject:"实际对象",purpose:"用途",condition:"适用条件",reference:{kind:"evidence"|"decision"|"certificate",evidenceId/entityId/certificateId:"...",quote:"..."}}]`;引用至少要含 evidenceId/entityId/certificateId 之一,**只有 quote 不构成引用**(删掉它或补身份);普通表不留空白或占位内容。',"- **必交原格式**:requiredOutputs[].originalForm是独立审定的原表契约。保留其fields的序号、名称、顺序、headerPath、多级表头、分组固定行及notes;用formFieldBindings、rows.groupId和tableRowGroups对应实际字段/分组。valueRequired=false允许该字段空值;条件字段仅按已独审condition.status决定适用,未决不能自填不适用;必填字段不留占位。不要为了填表编造姓名、证号、厂家、年份或配置。originalFormContractHash/交付位置由服务器绑定,作者不填写或改写。原表序号与源允许空值不受普通表精简规则影响;匿名资源响应不能充抵具名原表。",'- 普通表不留占位单元格("—"、"待补"、"详见");普通关系图给节点与关系,空间图按layout给相对示意区域和线路,不把相对坐标当实测。**节点 label 只写短名称(岗位/区段/工序)**,长短由可读性决定、不按字数截断;图题写主题,正文写图所表达的判断/接口,不复述节点清单;部署图/危大管控图给节点group表达实际阶段/功能分组,真实存在区段/工作面时才填lane,不能为齐字段编造工区。组织/汇报图用 `graphLayout:"tree"`+`figureSemantics:"org"`;施工部署图用 `figureSemantics:"deployment"`,重点难点/危大管控图用 `figureSemantics:"risk-control"`(识别→对策→责任岗位→验证);**进度横道图/网络图**只用 `planChart:{view:"schedule"|"network"}`,由执行基准直接渲染日历轴、阶段与里程碑;没有证书图,也没有局部证书图兜底。',"- 不能自行裁决的事项(属于项目决策权限、或资料确实无法判定):登记为**交回项目决策者**的具体问题,写明需要的决定与复验条件——它**不阻塞**你的其他成果,也不许伪称通过。","",function(a){let b=a.map(a=>`- ${e[a]}`).join("\n");return`## 你被授予的职责
9
+ ${b}
10
+ 上表是**档案授权**;本次职责按委派时写明的目的(purpose)只暴露其中与当前目的相关的工具——**工具面里没有的动作,本轮不做**:需要另一目的的能力时通过共同决定请求协调,或由主控另立职责/走显式迁移,不要绕开,也不要把两套目的塞进同一条职责。`}(a.permissions),"",f,"","## 裁决的边界(工具契约的真实前提)","- 你能答复的是 **owner=project-decision-maker 的交回项**与 **owner 是你自己**的问题;"," 审查缺陷(`review-finding`)只能由独立审查复核关闭——你作为作者只能举证或修订,替自己关闭会被拒收。",'- 答复要说具体:采纳哪个备选、依据什么、后续怎么核;不能只回"继续优化"。',"","## 独立审查(同步调用,不是另一个角色)","正文单元生效后,用 `submit_for_independent_review` 提交要审的单元 id:服务端会用**独立提示、只读输入**同步调用审查模型,","返回逐条准则档位(professional/strong 达标;usable/deficient 不足)、findings 与未引用来源的处置意见。它不共享你的对话或推理,","你也无法在调用期间修改被审版本。","- 审查失败(超时/输出不合法)只返回失败回执,不会中断你的职责;可修订后重试。","- 有 findings 时:按证据用 `responses`(issueId+findingKey+unitEntityId+事实说明+证据引用)举证,或修订正文后重新提交;同名 key 按实际 issueId 定位,**审查缺陷不能由你关闭**。","- 审查返回 findings 后,先看 `reviewSummary.revisionPlan`(或调用 `review_revision_plan`):它把未关闭缺陷按**单元 → 准则 → finding** 归组,并列出还没有当前档位的单元。只修订计划里的单元与准则,不要重写无关章节;修订后重新提交同一批单元复审,认为缺陷不成立时用 `responses` 逐条举证。每轮复审都会返回新的计划,直到 `openFindings=0`,或你按完成语义把仍 open 的 finding 写入 `openIssues` 收口。",'- **审查不收敛的收口**:若 `reviewSummary.convergence.action = "blocked"`,说明相同业务状态在没有新证据时重复或依赖不能自行解决;按回执保留明确blocked原因与恢复依赖,交还调度;用 `complete` 的 `openIssues` 如实列出仍未解决的blocking finding。完成不等于专业接收:未关闭项进入交付回执并按 not-met 判,由导出闸门决定是否必须继续修订。',"- **每写完一节就提交审查**(`unitEntityIds` 用 submit 回执里的 changedEntityIds),不要等全部章节写完;审查档位是完成职责的前提。`review_revision_plan` 的 `unreviewedUnits[].unitEntityId` 就是还没有当前档位的单元:把它们的 id 原样放进 `submit_for_independent_review` 的 `unitEntityIds` 提交,直到该列表为空;不要反复读计划而不提交。","- 同一输入重复提交会命中缓存、不再重复计费;修订正文或补充举证会产生新的审查。","- 未引用来源的处置意见由程序按稳定来源ID集合自动续页,游标随工作库保存;不要手工猜offset。未给有效意见的来源保持未测并返回具体依赖。","- 完成职责前,**本职责每个生效正文单元都必须有当前版本的审查档位**;缺一项程序会拒绝完成并列出缺失单元。**未关闭的审查缺陷不再阻断完成**:完成声明里用 `openIssues` 如实列出仍 open 的 finding id;它们会进入交付回执并记 `not-met`,由导出闸门判是否需要继续修订。完成 ≠ 专业接收。","","## 何时结束本轮","当前目的已经完成(工作包已提交、**正文单元已产出并生效且已送审**、意见已给出)时,用 `complete` 声明成果并接受程序**五项**核验;","确实在等别的对象的决定或成果时,用 `wait` 订阅它。**两者必居其一**:职责不能以沉默结束。","问题账用 `inspect_issues` 读(`mine`=写给你的、`raised`=你登记的):答复会作为实际事件唤醒你,不要靠反复轮询猜。"].filter(Boolean).join("\n")}function j(a){let b=!!(a.scope&&(a.scope.sectionTitles?.length||a.scope.memberIndices?.length));return[`## 本次任务`,`项目:${a.projectName}`,`文档:${a.title}(正式目录 ${a.chapterTitles.length} 章 / ${a.sectionIds.length} 节)`,a.requirement.trim()?`用户要求:${a.requirement}`:"","","## 本次运行的范围(**这就是你要组织的全部**)",b?[a.scope.sectionTitles?.length?`- 章节:${a.scope.sectionTitles.join("、")}`:"",a.scope.memberIndices?.length?`- 原清单成员:${a.scope.memberIndices.length} 条(全部在你被授权的成员范围内)`:"","- 范围之外的章节**不在本次范围内**:不要为它们建职责,收口时用 `unassignedSectionIds` 如实列出。"].filter(Boolean).join("\n"):[`- 全工程:${a.sectionIds.length} 节、${a.memberCount} 条清单成员。`,"\n## 整稿怎么组织(工具契约的事实,不是流程规定)\n- **按章节与工程对象分工**:每一节都要有承接者;专业细节(工法、工效、配置、正文)由各专业职责在其职责内补齐,不由你逐条组织。","- `query_work_packages` 是**分页目录**:用来按对象**抽读**你要组织的那几类对象,**不要把整本目录逐页读完**(本项目的全部工作包与 "+String(a.memberCount)+" 条成员——那是把整个项目读一遍,不是组织职责所需的工作集,会把你引到无进展停机)。目录里已经读过的行再读一遍不算新证据。",'- 职责数量由工程事实决定:同一专业对象与其工作面可以合成一条持续职责;不要为了"看起来完整"照章节数复制职责,也不要为每一节单开一条。\n- **先明确职责节组及其对象,再建包、读回执、委派**:独立的建包可以同轮并行;拿到真实包 id 与覆盖后,独立的委派可以同轮并行。后一步依赖前一步的回执,不能猜包身份或覆盖。\n- 委派前先用 `list_construction_responsibility_options {view:"profiles"}` 查能力档案目录,`delegate_construction_responsibility` 的 profileId 从 `records[].id` 逐字复制(不猜名称、不省略)。'].join("\n"),"",...a.sectionDirectory?.length?[b?"## 本次范围内的正式章节(合同事实;范围外不要组织)":"## 正式章节(合同事实,全部;不要另立章节)",...a.sectionDirectory.map(a=>`- ${a.chapterTitle?`${a.chapterTitle}/`:""}${a.id}|${a.title}`),""]:[],...a.sourceFiles?.length?["## 项目来源文件(冻结目录,已带本职责授权计数;可直接用于建包)",...a.sourceFiles.slice(0,40).map(a=>`- ${a.path}(本职责 ${a.authorizedMembers}/${a.totalMembers} 条${a.wholeFileAuthorized?",整份可选用 sourceFiles":",需用 read_scope members 选授权成员"})`),...a.sourceFiles.length>40?[`- 其余 ${a.sourceFiles.length-40} 份未在此逐条列出;完整目录仍在冻结来源账中,按名称/序号用 read_scope 或 sourceFileDirectory 读取,不能当作不存在。`]:[],""]:[],...a.planning&&(a.planning.requiredOutputs.length||a.planning.contractObligations.length)?["## 规划义务(**必须有人承接**,不是可选项)",...a.planning.requiredOutputs.length?[...a.planning.requiredOutputs.map(a=>`- 输出:${a.element}(${a.form},${a.status})`)]:[],...a.planning.contractObligations.length?[`- 合同内容义务 ${a.planning.contractObligations.length} 项:${a.planning.contractObligations.map(a=>`${a.clause?`${a.clause} `:""}${a.text}${a.items?.length?`(${a.items.join("、")})`:""}`).join(";")}`]:[],...a.planning.factsBaseline?.length?[`- 项目事实基线 ${a.planning.factsBaseline.length} 组(已按对象/条件归一;冲突不当作单一值):`,...a.planning.factsBaseline.map(a=>` - ${a.key}${a.objectName?`@${a.objectName}`:""}${a.condition?`(${a.condition})`:""}:${a.value??`[${a.status}]`}${a.sourceFile?`(${a.sourceFile})`:""}`)]:[],...a.planning.factConflicts?.length?[`- 未决/已裁决事实冲突 ${a.planning.factConflicts.length} 组:${a.planning.factConflicts.map(a=>`${a.key}${a.objectName?`@${a.objectName}`:""}(${a.resolution})`).join("、")}`]:[],...a.planning.professionalCandidates?.length?["- 专业候选(候选不是目录,承接位置由你决定):",...a.planning.professionalCandidates.map(a=>` - ${a.chapterTitle}:候选 ${a.sectionCandidates.join("、")||"无"};内容要求 ${a.contentRequirements.map(a=>`${a.title}→${a.attachTo}`).join("、")||"无"}`)]:[],...a.planning.tenderProfile?[`- 招标格式:${a.planning.tenderProfile.bidType??"未声明"};身份匿名 ${!0===a.planning.tenderProfile.identityMarksForbidden?"是":"否"};正文图件口径 ${a.planning.tenderProfile.bodyFigurePolicy??"未声明"};页数语义 ${(a.planning.tenderProfile.pageSemantics??[]).map(a=>`${a.status}:${a.value}`).join("、")||"未规定"}`]:[],...a.planning.unreadSources?.length?[`- 未读/不可读来源 ${a.planning.unreadSourceCount??a.planning.unreadSources.length} 份(此处列前 ${a.planning.unreadSources.length} 份):${a.planning.unreadSources.map(a=>`${a.filePath}(${a.readStatus})`).join("、")};不得按文件名补造内容`+(a.planning.unreadSourcesNote?`。${a.planning.unreadSourcesNote}`:"")]:[],'- **总进度横道图/网络图**由执行基准直接渲染,写作职责用 `planChart:{view:"schedule"|"network"}` 声明;没有证书图,也没有兜底。不要把“总进度图”压给一条全工程汇总计算职责:它会把一个单节变成 6 个工作包的全局排程,既慢又容易失败。',"- 输出与合同内容义务都必须有承接者;用哪条职责、按什么顺序承接,由你按对象、依赖与工具面决定。需要计算支撑的输出,承接者必须具备生产计算能力,不得用文字/手绘图冒充计算。生产计算职责按**可完成的计算对象/工作面**拆分(例如按单体群或专业面);若计算输出覆盖多个单体/专业面,委派**多条** `production-calculation` 职责,每条只承接一个可完成的对象组。不要把全工程所有专业压给一条职责:上下文过长会导致传输中断。**每条生产计算职责的 goal 必须限定到一个已提交工作包与 3–8 个工序作业**(例如“循环水站土建:桩基—承台—主体结构—回填”),证书标明局部范围;不要在一条职责里排全工程所有单体。","- 规划闸门会在正文开始前按**实际职责定义**核对这些义务是否都有承接者;缺什么会作为反馈交回给你。",""]:[],"## 开始组织(不是先读完)","`sectionDirectory` 与上面的来源文件目录已经给出;**直接从来源文件目录里选一个与第一节相关的整份授权文件**(`wholeFileAuthorized` 为 true),不要先翻 `read_scope`,",'用 `submit({action:"work-package", reason:"…", payload:{selection:{sourceFiles:["实际文件"]}, sectionIds:["上面列出的实际章节 id"], title:"实际工作包名", objectScope:"实际对象", workfront:"实际工作面"}})` 建包;',"建包时 sectionIds 要列出本包实际支撑的全部小节,不能只列代表小节。成功回执 `data.workPackages` 给出包 id、version、title、sectionIds;委派节组必须是所选包覆盖的子集。收到建包回执后委派写作职责(purpose=writing),独立职责可批量处理。","委派缺覆盖时,根据回执中的具体缺失小节修正包选择;若尚无包支撑,由你按工程依据建补充包,再只重提失败职责。已成功委派不用重建,也不能为凑覆盖自动扩大既有职责范围。","**写作承接按可完成的成果边界组织**:一个写作职责通常承接 **2–3 个小节**,delegate 的 `sectionIds` 一次传入这个节组;章内小节多时按**不重叠的小节组**拆分给多个写作职责——同一节只能有一个写作承接者。把节组控制在能逐节深写的范围,不要一条职责承接整章 6–8 节:上下文过长会挤掉证据、载体判断和审查修订,写得“有内容但乱”。方法/生产/取证职责仍按实际成果边界另行委派。","按真实节组继续完成组织。不要把全部来源目录先读完;使用已给目录与覆盖回执,需要核实具体对象时再定向读取。","","## 从哪里看清对象","用 `read_scope` 按视图读取你被授权的范围:先看 `overview`(章节+来源文件,每个文件的成员数、涉及章节与对象),再按需看 `members`(原始清单成员序号)。",'工作包用真实章节 `sectionIds`+精确成员提交:`sourceFiles` 只在整份文件都在授权内时可用;`memberCount < projectMemberCount` 时必须用 `read_scope {view:"members"}` 读出授权成员序号,再用 `selection.memberIndices` 精确选择。`groupIndices` 只在 `sourceGroupWholeAuthorized=true` 时可用。需要真实成员记录时用 `query_work_packages` 的 `memberIndices` 精确读取。','**不要**用 `query_work_packages {query:"*"}` 逐页翻全项目目录来"找对象"——那是把整个项目读一遍,不是本任务的工作集,实测会把你引到无进展停机。',"","## 你要形成的成果",`为本次范围组织出**完整、可核查的专业职责**:每条职责对应实际工程对象与工作面,给出首条具体指令(目标、所需成果、依据哪些对象)。`,`本次范围内的每个章节都要有承接者,否则在收口时如实声明为未分配。不要为"看起来完整"而复制职责。`,"","## 本次范围的成果条件(事实,不是流程顺序)","构成一个**完整专业成果**的,除了正文本身,还包括**独立审查的档位**:交付评审按七维回执判定,",'没有独立审查的维度只能是"未测",交付就绪即为 false(第 15.1/27 节)。**独立审查不需要你另建职责**:',"正文作者用 `submit_for_independent_review` 提交已生效单元时,服务端会同步调用独立审查并登记档位;",'作者再按证据举证或修订。先后顺序由工程事实决定,但"没有审查档位就不算完整成果"是硬条件。'].filter(Boolean).join("\n")}}};
@@ -1 +1 @@
1
- globalThis.__BUILD_MANIFEST={polyfillFiles:["static/chunks/polyfills-42372ed130431b0a.js"],devFiles:[],ampDevFiles:[],lowPriorityFiles:[],rootMainFiles:[],rootMainFilesTree:{},pages:{"/":["static/chunks/webpack-2da1769ff35eb1ed.js","static/chunks/framework-9cde5013cd555765.js","static/chunks/main-b313efde54fa6d2e.js","static/chunks/6409-5a3bb0fbad4f64b1.js","static/chunks/1210-703ad87eaeee1e4e.js","static/chunks/1702-f5e99af7aface475.js","static/chunks/8399-a001bb2a0cb1640b.js","static/chunks/9605-3dee531f8a7ecbe0.js","static/chunks/8564-ac3e2f1bf87765b3.js","static/chunks/7795-c11ff1a81c67c5aa.js","static/chunks/pages/index-c572e9caa60cb278.js"],"/_app":["static/chunks/webpack-2da1769ff35eb1ed.js","static/chunks/framework-9cde5013cd555765.js","static/chunks/main-b313efde54fa6d2e.js","static/css/9eb02c1a401fd278.css","static/chunks/pages/_app-51c48c5efcf5c721.js"],"/_error":["static/chunks/webpack-2da1769ff35eb1ed.js","static/chunks/framework-9cde5013cd555765.js","static/chunks/main-b313efde54fa6d2e.js","static/chunks/pages/_error-c01b6fb772028676.js"],"/canvas":["static/chunks/webpack-2da1769ff35eb1ed.js","static/chunks/framework-9cde5013cd555765.js","static/chunks/main-b313efde54fa6d2e.js","static/chunks/6409-5a3bb0fbad4f64b1.js","static/chunks/1210-703ad87eaeee1e4e.js","static/chunks/1702-f5e99af7aface475.js","static/chunks/5544-d77b8289662b4c28.js","static/chunks/9551-f4b09bf2213ad571.js","static/chunks/8399-a001bb2a0cb1640b.js","static/chunks/7576-ba6fc03060415b0e.js","static/chunks/1499-ff8f02f6bb6f3d45.js","static/chunks/5061-80765d4a612286e0.js","static/chunks/3980-73841c40d55ddfa1.js","static/chunks/3456-70bb03a39473f693.js","static/chunks/4530-8b9788da40548ec6.js","static/chunks/pages/canvas-1d3589790493e955.js"],"/canvas/[id]":["static/chunks/webpack-2da1769ff35eb1ed.js","static/chunks/framework-9cde5013cd555765.js","static/chunks/main-b313efde54fa6d2e.js","static/chunks/6409-5a3bb0fbad4f64b1.js","static/chunks/1210-703ad87eaeee1e4e.js","static/chunks/1702-f5e99af7aface475.js","static/chunks/5544-d77b8289662b4c28.js","static/chunks/9551-f4b09bf2213ad571.js","static/chunks/4665-1984a3d8b0573fa1.js","static/chunks/8399-a001bb2a0cb1640b.js","static/chunks/7576-ba6fc03060415b0e.js","static/chunks/1499-ff8f02f6bb6f3d45.js","static/chunks/8569-1d5c61a3f4fa0e26.js","static/chunks/5061-80765d4a612286e0.js","static/chunks/9605-3dee531f8a7ecbe0.js","static/chunks/3980-73841c40d55ddfa1.js","static/chunks/4052-199e61ca9e6a33e7.js","static/chunks/6506-ac0ba7338cc84b7d.js","static/chunks/3456-70bb03a39473f693.js","static/chunks/8750-a3c55a576effb3a6.js","static/chunks/4530-8b9788da40548ec6.js","static/chunks/pages/canvas/[id]-18865f1b7e3a4696.js"],"/documents":["static/chunks/webpack-2da1769ff35eb1ed.js","static/chunks/framework-9cde5013cd555765.js","static/chunks/main-b313efde54fa6d2e.js","static/chunks/pages/documents-a1af5c6be26daed2.js"],"/guide":["static/chunks/webpack-2da1769ff35eb1ed.js","static/chunks/framework-9cde5013cd555765.js","static/chunks/main-b313efde54fa6d2e.js","static/chunks/6409-5a3bb0fbad4f64b1.js","static/chunks/1210-703ad87eaeee1e4e.js","static/chunks/1702-f5e99af7aface475.js","static/chunks/4665-1984a3d8b0573fa1.js","static/chunks/8399-a001bb2a0cb1640b.js","static/chunks/8569-1d5c61a3f4fa0e26.js","static/chunks/8787-49b1f35eb4acfac9.js","static/chunks/5760-f4191aac081b12d4.js","static/chunks/pages/guide-fdf0822dc1d28813.js"],"/jobs":["static/chunks/webpack-2da1769ff35eb1ed.js","static/chunks/framework-9cde5013cd555765.js","static/chunks/main-b313efde54fa6d2e.js","static/chunks/6409-5a3bb0fbad4f64b1.js","static/chunks/1210-703ad87eaeee1e4e.js","static/chunks/1702-f5e99af7aface475.js","static/chunks/5544-d77b8289662b4c28.js","static/chunks/9551-f4b09bf2213ad571.js","static/chunks/4665-1984a3d8b0573fa1.js","static/chunks/8399-a001bb2a0cb1640b.js","static/chunks/7576-ba6fc03060415b0e.js","static/chunks/1499-ff8f02f6bb6f3d45.js","static/chunks/8338-b2ea00050048ba9f.js","static/chunks/5061-80765d4a612286e0.js","static/chunks/8964-e959915ecfae86b2.js","static/chunks/9605-3dee531f8a7ecbe0.js","static/chunks/7217-416b8488e0d2d498.js","static/chunks/pages/jobs-ebd1877dbf788a83.js"],"/knowledge":["static/chunks/webpack-2da1769ff35eb1ed.js","static/chunks/framework-9cde5013cd555765.js","static/chunks/main-b313efde54fa6d2e.js","static/chunks/6409-5a3bb0fbad4f64b1.js","static/chunks/1210-703ad87eaeee1e4e.js","static/chunks/1702-f5e99af7aface475.js","static/chunks/5544-d77b8289662b4c28.js","static/chunks/9551-f4b09bf2213ad571.js","static/chunks/4665-1984a3d8b0573fa1.js","static/chunks/7576-ba6fc03060415b0e.js","static/chunks/1499-ff8f02f6bb6f3d45.js","static/chunks/8338-b2ea00050048ba9f.js","static/chunks/8964-e959915ecfae86b2.js","static/css/2da1c822e3bdb4bb.css","static/chunks/pages/knowledge-2a776c1740386874.js"],"/knowledge/file-detail":["static/chunks/webpack-2da1769ff35eb1ed.js","static/chunks/framework-9cde5013cd555765.js","static/chunks/main-b313efde54fa6d2e.js","static/chunks/6409-5a3bb0fbad4f64b1.js","static/chunks/1210-703ad87eaeee1e4e.js","static/chunks/1702-f5e99af7aface475.js","static/chunks/5544-d77b8289662b4c28.js","static/chunks/9551-f4b09bf2213ad571.js","static/chunks/4665-1984a3d8b0573fa1.js","static/chunks/8399-a001bb2a0cb1640b.js","static/chunks/7576-ba6fc03060415b0e.js","static/chunks/1499-ff8f02f6bb6f3d45.js","static/chunks/8569-1d5c61a3f4fa0e26.js","static/chunks/8338-b2ea00050048ba9f.js","static/chunks/8787-49b1f35eb4acfac9.js","static/chunks/8964-e959915ecfae86b2.js","static/chunks/6506-ac0ba7338cc84b7d.js","static/css/2da1c822e3bdb4bb.css","static/chunks/pages/knowledge/file-detail-3d1ffd43f4f0e47b.js"],"/knowledge/files":["static/chunks/webpack-2da1769ff35eb1ed.js","static/chunks/framework-9cde5013cd555765.js","static/chunks/main-b313efde54fa6d2e.js","static/chunks/pages/knowledge/files-b796702bb5f8ac50.js"],"/knowledge/manage":["static/chunks/webpack-2da1769ff35eb1ed.js","static/chunks/framework-9cde5013cd555765.js","static/chunks/main-b313efde54fa6d2e.js","static/chunks/pages/knowledge/manage-6d7b21cdca1255f2.js"],"/knowledge/source-preview":["static/chunks/webpack-2da1769ff35eb1ed.js","static/chunks/framework-9cde5013cd555765.js","static/chunks/main-b313efde54fa6d2e.js","static/chunks/6409-5a3bb0fbad4f64b1.js","static/chunks/1702-f5e99af7aface475.js","static/chunks/5544-d77b8289662b4c28.js","static/chunks/9551-f4b09bf2213ad571.js","static/chunks/4665-1984a3d8b0573fa1.js","static/chunks/1499-ff8f02f6bb6f3d45.js","static/chunks/8569-1d5c61a3f4fa0e26.js","static/chunks/8787-49b1f35eb4acfac9.js","static/chunks/6506-ac0ba7338cc84b7d.js","static/chunks/8318-cb3a94de1617f983.js","static/chunks/1141-d420a7685bc3623c.js","static/chunks/pages/knowledge/source-preview-24936b9a746ed07f.js"],"/models":["static/chunks/webpack-2da1769ff35eb1ed.js","static/chunks/framework-9cde5013cd555765.js","static/chunks/main-b313efde54fa6d2e.js","static/chunks/6409-5a3bb0fbad4f64b1.js","static/chunks/1210-703ad87eaeee1e4e.js","static/chunks/1702-f5e99af7aface475.js","static/chunks/5544-d77b8289662b4c28.js","static/chunks/9551-f4b09bf2213ad571.js","static/chunks/7576-ba6fc03060415b0e.js","static/chunks/8338-b2ea00050048ba9f.js","static/chunks/5061-80765d4a612286e0.js","static/chunks/3980-73841c40d55ddfa1.js","static/chunks/2864-b040f2bffa08c139.js","static/chunks/4052-199e61ca9e6a33e7.js","static/chunks/8318-cb3a94de1617f983.js","static/chunks/4337-a670a1a94ab505d9.js","static/chunks/pages/models-8a89dd5bf0f81242.js"],"/overview":["static/chunks/webpack-2da1769ff35eb1ed.js","static/chunks/framework-9cde5013cd555765.js","static/chunks/main-b313efde54fa6d2e.js","static/chunks/6409-5a3bb0fbad4f64b1.js","static/chunks/1210-703ad87eaeee1e4e.js","static/chunks/1702-f5e99af7aface475.js","static/chunks/8399-a001bb2a0cb1640b.js","static/chunks/9605-3dee531f8a7ecbe0.js","static/chunks/8564-ac3e2f1bf87765b3.js","static/chunks/7795-c11ff1a81c67c5aa.js","static/chunks/pages/overview-7e8018014009682e.js"],"/prompt":["static/chunks/webpack-2da1769ff35eb1ed.js","static/chunks/framework-9cde5013cd555765.js","static/chunks/main-b313efde54fa6d2e.js","static/chunks/6409-5a3bb0fbad4f64b1.js","static/chunks/1210-703ad87eaeee1e4e.js","static/chunks/1702-f5e99af7aface475.js","static/chunks/5544-d77b8289662b4c28.js","static/chunks/9551-f4b09bf2213ad571.js","static/chunks/4665-1984a3d8b0573fa1.js","static/chunks/7576-ba6fc03060415b0e.js","static/chunks/1499-ff8f02f6bb6f3d45.js","static/chunks/8338-b2ea00050048ba9f.js","static/chunks/5061-80765d4a612286e0.js","static/chunks/8964-e959915ecfae86b2.js","static/chunks/9605-3dee531f8a7ecbe0.js","static/chunks/4052-199e61ca9e6a33e7.js","static/chunks/7217-416b8488e0d2d498.js","static/chunks/4565-3c5ff667062ccec9.js","static/chunks/pages/prompt-11f87694feb6514c.js"],"/settings":["static/chunks/webpack-2da1769ff35eb1ed.js","static/chunks/framework-9cde5013cd555765.js","static/chunks/main-b313efde54fa6d2e.js","static/chunks/9605-3dee531f8a7ecbe0.js","static/chunks/7646-159733564c7eb8dc.js","static/chunks/pages/settings-e8dcaba1551a0b2b.js"],"/skills":["static/chunks/webpack-2da1769ff35eb1ed.js","static/chunks/framework-9cde5013cd555765.js","static/chunks/main-b313efde54fa6d2e.js","static/chunks/6409-5a3bb0fbad4f64b1.js","static/chunks/1210-703ad87eaeee1e4e.js","static/chunks/1702-f5e99af7aface475.js","static/chunks/5544-d77b8289662b4c28.js","static/chunks/9551-f4b09bf2213ad571.js","static/chunks/4665-1984a3d8b0573fa1.js","static/chunks/8399-a001bb2a0cb1640b.js","static/chunks/1499-ff8f02f6bb6f3d45.js","static/chunks/8569-1d5c61a3f4fa0e26.js","static/chunks/8338-b2ea00050048ba9f.js","static/chunks/5061-80765d4a612286e0.js","static/chunks/8787-49b1f35eb4acfac9.js","static/chunks/8964-e959915ecfae86b2.js","static/chunks/8715-ee013bd7f5ba38e8.js","static/chunks/pages/skills-8ad2577b4aa17f3b.js"],"/skills/[id]":["static/chunks/webpack-2da1769ff35eb1ed.js","static/chunks/framework-9cde5013cd555765.js","static/chunks/main-b313efde54fa6d2e.js","static/chunks/6409-5a3bb0fbad4f64b1.js","static/chunks/1210-703ad87eaeee1e4e.js","static/chunks/1702-f5e99af7aface475.js","static/chunks/5544-d77b8289662b4c28.js","static/chunks/4665-1984a3d8b0573fa1.js","static/chunks/8399-a001bb2a0cb1640b.js","static/chunks/8569-1d5c61a3f4fa0e26.js","static/chunks/8787-49b1f35eb4acfac9.js","static/chunks/6748-07b0b05bf03c72f0.js","static/chunks/pages/skills/[id]-71f696be252bbf0d.js"],"/skills/[id]/edit":["static/chunks/webpack-2da1769ff35eb1ed.js","static/chunks/framework-9cde5013cd555765.js","static/chunks/main-b313efde54fa6d2e.js","static/chunks/6409-5a3bb0fbad4f64b1.js","static/chunks/1210-703ad87eaeee1e4e.js","static/chunks/5544-d77b8289662b4c28.js","static/chunks/9551-f4b09bf2213ad571.js","static/chunks/4665-1984a3d8b0573fa1.js","static/chunks/8399-a001bb2a0cb1640b.js","static/chunks/7576-ba6fc03060415b0e.js","static/chunks/8569-1d5c61a3f4fa0e26.js","static/chunks/8787-49b1f35eb4acfac9.js","static/chunks/3980-73841c40d55ddfa1.js","static/chunks/2864-b040f2bffa08c139.js","static/chunks/6748-07b0b05bf03c72f0.js","static/chunks/9937-e4b2deadd24e3962.js","static/chunks/pages/skills/[id]/edit-99e616d5019e80b1.js"],"/skills/new":["static/chunks/webpack-2da1769ff35eb1ed.js","static/chunks/framework-9cde5013cd555765.js","static/chunks/main-b313efde54fa6d2e.js","static/chunks/6409-5a3bb0fbad4f64b1.js","static/chunks/1210-703ad87eaeee1e4e.js","static/chunks/5544-d77b8289662b4c28.js","static/chunks/9551-f4b09bf2213ad571.js","static/chunks/4665-1984a3d8b0573fa1.js","static/chunks/8399-a001bb2a0cb1640b.js","static/chunks/7576-ba6fc03060415b0e.js","static/chunks/8569-1d5c61a3f4fa0e26.js","static/chunks/8787-49b1f35eb4acfac9.js","static/chunks/3980-73841c40d55ddfa1.js","static/chunks/2864-b040f2bffa08c139.js","static/chunks/6748-07b0b05bf03c72f0.js","static/chunks/9937-e4b2deadd24e3962.js","static/chunks/pages/skills/new-00886ea4c676f927.js"],"/system/logs":["static/chunks/webpack-2da1769ff35eb1ed.js","static/chunks/framework-9cde5013cd555765.js","static/chunks/main-b313efde54fa6d2e.js","static/chunks/6409-5a3bb0fbad4f64b1.js","static/chunks/1210-703ad87eaeee1e4e.js","static/chunks/1702-f5e99af7aface475.js","static/chunks/5544-d77b8289662b4c28.js","static/chunks/9551-f4b09bf2213ad571.js","static/chunks/4665-1984a3d8b0573fa1.js","static/chunks/8399-a001bb2a0cb1640b.js","static/chunks/7576-ba6fc03060415b0e.js","static/chunks/1499-ff8f02f6bb6f3d45.js","static/chunks/8338-b2ea00050048ba9f.js","static/chunks/5061-80765d4a612286e0.js","static/chunks/8964-e959915ecfae86b2.js","static/chunks/pages/system/logs-0856f7c65432befb.js"]},ampFirstPages:[]},globalThis.__BUILD_MANIFEST.lowPriorityFiles=["/static/"+process.env.__NEXT_BUILD_ID+"/_buildManifest.js",,"/static/"+process.env.__NEXT_BUILD_ID+"/_ssgManifest.js"];
1
+ globalThis.__BUILD_MANIFEST={polyfillFiles:["static/chunks/polyfills-42372ed130431b0a.js"],devFiles:[],ampDevFiles:[],lowPriorityFiles:[],rootMainFiles:[],rootMainFilesTree:{},pages:{"/":["static/chunks/webpack-6224d37324e372cb.js","static/chunks/framework-4b565b3ddc94cdac.js","static/chunks/main-0c91f573696223ca.js","static/chunks/pages/index-24d1f8f39ae0beb0.js"],"/_app":["static/chunks/webpack-6224d37324e372cb.js","static/chunks/framework-4b565b3ddc94cdac.js","static/chunks/main-0c91f573696223ca.js","static/css/b420c193e0e99857.css","static/chunks/pages/_app-a70de062f1be1c59.js"],"/_error":["static/chunks/webpack-6224d37324e372cb.js","static/chunks/framework-4b565b3ddc94cdac.js","static/chunks/main-0c91f573696223ca.js","static/chunks/pages/_error-282257fbdcc167b4.js"],"/documents":["static/chunks/webpack-6224d37324e372cb.js","static/chunks/framework-4b565b3ddc94cdac.js","static/chunks/main-0c91f573696223ca.js","static/chunks/pages/documents-2d99ae9287f9739b.js"],"/generation":["static/chunks/webpack-6224d37324e372cb.js","static/chunks/framework-4b565b3ddc94cdac.js","static/chunks/main-0c91f573696223ca.js","static/chunks/855-cbf7cd1db33198f0.js","static/chunks/551-fd86e95935b0957f.js","static/chunks/210-71eaf9de9aa92051.js","static/chunks/399-aa8a45d80e989621.js","static/chunks/576-6699fed6c88502fe.js","static/chunks/499-2233cadc6d4da647.js","static/chunks/61-de1dd9c104680470.js","static/chunks/333-7642e65bff6b8465.js","static/chunks/326-a3915e61888b0dbf.js","static/chunks/pages/generation-043e325d635c96af.js"],"/generation/[id]":["static/chunks/webpack-6224d37324e372cb.js","static/chunks/framework-4b565b3ddc94cdac.js","static/chunks/main-0c91f573696223ca.js","static/chunks/855-cbf7cd1db33198f0.js","static/chunks/551-fd86e95935b0957f.js","static/chunks/210-71eaf9de9aa92051.js","static/chunks/702-4d9cc8d4d7775ea9.js","static/chunks/399-aa8a45d80e989621.js","static/chunks/576-6699fed6c88502fe.js","static/chunks/499-2233cadc6d4da647.js","static/chunks/61-de1dd9c104680470.js","static/chunks/112-9eacc7c0686813d6.js","static/chunks/333-7642e65bff6b8465.js","static/chunks/350-87b9c900a356d9b9.js","static/chunks/326-a3915e61888b0dbf.js","static/chunks/pages/generation/[id]-1f97e47ce545bd11.js"],"/jobs":["static/chunks/webpack-6224d37324e372cb.js","static/chunks/framework-4b565b3ddc94cdac.js","static/chunks/main-0c91f573696223ca.js","static/chunks/855-cbf7cd1db33198f0.js","static/chunks/551-fd86e95935b0957f.js","static/chunks/210-71eaf9de9aa92051.js","static/chunks/702-4d9cc8d4d7775ea9.js","static/chunks/665-0634aa49137defc4.js","static/chunks/399-aa8a45d80e989621.js","static/chunks/576-6699fed6c88502fe.js","static/chunks/499-2233cadc6d4da647.js","static/chunks/338-19ccbaec57a7bf9c.js","static/chunks/61-de1dd9c104680470.js","static/chunks/964-82cc4701f08f7351.js","static/chunks/325-45106bb003a2c5ce.js","static/chunks/pages/jobs-ff2f899a081b616e.js"],"/knowledge":["static/chunks/webpack-6224d37324e372cb.js","static/chunks/framework-4b565b3ddc94cdac.js","static/chunks/main-0c91f573696223ca.js","static/chunks/855-cbf7cd1db33198f0.js","static/chunks/551-fd86e95935b0957f.js","static/chunks/210-71eaf9de9aa92051.js","static/chunks/702-4d9cc8d4d7775ea9.js","static/chunks/665-0634aa49137defc4.js","static/chunks/576-6699fed6c88502fe.js","static/chunks/499-2233cadc6d4da647.js","static/chunks/338-19ccbaec57a7bf9c.js","static/chunks/964-82cc4701f08f7351.js","static/chunks/681-e31b13114497e058.js","static/css/1f6d2a1bf5e15e0f.css","static/chunks/pages/knowledge-8fa842d21892e2c3.js"],"/knowledge/file-detail":["static/chunks/webpack-6224d37324e372cb.js","static/chunks/framework-4b565b3ddc94cdac.js","static/chunks/main-0c91f573696223ca.js","static/chunks/855-cbf7cd1db33198f0.js","static/chunks/551-fd86e95935b0957f.js","static/chunks/210-71eaf9de9aa92051.js","static/chunks/702-4d9cc8d4d7775ea9.js","static/chunks/665-0634aa49137defc4.js","static/chunks/399-aa8a45d80e989621.js","static/chunks/576-6699fed6c88502fe.js","static/chunks/499-2233cadc6d4da647.js","static/chunks/759-280cf4040fae83af.js","static/chunks/338-19ccbaec57a7bf9c.js","static/chunks/964-82cc4701f08f7351.js","static/chunks/127-5ee1899eef559281.js","static/css/1f6d2a1bf5e15e0f.css","static/chunks/pages/knowledge/file-detail-9a9a89e4fa33c0d9.js"],"/knowledge/files":["static/chunks/webpack-6224d37324e372cb.js","static/chunks/framework-4b565b3ddc94cdac.js","static/chunks/main-0c91f573696223ca.js","static/chunks/pages/knowledge/files-b3ef5324e4b74c4a.js"],"/knowledge/manage":["static/chunks/webpack-6224d37324e372cb.js","static/chunks/framework-4b565b3ddc94cdac.js","static/chunks/main-0c91f573696223ca.js","static/chunks/pages/knowledge/manage-d9eaebf3a8307953.js"],"/knowledge/source-preview":["static/chunks/webpack-6224d37324e372cb.js","static/chunks/framework-4b565b3ddc94cdac.js","static/chunks/main-0c91f573696223ca.js","static/chunks/855-cbf7cd1db33198f0.js","static/chunks/551-fd86e95935b0957f.js","static/chunks/702-4d9cc8d4d7775ea9.js","static/chunks/665-0634aa49137defc4.js","static/chunks/499-2233cadc6d4da647.js","static/chunks/759-280cf4040fae83af.js","static/chunks/992-8032f477230baaaf.js","static/chunks/127-5ee1899eef559281.js","static/chunks/862-13d1c84d0938b824.js","static/chunks/pages/knowledge/source-preview-f000b4d63cd65a54.js"],"/models":["static/chunks/webpack-6224d37324e372cb.js","static/chunks/framework-4b565b3ddc94cdac.js","static/chunks/main-0c91f573696223ca.js","static/chunks/855-cbf7cd1db33198f0.js","static/chunks/551-fd86e95935b0957f.js","static/chunks/210-71eaf9de9aa92051.js","static/chunks/702-4d9cc8d4d7775ea9.js","static/chunks/576-6699fed6c88502fe.js","static/chunks/338-19ccbaec57a7bf9c.js","static/chunks/61-de1dd9c104680470.js","static/chunks/465-80fbb245d43232c8.js","static/chunks/992-8032f477230baaaf.js","static/chunks/112-9eacc7c0686813d6.js","static/chunks/430-f288e16301b9aea5.js","static/chunks/pages/models-6d9b301009f82395.js"],"/settings":["static/chunks/webpack-6224d37324e372cb.js","static/chunks/framework-4b565b3ddc94cdac.js","static/chunks/main-0c91f573696223ca.js","static/chunks/702-4d9cc8d4d7775ea9.js","static/chunks/687-644a12a5b584e19f.js","static/chunks/pages/settings-08893ba8afa1a486.js"],"/skills":["static/chunks/webpack-6224d37324e372cb.js","static/chunks/framework-4b565b3ddc94cdac.js","static/chunks/main-0c91f573696223ca.js","static/chunks/855-cbf7cd1db33198f0.js","static/chunks/551-fd86e95935b0957f.js","static/chunks/210-71eaf9de9aa92051.js","static/chunks/702-4d9cc8d4d7775ea9.js","static/chunks/665-0634aa49137defc4.js","static/chunks/399-aa8a45d80e989621.js","static/chunks/499-2233cadc6d4da647.js","static/chunks/759-280cf4040fae83af.js","static/chunks/338-19ccbaec57a7bf9c.js","static/chunks/61-de1dd9c104680470.js","static/chunks/964-82cc4701f08f7351.js","static/chunks/359-f87c659236e0e0fe.js","static/chunks/pages/skills-9fb1fa2b669ad4e3.js"],"/skills/[id]":["static/chunks/webpack-6224d37324e372cb.js","static/chunks/framework-4b565b3ddc94cdac.js","static/chunks/main-0c91f573696223ca.js","static/chunks/855-cbf7cd1db33198f0.js","static/chunks/210-71eaf9de9aa92051.js","static/chunks/702-4d9cc8d4d7775ea9.js","static/chunks/665-0634aa49137defc4.js","static/chunks/399-aa8a45d80e989621.js","static/chunks/759-280cf4040fae83af.js","static/chunks/748-9e5bf4181d7482f3.js","static/chunks/pages/skills/[id]-0ca4cde22e4a518b.js"],"/skills/[id]/edit":["static/chunks/webpack-6224d37324e372cb.js","static/chunks/framework-4b565b3ddc94cdac.js","static/chunks/main-0c91f573696223ca.js","static/chunks/855-cbf7cd1db33198f0.js","static/chunks/551-fd86e95935b0957f.js","static/chunks/210-71eaf9de9aa92051.js","static/chunks/665-0634aa49137defc4.js","static/chunks/399-aa8a45d80e989621.js","static/chunks/576-6699fed6c88502fe.js","static/chunks/759-280cf4040fae83af.js","static/chunks/465-80fbb245d43232c8.js","static/chunks/748-9e5bf4181d7482f3.js","static/chunks/937-ccd3ceb1b3739535.js","static/chunks/pages/skills/[id]/edit-378249e662ebf31f.js"],"/skills/new":["static/chunks/webpack-6224d37324e372cb.js","static/chunks/framework-4b565b3ddc94cdac.js","static/chunks/main-0c91f573696223ca.js","static/chunks/855-cbf7cd1db33198f0.js","static/chunks/551-fd86e95935b0957f.js","static/chunks/210-71eaf9de9aa92051.js","static/chunks/665-0634aa49137defc4.js","static/chunks/399-aa8a45d80e989621.js","static/chunks/576-6699fed6c88502fe.js","static/chunks/759-280cf4040fae83af.js","static/chunks/465-80fbb245d43232c8.js","static/chunks/748-9e5bf4181d7482f3.js","static/chunks/937-ccd3ceb1b3739535.js","static/chunks/pages/skills/new-c1eb16d98fad4e02.js"]},ampFirstPages:[]},globalThis.__BUILD_MANIFEST.lowPriorityFiles=["/static/"+process.env.__NEXT_BUILD_ID+"/_buildManifest.js",,"/static/"+process.env.__NEXT_BUILD_ID+"/_ssgManifest.js"];
@@ -1 +1 @@
1
- <!DOCTYPE html><html><head><meta charSet="utf-8" data-next-head=""/><meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" data-next-head=""/><link rel="icon" type="image/svg+xml" href="/favicon.svg" data-next-head=""/><link rel="icon" href="/favicon.ico" sizes="any" data-next-head=""/><link rel="apple-touch-icon" href="/apple-touch-icon.png" data-next-head=""/><title data-next-head="">404: This page could not be found</title><link rel="preload" href="/_next/static/css/9eb02c1a401fd278.css" as="style"/><link rel="stylesheet" href="/_next/static/css/9eb02c1a401fd278.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" noModule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-2da1769ff35eb1ed.js" defer=""></script><script src="/_next/static/chunks/framework-9cde5013cd555765.js" defer=""></script><script src="/_next/static/chunks/main-b313efde54fa6d2e.js" defer=""></script><script src="/_next/static/chunks/pages/_app-51c48c5efcf5c721.js" defer=""></script><script src="/_next/static/chunks/pages/_error-c01b6fb772028676.js" defer=""></script><script src="/_next/static/0e37797d2ec62d17ca5f253c10b385fa939228f353538722f095755edce292af/_buildManifest.js" defer=""></script><script src="/_next/static/0e37797d2ec62d17ca5f253c10b385fa939228f353538722f095755edce292af/_ssgManifest.js" defer=""></script></head><body><div id="__next"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}if(u)p(u);else try{let n=localStorage.getItem(i)||s,y=l&&n==="system"?c():n;p(y)}catch(n){}})("class","theme","system",null,["light","dark"],null,true,true)</script><div class="css-1pi45l5 ant-app css-var-_R_56_"><aside class="sidebar sidebarCollapsedSelf"><div class="sidebarLogoRow"><a class="min-w-0 flex-1" href="/overview"><div class="sidebarLogo"><div class="w-8 h-8 rounded-lg bg-black dark:bg-white flex items-center justify-center shrink-0"><svg width="26" height="26" viewBox="0 0 24 24" class="text-white dark:text-black" aria-hidden="true" focusable="false"><g transform="translate(12.2475 11.7525) scale(1.0500) translate(0.9636 0.0000) rotate(5.00)"><path d="M8.561 5.168 A10 10 0 1 1 1.544 -9.880 A8.5 8.5 0 1 0 8.561 5.168 Z" fill="currentColor"></path></g></svg></div><div class="sidebarLogoTitle"><span class="logoGradient">Customize Agent</span></div></div></a></div><nav class="sidebarNav mt-2"><a href="/overview"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-layout-dashboard"><rect width="7" height="9" x="3" y="3" rx="1"></rect><rect width="7" height="5" x="14" y="3" rx="1"></rect><rect width="7" height="9" x="14" y="12" rx="1"></rect><rect width="7" height="5" x="3" y="16" rx="1"></rect></svg><span class="sidebarLabel">总览</span></div></a><a href="/knowledge"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-database"><ellipse cx="12" cy="5" rx="9" ry="3"></ellipse><path d="M3 5V19A9 3 0 0 0 21 19V5"></path><path d="M3 12A9 3 0 0 0 21 12"></path></svg><span class="sidebarLabel">知识库</span></div></a><a href="/models"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-cpu"><rect width="16" height="16" x="4" y="4" rx="2"></rect><rect width="6" height="6" x="9" y="9" rx="1"></rect><path d="M15 2v2"></path><path d="M15 20v2"></path><path d="M2 15h2"></path><path d="M2 9h2"></path><path d="M20 15h2"></path><path d="M20 9h2"></path><path d="M9 2v2"></path><path d="M9 20v2"></path></svg><span class="sidebarLabel">模型配置</span></div></a><a href="/prompt"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-message-square"><path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"></path></svg><span class="sidebarLabel">提示词管理</span></div></a><a href="/skills"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-shield-check"><path d="M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z"></path><path d="m9 12 2 2 4-4"></path></svg><span class="sidebarLabel">技能库</span></div></a><a href="/canvas"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-network"><rect x="16" y="16" width="6" height="6" rx="1"></rect><rect x="2" y="16" width="6" height="6" rx="1"></rect><rect x="9" y="2" width="6" height="6" rx="1"></rect><path d="M5 16v-3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3"></path><path d="M12 12V8"></path></svg><span class="sidebarLabel">生成画布</span></div></a><a href="/guide"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-book-open"><path d="M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z"></path><path d="M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z"></path></svg><span class="sidebarLabel">指引</span></div></a><a href="/settings"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-settings"><path d="M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z"></path><circle cx="12" cy="12" r="3"></circle></svg><span class="sidebarLabel">设置</span></div></a></nav></aside><div class="mainContent"><header class="topbar"><div class="flex-1"></div><a class="shrink-0" href="/jobs"><span class="ant-badge css-1pi45l5 css-var-_R_56_"><button type="button" class="ant-btn css-1pi45l5 css-var-_R_56_ ant-btn-default ant-btn-color-default ant-btn-variant-outlined topbarBtn"><span class="ant-btn-icon"><span role="img" aria-label="clock-circle" class="anticon anticon-clock-circle"><svg viewBox="64 64 896 896" focusable="false" data-icon="clock-circle" width="1em" height="1em" fill="currentColor" aria-hidden="true"><path d="M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"></path><path d="M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z"></path></svg></span></span><span>后台任务</span></button></span></a><button class="topbarBtn"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-moon"><path d="M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z"></path></svg><span>深色</span></button><button class="topbarBtn"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-languages"><path d="m5 8 6 6"></path><path d="m4 14 6-6 2-3"></path><path d="M2 5h12"></path><path d="M7 2h1"></path><path d="m22 22-5-10-5 10"></path><path d="M14 18h6"></path></svg><span>English</span></button></header><main class="mainInner"><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">This page could not be found<!-- -->.</h2></div></div></div></main></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":404}},"page":"/_error","query":{},"buildId":"0e37797d2ec62d17ca5f253c10b385fa939228f353538722f095755edce292af","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
1
+ <!DOCTYPE html><html><head><meta charSet="utf-8" data-next-head=""/><meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" data-next-head=""/><link rel="icon" type="image/svg+xml" href="/favicon.svg" data-next-head=""/><link rel="icon" href="/favicon.ico" sizes="any" data-next-head=""/><link rel="apple-touch-icon" href="/apple-touch-icon.png" data-next-head=""/><title data-next-head="">404: This page could not be found</title><link rel="preload" href="/_next/static/css/b420c193e0e99857.css" as="style"/><link rel="stylesheet" href="/_next/static/css/b420c193e0e99857.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" noModule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-6224d37324e372cb.js" defer=""></script><script src="/_next/static/chunks/framework-4b565b3ddc94cdac.js" defer=""></script><script src="/_next/static/chunks/main-0c91f573696223ca.js" defer=""></script><script src="/_next/static/chunks/pages/_app-a70de062f1be1c59.js" defer=""></script><script src="/_next/static/chunks/pages/_error-282257fbdcc167b4.js" defer=""></script><script src="/_next/static/e5c2576dc1ab66edac22c9534755509cc2e1354bd840260e3154f2c95cf8bbf2/_buildManifest.js" defer=""></script><script src="/_next/static/e5c2576dc1ab66edac22c9534755509cc2e1354bd840260e3154f2c95cf8bbf2/_ssgManifest.js" defer=""></script></head><body><div id="__next"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}if(u)p(u);else try{let n=localStorage.getItem(i)||s,y=l&&n==="system"?c():n;p(y)}catch(n){}})("class","theme","system",null,["light","dark"],null,true,true)</script><div class="css-1pi45l5 ant-app css-var-_R_56_"><aside class="sidebar"><a class="sidebarLogo" aria-label="Customize Agent" href="/generation"><div class="w-8 h-8 rounded-lg bg-black dark:bg-white flex items-center justify-center shrink-0"><svg width="26" height="26" viewBox="0 0 24 24" class="text-white dark:text-black" aria-hidden="true" focusable="false"><g transform="translate(12.2475 11.7525) scale(1.0500) translate(0.9636 0.0000) rotate(5.00)"><path d="M8.561 5.168 A10 10 0 1 1 1.544 -9.880 A8.5 8.5 0 1 0 8.561 5.168 Z" fill="currentColor"></path></g></svg></div></a><nav class="sidebarNav mt-2"><a href="/generation"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-wand-sparkles"><path d="m21.64 3.64-1.28-1.28a1.21 1.21 0 0 0-1.72 0L2.36 18.64a1.21 1.21 0 0 0 0 1.72l1.28 1.28a1.2 1.2 0 0 0 1.72 0L21.64 5.36a1.2 1.2 0 0 0 0-1.72"></path><path d="m14 7 3 3"></path><path d="M5 6v4"></path><path d="M19 14v4"></path><path d="M10 2v2"></path><path d="M7 8H3"></path><path d="M21 16h-4"></path><path d="M11 3H9"></path></svg><span class="sidebarLabel sr-only">生成</span></div></a><a href="/knowledge"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-library-big"><rect width="8" height="18" x="3" y="3" rx="1"></rect><path d="M7 3v18"></path><path d="M20.4 18.9c.2.5-.1 1.1-.6 1.3l-1.9.7c-.5.2-1.1-.1-1.3-.6L11.1 5.1c-.2-.5.1-1.1.6-1.3l1.9-.7c.5-.2 1.1.1 1.3.6Z"></path></svg><span class="sidebarLabel sr-only">知识库</span></div></a><a href="/skills"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-hammer"><path d="m15 12-8.373 8.373a1 1 0 1 1-3-3L12 9"></path><path d="m18 15 4-4"></path><path d="m21.5 11.5-1.914-1.914A2 2 0 0 1 19 8.172V7l-2.26-2.26a6 6 0 0 0-4.202-1.756L9 2.96l.92.82A6.18 6.18 0 0 1 12 8.4V10l2 2h1.172a2 2 0 0 1 1.414.586L18.5 14.5"></path></svg><span class="sidebarLabel sr-only">技能库</span></div></a><a href="/models"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-cpu"><rect width="16" height="16" x="4" y="4" rx="2"></rect><rect width="6" height="6" x="9" y="9" rx="1"></rect><path d="M15 2v2"></path><path d="M15 20v2"></path><path d="M2 15h2"></path><path d="M2 9h2"></path><path d="M20 15h2"></path><path d="M20 9h2"></path><path d="M9 2v2"></path><path d="M9 20v2"></path></svg><span class="sidebarLabel sr-only">模型配置</span></div></a><a href="/settings"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-settings"><path d="M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z"></path><circle cx="12" cy="12" r="3"></circle></svg><span class="sidebarLabel sr-only">设置</span></div></a></nav></aside><div class="mainContent"><main class="mainInner"><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">This page could not be found<!-- -->.</h2></div></div></div></main></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":404}},"page":"/_error","query":{},"buildId":"e5c2576dc1ab66edac22c9534755509cc2e1354bd840260e3154f2c95cf8bbf2","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>