@yuku123/z-team-component 0.2.59 → 0.2.60

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 (52) hide show
  1. package/dist/{ChangeLogView-Cstbioyw.js → ChangeLogView-VRWVzP0r.js} +1 -1
  2. package/dist/{ComponentDoc-Bx6NAJlK.js → ComponentDoc-DjfucAFW.js} +1497 -1387
  3. package/dist/{InvitationManagementPage-Gkqisq4C.js → InvitationManagementPage-BQ_4HcPk.js} +1 -1
  4. package/dist/{OnboardingPage-C7C4PEjn.js → OnboardingPage-DM8emo6P.js} +2 -2
  5. package/dist/{ScheduledTasks-BQRcjBOd.js → ScheduledTasks-BYxdbsSa.js} +8 -8
  6. package/dist/SystemShell-BEdMWZ8d.js +670 -0
  7. package/dist/{admin-logs-B9KS6VJz.js → admin-logs-DCYof_u5.js} +2 -2
  8. package/dist/{api-Y-52Ejhz.js → api-Bz4pq8m7.js} +1 -1
  9. package/dist/{api-CALqShkO.js → api-DWt94BcM.js} +584 -572
  10. package/dist/{createWorkspaceWsHandler-DP30xvug.js → createWorkspaceWsHandler-3aHkBZE9.js} +4 -4
  11. package/dist/{index-4YxdJwFm.js → index-4LNRkvy6.js} +3 -3
  12. package/dist/{index-DfQCaS0z.js → index-BHUK6MwQ.js} +248 -244
  13. package/dist/{index-C2Wkg1b5.js → index-BIdcTXZW.js} +3 -3
  14. package/dist/index-BVEvns4M.js +2858 -0
  15. package/dist/{index-m8V5TniT.js → index-BVh0W8ck.js} +15861 -15586
  16. package/dist/{index-Bpn6x1So.js → index-C0rbeCoZ.js} +12 -12
  17. package/dist/{index-8gCovDDT.js → index-C6jp_1-U.js} +6 -6
  18. package/dist/index-CQSTQAPg.js +112 -0
  19. package/dist/{index-lftFkqfI.js → index-CTKf6h2u.js} +4 -4
  20. package/dist/{index-BvTYVEEv.js → index-Cf7WJqfM.js} +20 -16
  21. package/dist/{index-CO6WYRIS.js → index-Cip94Q-G.js} +3 -3
  22. package/dist/{index-DKeYG0Fu.js → index-CrIIInfs.js} +4 -4
  23. package/dist/{index-DJ0FV74Y.js → index-DbEvwIck.js} +3 -3
  24. package/dist/{index-CLWgeKwr.js → index-DtVBFjaJ.js} +2 -2
  25. package/dist/{index-CGWttFLb.js → index-Dvhocfyo.js} +4 -4
  26. package/dist/index-DyE5noq6.js +118 -0
  27. package/dist/{index-Gt21FARO.js → index-KqKj9E7y.js} +3 -3
  28. package/dist/{index-aw72ID7y.js → index-NPxrK-81.js} +1 -1
  29. package/dist/{index-CinRd7Nz.js → index-VY-pgcyl.js} +1 -1
  30. package/dist/{index-DJOyOVn_.js → index-VxO9i5r6.js} +1 -1
  31. package/dist/{index-63ovR-_x.js → index-_gGu4e-w.js} +1 -1
  32. package/dist/{index-C3B7CbHo.js → index-bsGAZKaU.js} +624 -613
  33. package/dist/{index-CN9NsUQ6.js → index-eGX5rkV8.js} +5 -5
  34. package/dist/{index-DET70T3j.js → index-i6Ejgpao.js} +1 -1
  35. package/dist/index-ncjLe3A0.js +93 -0
  36. package/dist/index.js +1 -1
  37. package/dist/{instance-f3C-1qYl.js → instance-CbkHlDr4.js} +1 -1
  38. package/dist/menuPermission-BWqugXIc.js +60 -0
  39. package/dist/pages.js +1 -1
  40. package/dist/schedule-BRvmKoDG.js +587 -0
  41. package/dist/{send-default-agent-team-message-d_ECdczr.js → send-default-agent-team-message-8wnVWO7H.js} +1 -1
  42. package/dist/{sso-user-HcsSzg8P.js → sso-user-QZNVhjpR.js} +1 -1
  43. package/dist/{training-DnNQN0An.js → training-DYo1pvX7.js} +1 -1
  44. package/dist/{useAppStore-kRZEA5WZ.js → useAppStore-BGOxWep2.js} +6 -2
  45. package/dist/{webide-BcRzJX-h.js → webide-CWTbQs4I.js} +4 -4
  46. package/dist/z-team-component.css +2 -2
  47. package/package.json +1 -1
  48. package/dist/SystemShell-Df9PZzLO.js +0 -907
  49. package/dist/index-Bw9yypc4.js +0 -2841
  50. package/dist/index-C0EIMJI2.js +0 -112
  51. package/dist/index-DRrBkbr_.js +0 -100
  52. package/dist/schedule-DfkgwPdE.js +0 -497
@@ -1,907 +0,0 @@
1
- import { jsxs as u, jsx as e } from "react/jsx-runtime";
2
- import { useNavigate as ne, useLocation as E, Navigate as d } from "react-router-dom";
3
- import re, { useMemo as v, useState as M, useEffect as H, Suspense as le, lazy as A } from "react";
4
- import { DownOutlined as K, RightOutlined as U, AppstoreOutlined as ae, UserOutlined as pe, SafetyCertificateOutlined as B, CloudOutlined as j, DeploymentUnitOutlined as F, AuditOutlined as W, CodeOutlined as z, FolderOpenOutlined as ue, DesktopOutlined as oe, DashboardOutlined as L, ProfileOutlined as X, BookOutlined as me, ApartmentOutlined as de, FileImageOutlined as he, FileTextOutlined as T, CalendarOutlined as I, ApiOutlined as be, ProjectOutlined as ce, ClusterOutlined as ge, DatabaseOutlined as _e, TeamOutlined as ye, BarChartOutlined as Q } from "@ant-design/icons";
5
- import { ProductApp as ke } from "@yuku123/z-product-component";
6
- const fe = "_container_wbul9_7", we = "_sidebar_wbul9_17", Se = "_menuList_wbul9_37", ve = "_menuGroup_wbul9_44", Ae = "_menuGroupHeader_wbul9_48", De = "_menuGroupIcon_wbul9_66", Ne = "_menuGroupLabel_wbul9_75", Pe = "_menuGroupArrow_wbul9_80", Ce = "_menuSubList_wbul9_87", Ie = "_menuSubItem_wbul9_93", Me = "_menuSubItemActive_wbul9_110", Ge = "_menuSubItemIcon_wbul9_117", Oe = "_menuSubGroup_wbul9_132", Le = "_menuSubGroupHeader_wbul9_136", Te = "_menuSubGroupHeaderActive_wbul9_154", Ee = "_menuSubGroupLabel_wbul9_158", ze = "_main_wbul9_169", $e = "_detailPanel_wbul9_179", xe = "_detailHeader_wbul9_189", Re = "_detailIcon_wbul9_196", He = "_detailTitle_wbul9_209", je = "_detailDesc_wbul9_216", qe = "_detailAction_wbul9_223", Ke = "_goBtn_wbul9_228", Ue = "_emptyState_wbul9_248", s = {
7
- container: fe,
8
- sidebar: we,
9
- menuList: Se,
10
- menuGroup: ve,
11
- menuGroupHeader: Ae,
12
- menuGroupIcon: De,
13
- menuGroupLabel: Ne,
14
- menuGroupArrow: Pe,
15
- menuSubList: Ce,
16
- menuSubItem: Ie,
17
- menuSubItemActive: Me,
18
- menuSubItemIcon: Ge,
19
- menuSubGroup: Oe,
20
- menuSubGroupHeader: Le,
21
- menuSubGroupHeaderActive: Te,
22
- menuSubGroupLabel: Ee,
23
- main: ze,
24
- detailPanel: $e,
25
- detailHeader: xe,
26
- detailIcon: Re,
27
- detailTitle: He,
28
- detailDesc: je,
29
- detailAction: qe,
30
- goBtn: Ke,
31
- emptyState: Ue
32
- };
33
- function q(n) {
34
- return n.flatMap((t) => [t, ...q(t.children ?? [])]);
35
- }
36
- const Be = {
37
- title: "测试中心",
38
- icon: /* @__PURE__ */ e(L, {}),
39
- items: [
40
- {
41
- key: "test-dashboard",
42
- label: "测试总览",
43
- icon: /* @__PURE__ */ e(L, {}),
44
- path: "/test/qa/dashboard",
45
- desc: "测试统计、趋势与套件健康度"
46
- },
47
- {
48
- key: "test-design",
49
- label: "用例与编排",
50
- icon: /* @__PURE__ */ e(T, {}),
51
- children: [
52
- {
53
- key: "test-case",
54
- label: "测试用例",
55
- icon: /* @__PURE__ */ e(T, {}),
56
- path: "/test/qa/cases",
57
- desc: "接口用例与断言模板"
58
- },
59
- {
60
- key: "test-suite",
61
- label: "测试套件",
62
- icon: /* @__PURE__ */ e(ge, {}),
63
- path: "/test/qa/suites",
64
- desc: "步骤编排与变量传递"
65
- },
66
- {
67
- key: "test-plan",
68
- label: "测试计划",
69
- icon: /* @__PURE__ */ e(ce, {}),
70
- path: "/test/qa/plans",
71
- desc: "套件组合与环境绑定"
72
- }
73
- ]
74
- },
75
- {
76
- key: "test-exec",
77
- label: "执行与调度",
78
- icon: /* @__PURE__ */ e(I, {}),
79
- children: [
80
- {
81
- key: "test-run",
82
- label: "执行记录",
83
- icon: /* @__PURE__ */ e(I, {}),
84
- path: "/test/qa/runs",
85
- desc: "执行触发、状态与报告"
86
- },
87
- {
88
- key: "test-schedule",
89
- label: "定时调度",
90
- icon: /* @__PURE__ */ e(I, {}),
91
- path: "/test/qa/schedules",
92
- desc: "cron 定时执行"
93
- },
94
- {
95
- key: "test-e2e",
96
- label: "E2E 测试",
97
- icon: /* @__PURE__ */ e(oe, {}),
98
- path: "/test/qa/e2e",
99
- desc: "浏览器自动化测试"
100
- }
101
- ]
102
- },
103
- {
104
- key: "test-support",
105
- label: "环境与工具",
106
- icon: /* @__PURE__ */ e(j, {}),
107
- children: [
108
- {
109
- key: "test-env",
110
- label: "环境管理",
111
- icon: /* @__PURE__ */ e(j, {}),
112
- path: "/test/qa/envs",
113
- desc: "多环境变量管理"
114
- },
115
- {
116
- key: "test-mock",
117
- label: "Mock 平台",
118
- icon: /* @__PURE__ */ e(_e, {}),
119
- path: "/test/mock",
120
- desc: "API Mock 服务管理"
121
- }
122
- ]
123
- },
124
- {
125
- key: "test-eval",
126
- label: "智能测评",
127
- icon: /* @__PURE__ */ e(Q, {}),
128
- children: [
129
- {
130
- key: "test-eval-start",
131
- label: "发起测评",
132
- icon: /* @__PURE__ */ e(L, {}),
133
- path: "/test/evaluation/start",
134
- desc: "Agent 质量测评"
135
- },
136
- {
137
- key: "test-eval-schedule",
138
- label: "自动测评",
139
- icon: /* @__PURE__ */ e(I, {}),
140
- path: "/test/evaluation/schedule",
141
- desc: "定时批量测评"
142
- },
143
- {
144
- key: "test-eval-group",
145
- label: "群聊评测",
146
- icon: /* @__PURE__ */ e(ye, {}),
147
- path: "/test/evaluation/group",
148
- desc: "群聊场景评测"
149
- },
150
- {
151
- key: "test-eval-report",
152
- label: "分析报告",
153
- icon: /* @__PURE__ */ e(Q, {}),
154
- path: "/test/evaluation/report",
155
- desc: "测评结果分析"
156
- }
157
- ]
158
- }
159
- ]
160
- }, se = [
161
- {
162
- title: "认证与权限",
163
- icon: /* @__PURE__ */ e(B, {}),
164
- items: [
165
- {
166
- key: "4a-account",
167
- label: "账号管理",
168
- icon: /* @__PURE__ */ e(pe, {}),
169
- path: "/ctc/4a/account",
170
- desc: "用户账号创建、编辑与状态管理"
171
- },
172
- {
173
- key: "4a-role",
174
- label: "角色管理",
175
- icon: /* @__PURE__ */ e(B, {}),
176
- path: "/ctc/4a/role",
177
- desc: "角色定义与权限分配"
178
- },
179
- {
180
- key: "4a-app",
181
- label: "应用管理",
182
- icon: /* @__PURE__ */ e(ae, {}),
183
- path: "/ctc/4a/application",
184
- desc: "应用注册、资源与权限配置"
185
- },
186
- {
187
- key: "4a-tenant",
188
- label: "租户管理",
189
- icon: /* @__PURE__ */ e(j, {}),
190
- path: "/ctc/4a/tenant",
191
- desc: "多租户管理与配置"
192
- },
193
- {
194
- key: "4a-org",
195
- label: "组织管理",
196
- icon: /* @__PURE__ */ e(F, {}),
197
- path: "/ctc/4a/org",
198
- desc: "组织架构与部门管理"
199
- },
200
- {
201
- key: "4a-permission",
202
- label: "权限管理",
203
- icon: /* @__PURE__ */ e(W, {}),
204
- path: "/ctc/4a/permission",
205
- desc: "细粒度权限控制与审批"
206
- }
207
- ]
208
- },
209
- {
210
- title: "开发与工具",
211
- icon: /* @__PURE__ */ e(z, {}),
212
- items: [
213
- {
214
- key: "script",
215
- label: "脚本中心",
216
- icon: /* @__PURE__ */ e(z, {}),
217
- path: "/script/manage",
218
- desc: "DSL 脚本注册与执行"
219
- },
220
- { key: "lc", label: "研发中心", icon: /* @__PURE__ */ e(z, {}), path: "/lc/apps", desc: "低代码应用开发与管理" },
221
- {
222
- key: "tool-curl",
223
- label: "短链管理",
224
- icon: /* @__PURE__ */ e(ue, {}),
225
- path: "/z-tool/curl",
226
- desc: "短链接创建与管理"
227
- },
228
- {
229
- key: "tool-webide",
230
- label: "WebIDE 容器",
231
- icon: /* @__PURE__ */ e(oe, {}),
232
- path: "/z-tool/webide",
233
- desc: "在线 IDE 代码编辑器"
234
- }
235
- ]
236
- },
237
- {
238
- title: "产品认知",
239
- icon: /* @__PURE__ */ e(X, {}),
240
- items: [
241
- {
242
- key: "product-board",
243
- label: "产品全景",
244
- icon: /* @__PURE__ */ e(L, {}),
245
- path: "/z-product/board",
246
- desc: "业务/产品/研发三线可见的全量认知(术语·模型·链路·设计稿·缺口)"
247
- },
248
- {
249
- key: "product-blueprint",
250
- label: "产品蓝图",
251
- icon: /* @__PURE__ */ e(X, {}),
252
- path: "/z-product/blueprint",
253
- desc: "AI 的唯一入口:后端实时投影的全量认知快照"
254
- },
255
- {
256
- key: "product-glossary",
257
- label: "统一语言",
258
- icon: /* @__PURE__ */ e(me, {}),
259
- path: "/z-product/glossary",
260
- desc: "术语仲裁表:标准词/别名/适用范围/反例"
261
- },
262
- {
263
- key: "product-concept",
264
- label: "领域模型",
265
- icon: /* @__PURE__ */ e(de, {}),
266
- path: "/z-product/concept-model",
267
- desc: "概念与关系画布(四种投影)"
268
- },
269
- {
270
- key: "product-scenarios",
271
- label: "用户链路",
272
- icon: /* @__PURE__ */ e(F, {}),
273
- path: "/z-product/scenarios",
274
- desc: "端到端场景:步骤引用领域概念"
275
- },
276
- {
277
- key: "product-designs",
278
- label: "设计稿 ⇄ 模型",
279
- icon: /* @__PURE__ */ e(he, {}),
280
- path: "/z-product/designs",
281
- desc: "设计与认知的双向收敛回路"
282
- }
283
- ]
284
- },
285
- {
286
- title: "业务流程",
287
- icon: /* @__PURE__ */ e(T, {}),
288
- items: [
289
- {
290
- key: "workflow",
291
- label: "流程中心",
292
- icon: /* @__PURE__ */ e(W, {}),
293
- path: "/workflow/dashboard",
294
- desc: "工作流定义与审批管理"
295
- },
296
- {
297
- key: "task",
298
- label: "任务中心",
299
- icon: /* @__PURE__ */ e(T, {}),
300
- path: "/task/dashboard",
301
- desc: "任务创建、分配与跟踪"
302
- },
303
- {
304
- key: "schedule",
305
- label: "调度中心",
306
- icon: /* @__PURE__ */ e(I, {}),
307
- path: "/schedule/dashboard",
308
- desc: "定时任务调度与管理"
309
- },
310
- {
311
- key: "subscribe",
312
- label: "订阅中心",
313
- icon: /* @__PURE__ */ e(be, {}),
314
- path: "/subscribe/list",
315
- desc: "第三方数据订阅与拉取"
316
- },
317
- {
318
- key: "project",
319
- label: "项目中心",
320
- icon: /* @__PURE__ */ e(ce, {}),
321
- path: "/project/list",
322
- desc: "项目创建与进度管理"
323
- }
324
- ]
325
- }
326
- ], $ = [...se, Be];
327
- function Fe({
328
- activePathOverride: n,
329
- menuOnly: t = !1,
330
- visibleGroups: o
331
- } = {}) {
332
- const p = ne(), { pathname: b } = E(), r = v(
333
- () => o ? $.filter((c) => o.includes(c.title)) : se,
334
- [o]
335
- ), [g, _] = M(
336
- new Set($.map((c) => c.title))
337
- ), [l, h] = M(
338
- () => new Set(
339
- $.flatMap((c) => c.items).filter((c) => c.children).map((c) => c.key)
340
- )
341
- ), m = v(() => {
342
- var k;
343
- const c = n ?? b;
344
- return ((k = r.flatMap((i) => q(i.items)).find(
345
- (i) => i.path === c
346
- )) == null ? void 0 : k.key) ?? null;
347
- }, [n, b, r]), N = (c) => {
348
- _((k) => {
349
- const i = new Set(k);
350
- return i.has(c) ? i.delete(c) : i.add(c), i;
351
- });
352
- }, P = (c) => {
353
- h((k) => {
354
- const i = new Set(k);
355
- return i.has(c) ? i.delete(c) : i.add(c), i;
356
- });
357
- }, C = (c) => {
358
- c.path && p(c.path);
359
- }, S = r.flatMap((c) => q(c.items)).find(
360
- (c) => c.key === m
361
- );
362
- return /* @__PURE__ */ u("div", { className: s.container, children: [
363
- /* @__PURE__ */ e("aside", { className: s.sidebar, children: /* @__PURE__ */ e("nav", { className: s.menuList, children: r.map((c) => {
364
- const k = g.has(c.title);
365
- return /* @__PURE__ */ u("div", { className: s.menuGroup, children: [
366
- /* @__PURE__ */ u(
367
- "div",
368
- {
369
- className: s.menuGroupHeader,
370
- onClick: () => N(c.title),
371
- children: [
372
- /* @__PURE__ */ e("span", { className: s.menuGroupIcon, children: c.icon }),
373
- /* @__PURE__ */ e("span", { className: s.menuGroupLabel, children: c.title }),
374
- /* @__PURE__ */ e("span", { className: s.menuGroupArrow, children: k ? /* @__PURE__ */ e(K, {}) : /* @__PURE__ */ e(U, {}) })
375
- ]
376
- }
377
- ),
378
- k && /* @__PURE__ */ e("ul", { className: s.menuSubList, children: c.items.map(
379
- (i) => i.children ? (
380
- /* 子菜单分组头 — 可折叠; active 项落在其中时高亮 */
381
- /* @__PURE__ */ u("li", { className: s.menuSubGroup, children: [
382
- /* @__PURE__ */ u(
383
- "div",
384
- {
385
- className: `${s.menuSubGroupHeader} ${i.children.some((f) => f.key === m) ? s.menuSubGroupHeaderActive : ""}`,
386
- onClick: () => P(i.key),
387
- children: [
388
- /* @__PURE__ */ e("span", { className: s.menuGroupIcon, children: i.icon }),
389
- /* @__PURE__ */ e("span", { className: s.menuSubGroupLabel, children: i.label }),
390
- /* @__PURE__ */ e("span", { className: s.menuGroupArrow, children: l.has(i.key) ? /* @__PURE__ */ e(K, {}) : /* @__PURE__ */ e(U, {}) })
391
- ]
392
- }
393
- ),
394
- l.has(i.key) && /* @__PURE__ */ e("ul", { className: s.menuSubList, children: i.children.map((f) => /* @__PURE__ */ u(
395
- "li",
396
- {
397
- className: `${s.menuSubItem} ${m === f.key ? s.menuSubItemActive : ""}`,
398
- onClick: () => C(f),
399
- children: [
400
- /* @__PURE__ */ e(
401
- "span",
402
- {
403
- className: s.menuSubItemIcon,
404
- children: f.icon
405
- }
406
- ),
407
- /* @__PURE__ */ e("span", { children: f.label })
408
- ]
409
- },
410
- f.key
411
- )) })
412
- ] }, i.key)
413
- ) : /* @__PURE__ */ u(
414
- "li",
415
- {
416
- className: `${s.menuSubItem} ${m === i.key ? s.menuSubItemActive : ""}`,
417
- onClick: () => C(i),
418
- children: [
419
- /* @__PURE__ */ e("span", { className: s.menuSubItemIcon, children: i.icon }),
420
- /* @__PURE__ */ e("span", { children: i.label })
421
- ]
422
- },
423
- i.key
424
- )
425
- ) })
426
- ] }, c.title);
427
- }) }) }),
428
- t ? null : /* @__PURE__ */ e("main", { className: s.main, children: S ? /* @__PURE__ */ u("div", { className: s.detailPanel, children: [
429
- /* @__PURE__ */ u("div", { className: s.detailHeader, children: [
430
- /* @__PURE__ */ e("div", { className: s.detailIcon, children: S.icon }),
431
- /* @__PURE__ */ u("div", { children: [
432
- /* @__PURE__ */ e("h2", { className: s.detailTitle, children: S.label }),
433
- /* @__PURE__ */ e("p", { className: s.detailDesc, children: S.desc })
434
- ] })
435
- ] }),
436
- /* @__PURE__ */ e("div", { className: s.detailAction, children: /* @__PURE__ */ u(
437
- "button",
438
- {
439
- className: s.goBtn,
440
- onClick: () => p(S.path),
441
- children: [
442
- "进入 ",
443
- S.label
444
- ]
445
- }
446
- ) })
447
- ] }) : /* @__PURE__ */ u("div", { className: s.emptyState, children: [
448
- /* @__PURE__ */ e(ae, { style: { fontSize: 48, color: "#ccc" } }),
449
- /* @__PURE__ */ e("p", { children: "点击左侧菜单进入对应功能模块" })
450
- ] }) })
451
- ] });
452
- }
453
- const We = 30, Xe = ["/api/", "/kapi/", "/z-team/", "/auth/", "/sso/"], G = "__zteam_api_error_monitor__", O = globalThis;
454
- function x(n) {
455
- return n.startsWith(location.origin) && (n = n.slice(location.origin.length)), Xe.some((t) => n.includes(t));
456
- }
457
- function R(n) {
458
- const t = O[G];
459
- if (!t) return;
460
- t.failures.push(n), t.failures.length > We && t.failures.shift();
461
- const o = [...t.failures];
462
- t.listeners.forEach((p) => p(o));
463
- }
464
- function Qe() {
465
- var n;
466
- return ((n = O[G]) == null ? void 0 : n.failures) ?? [];
467
- }
468
- function Ye(n) {
469
- const t = O[G];
470
- return t ? (t.listeners.add(n), n(t.failures), () => t.listeners.delete(n)) : () => {
471
- };
472
- }
473
- function Y(n) {
474
- return n >= 400 && n !== 401;
475
- }
476
- function Ze() {
477
- if (O[G]) return;
478
- const n = { failures: [], listeners: /* @__PURE__ */ new Set() };
479
- O[G] = n;
480
- const t = window.fetch.bind(window);
481
- window.fetch = async (...b) => {
482
- var l;
483
- const r = b[0], g = typeof r == "string" ? r : r instanceof URL ? r.href : r.url, _ = (((l = b[1]) == null ? void 0 : l.method) ?? (typeof r == "object" && r && "method" in r ? r.method : void 0) ?? "GET").toUpperCase();
484
- try {
485
- const h = await t(...b);
486
- return Y(h.status) && x(g) && R({ method: _, url: g, status: h.status, route: location.pathname, at: Date.now() }), h;
487
- } catch (h) {
488
- throw x(g) && R({ method: _, url: g, status: 0, route: location.pathname, at: Date.now() }), h;
489
- }
490
- };
491
- const o = XMLHttpRequest.prototype.open, p = XMLHttpRequest.prototype.send;
492
- XMLHttpRequest.prototype.open = function(b, r, ...g) {
493
- const _ = o.call(this, b, r, ...g);
494
- return this.__url = String(r), this.__method = String(b || "GET").toUpperCase(), _;
495
- }, XMLHttpRequest.prototype.send = function(...b) {
496
- const r = p.apply(this, b), g = this, _ = g.__url;
497
- if (_ && x(_)) {
498
- const l = g.__method ?? "GET";
499
- this.addEventListener("loadend", () => {
500
- Y(this.status) && R({ method: l, url: _, status: this.status, route: location.pathname, at: Date.now() });
501
- });
502
- }
503
- return r;
504
- };
505
- }
506
- const Ve = "_banner_2v7mc_1", Je = "_dot_2v7mc_18", et = "_text_2v7mc_26", tt = "_retry_2v7mc_31", nt = "_dismiss_2v7mc_44", at = "_details_2v7mc_57", ot = "_method_2v7mc_85", ct = "_status_2v7mc_86", st = "_statusNet_2v7mc_87", it = "_url_2v7mc_88", w = {
507
- banner: Ve,
508
- dot: Je,
509
- text: et,
510
- retry: tt,
511
- dismiss: nt,
512
- details: at,
513
- method: ot,
514
- status: ct,
515
- statusNet: st,
516
- url: it
517
- }, rt = () => {
518
- const { pathname: n } = E(), [t, o] = M(Qe()), [p, b] = M(0);
519
- H(() => Ye(o), []), H(() => {
520
- b(0);
521
- }, [n]);
522
- const r = v(
523
- () => t.filter((l) => l.route === n && l.at >= p),
524
- [t, n, p]
525
- ), g = v(() => {
526
- const l = /* @__PURE__ */ new Map();
527
- return r.forEach((h) => {
528
- const m = l.get(h.status) ?? { status: h.status, count: 0, urls: [] };
529
- m.count += 1, m.urls.includes(h.url) || m.urls.push(h.url), l.set(h.status, m);
530
- }), [...l.values()].sort((h, m) => h.status - m.status);
531
- }, [r]);
532
- if (r.length === 0) return null;
533
- const _ = g.map((l) => `${l.status === 0 ? "网络错误" : l.status} ×${l.count}`).join(" · ");
534
- return /* @__PURE__ */ u("div", { className: w.banner, role: "alert", "data-testid": "page-api-error-notice", children: [
535
- /* @__PURE__ */ e("span", { className: w.dot }),
536
- /* @__PURE__ */ u("span", { className: w.text, children: [
537
- "本页有 ",
538
- r.length,
539
- " 个接口失败(",
540
- _,
541
- "),页面可能不完整。"
542
- ] }),
543
- /* @__PURE__ */ e("button", { type: "button", className: w.retry, onClick: () => location.reload(), children: "重试" }),
544
- /* @__PURE__ */ u("details", { className: w.details, children: [
545
- /* @__PURE__ */ e("summary", { children: "失败明细" }),
546
- /* @__PURE__ */ e("ul", { children: r.map((l, h) => /* @__PURE__ */ u("li", { children: [
547
- /* @__PURE__ */ e("span", { className: w.method, children: l.method }),
548
- /* @__PURE__ */ e("span", { className: l.status === 0 ? w.statusNet : w.status, children: l.status === 0 ? "网络" : l.status }),
549
- /* @__PURE__ */ e("span", { className: w.url, children: l.url })
550
- ] }, `${l.at}-${h}`)) })
551
- ] }),
552
- /* @__PURE__ */ e(
553
- "button",
554
- {
555
- type: "button",
556
- className: w.dismiss,
557
- title: "本页浏览期间不再显示",
558
- onClick: () => b(Date.now() + 1),
559
- children: "忽略"
560
- }
561
- )
562
- ] });
563
- }, lt = "_wrap_2gcw5_1", pt = "_card_2gcw5_9", ut = "_badge_2gcw5_19", mt = "_title_2gcw5_41", dt = "_desc_2gcw5_48", ht = "_actions_2gcw5_55", bt = "_primary_2gcw5_63", gt = "_secondary_2gcw5_75", _t = "_details_2gcw5_90", yt = "_pre_2gcw5_102", kt = "_copy_2gcw5_117", ft = "_compact_2gcw5_127", y = {
564
- wrap: lt,
565
- card: pt,
566
- badge: ut,
567
- title: mt,
568
- desc: dt,
569
- actions: ht,
570
- primary: bt,
571
- secondary: gt,
572
- details: _t,
573
- pre: yt,
574
- copy: kt,
575
- compact: ft
576
- };
577
- function ie(n) {
578
- const t = n, o = `${(t == null ? void 0 : t.name) ?? ""} ${(t == null ? void 0 : t.message) ?? ""} ${typeof n == "string" ? n : ""}`;
579
- return /ChunkLoadError|Loading chunk|Failed to fetch dynamically imported module|Importing a module script failed|error loading dynamically imported module/i.test(o);
580
- }
581
- function wt(n) {
582
- const { status: t, error: o } = n;
583
- return t === 401 ? {
584
- kind: "unauthorized",
585
- status: t,
586
- badge: "401",
587
- title: "登录已失效",
588
- description: "当前会话已过期或未建立,请重新登录后继续。重登后会回到这个页面。"
589
- } : t === 403 ? {
590
- kind: "forbidden",
591
- status: t,
592
- badge: "403",
593
- title: "没有访问权限",
594
- description: "当前账号无权访问该功能。如需开通,请联系管理员分配权限。"
595
- } : t === 404 ? {
596
- kind: "not-found",
597
- status: t,
598
- badge: "404",
599
- title: "功能接口未就绪",
600
- description: "这个页面要用的后端接口还没有部署,或前后端路径对不上。可以重试;若持续如此,请把技术详情发给运维确认版本。"
601
- } : t && t >= 500 ? {
602
- kind: "server",
603
- status: t,
604
- badge: String(t),
605
- title: "服务暂时不可用",
606
- description: "后端返回了错误。稍后重试;如果反复出现,请把技术详情发给运维。"
607
- } : t === 0 ? {
608
- kind: "network",
609
- status: t,
610
- badge: "!",
611
- title: "网络不可用",
612
- description: "请求没有到达后端。请检查网络,或确认本地后端服务是否已启动。"
613
- } : ie(o) ? {
614
- kind: "chunk",
615
- badge: "⟳",
616
- title: "页面资源加载失败",
617
- description: "可能刚发布了新版本,旧页面资源已被替换。刷新页面即可拿到新资源。"
618
- } : o != null ? {
619
- kind: "render",
620
- badge: "!",
621
- title: "页面渲染出错",
622
- description: "这个页面遇到了未预期的错误,已被拦截,不影响其他页面。可以重试;仍然失败请把技术详情发给研发。"
623
- } : {
624
- kind: "unknown",
625
- badge: "!",
626
- title: "页面加载失败",
627
- description: "发生了未知错误。请重试,或返回首页换个入口再试。"
628
- };
629
- }
630
- function St(n, t) {
631
- const o = [];
632
- if (o.push(`页面:${typeof location < "u" ? location.pathname + location.search : "-"}`), o.push(`时间:${(/* @__PURE__ */ new Date()).toISOString()}`), n != null && o.push(`HTTP:${n}`), t != null) {
633
- const p = t;
634
- p != null && p.name && o.push(`错误名:${String(p.name)}`), p != null && p.message && o.push(`消息:${String(p.message)}`), p != null && p.stack ? o.push(`堆栈:
635
- ${String(p.stack)}`) : typeof t != "object" && o.push(`原文:${String(t)}`);
636
- }
637
- return o.join(`
638
- `).slice(0, 4e3);
639
- }
640
- const vt = ({
641
- status: n,
642
- error: t,
643
- title: o,
644
- description: p,
645
- retry: b,
646
- retryText: r,
647
- extra: g,
648
- showHome: _ = !0,
649
- compact: l = !1,
650
- className: h
651
- }) => {
652
- const m = v(() => wt({ status: n, error: t }), [n, t]), [N, P] = M(!1), C = v(() => St(n, t), [n, t]);
653
- H(() => {
654
- if (!N) return;
655
- const f = setTimeout(() => P(!1), 2e3);
656
- return () => clearTimeout(f);
657
- }, [N]);
658
- const S = async () => {
659
- try {
660
- await navigator.clipboard.writeText(C), P(!0);
661
- } catch {
662
- P(!1);
663
- }
664
- }, c = () => {
665
- const f = encodeURIComponent(location.pathname + location.search);
666
- location.assign(`/login?redirect=${f}`);
667
- }, k = () => b ? /* @__PURE__ */ e("button", { type: "button", className: y.primary, onClick: b, children: r || "重试" }) : m.kind === "chunk" ? /* @__PURE__ */ e("button", { type: "button", className: y.primary, onClick: () => location.reload(), children: "刷新页面" }) : m.kind === "unauthorized" ? /* @__PURE__ */ e("button", { type: "button", className: y.primary, onClick: c, children: "重新登录" }) : null, i = t != null || n != null;
668
- return /* @__PURE__ */ e(
669
- "div",
670
- {
671
- className: [y.wrap, l ? y.compact : "", h || ""].filter(Boolean).join(" "),
672
- role: "alert",
673
- "data-error-kind": m.kind,
674
- children: /* @__PURE__ */ u("div", { className: y.card, children: [
675
- /* @__PURE__ */ e("div", { className: y.badge, "data-kind": m.kind, children: m.badge }),
676
- /* @__PURE__ */ e("h2", { className: y.title, children: o || m.title }),
677
- /* @__PURE__ */ e("p", { className: y.desc, children: p || m.description }),
678
- /* @__PURE__ */ u("div", { className: y.actions, children: [
679
- k(),
680
- g,
681
- _ && m.kind !== "unauthorized" && /* @__PURE__ */ e("a", { className: y.secondary, href: "/", children: "返回首页" })
682
- ] }),
683
- i && /* @__PURE__ */ u("details", { className: y.details, children: [
684
- /* @__PURE__ */ e("summary", { children: "技术详情" }),
685
- /* @__PURE__ */ e("pre", { className: y.pre, children: C }),
686
- /* @__PURE__ */ e("button", { type: "button", className: y.copy, onClick: S, children: N ? "已复制" : "复制详情" })
687
- ] })
688
- ] })
689
- }
690
- );
691
- };
692
- class At extends re.Component {
693
- constructor() {
694
- super(...arguments), this.state = { error: null, resetKey: this.props.resetKey };
695
- }
696
- static getDerivedStateFromError(t) {
697
- return { error: t };
698
- }
699
- static getDerivedStateFromProps(t, o) {
700
- return o.error && t.resetKey !== o.resetKey ? { error: null, resetKey: t.resetKey } : t.resetKey !== o.resetKey ? { resetKey: t.resetKey } : null;
701
- }
702
- render() {
703
- const { error: t } = this.state;
704
- if (t) {
705
- const o = ie(t);
706
- return /* @__PURE__ */ e(
707
- vt,
708
- {
709
- error: t,
710
- retry: () => this.setState({ error: null }),
711
- retryText: o ? "重试加载" : "重试渲染"
712
- }
713
- );
714
- }
715
- return this.props.children;
716
- }
717
- }
718
- const Dt = "_shell_10jrt_6", Nt = "_main_10jrt_21", Pt = "_empty_10jrt_31", Ct = "_emptyIcon_10jrt_41", It = "_emptyText_10jrt_46", D = {
719
- shell: Dt,
720
- main: Nt,
721
- empty: Pt,
722
- emptyIcon: Ct,
723
- emptyText: It
724
- };
725
- Ze();
726
- const a = (n, t) => A(() => n().then((o) => ({ default: o[t] }))), Mt = a(() => import("@yuku123/z-ctc-component"), "AccountManagement"), Gt = a(() => import("@yuku123/z-ctc-component"), "ApplicationManagement"), Ot = a(() => import("@yuku123/z-ctc-component"), "AuditPage"), Lt = a(() => import("@yuku123/z-ctc-component"), "CtcOverview"), Tt = a(() => import("@yuku123/z-ctc-component"), "DictPage"), Et = a(() => import("@yuku123/z-ctc-component"), "OrgPage"), zt = a(() => import("@yuku123/z-ctc-component"), "PermissionManagement"), $t = a(() => import("@yuku123/z-ctc-component"), "RoleManagement"), Z = a(() => import("@yuku123/z-ctc-component"), "SurlManagement"), xt = a(() => import("@yuku123/z-ctc-component"), "TenantManagement"), Rt = a(() => import("@yuku123/z-agent-component"), "AgentAppList"), Ht = a(() => import("@yuku123/z-agent-component"), "AgentDashboard"), jt = a(() => import("@yuku123/z-agent-component"), "AkManage"), qt = a(() => import("@yuku123/z-agent-component"), "BucketList"), Kt = a(() => import("@yuku123/z-agent-component"), "LlmManage"), Ut = a(() => import("@yuku123/z-agent-component"), "McpPage"), Bt = a(() => import("@yuku123/z-agent-component"), "ObjectBrowser"), Ft = a(() => import("@yuku123/z-agent-component"), "ScriptCenterPage"), Wt = a(() => import("@yuku123/z-agent-component"), "ScriptProductizationPage"), Xt = a(() => import("@yuku123/z-agent-component"), "SkillMarket"), Qt = a(() => import("./index-Bpn6x1So.js"), "AgentTeamIM"), V = a(() => import("./index-Bpn6x1So.js"), "DebugPlayground"), Yt = a(() => import("./index-Bpn6x1So.js"), "Overview"), J = a(() => import("./index-Bpn6x1So.js"), "Webide"), Zt = A(() => import("./OnboardingPage-C7C4PEjn.js")), Vt = A(() => import("./InvitationManagementPage-Gkqisq4C.js")), Jt = a(() => import("@yuku123/z-config-component"), "ConfigApp"), en = a(() => import("@yuku123/z-task-component"), "TaskApp"), tn = a(() => import("@yuku123/z-wf-component"), "WorkflowApp"), nn = a(() => import("@yuku123/z-schedule-component"), "ScheduleApp"), an = a(() => import("@yuku123/z-mist-component"), "MistApp"), on = a(() => import("@yuku123/z-meta-component"), "MetaApp"), cn = a(() => import("@yuku123/z-msg-component"), "MsgApp"), sn = a(() => import("@yuku123/z-rpc-component"), "RpcApp"), rn = A(() => import("./ComponentDoc-Bx6NAJlK.js").then((n) => n.m)), ln = A(() => import("./ComponentDoc-Bx6NAJlK.js").then((n) => n.n)), pn = a(() => import("@yuku123/z-config-component"), "ComponentDocPage"), un = a(() => import("@yuku123/z-task-component"), "ComponentDocPage"), mn = a(() => import("@yuku123/z-wf-component"), "ComponentDocPage"), dn = a(() => import("@yuku123/z-schedule-component"), "ComponentDocPage"), hn = a(() => import("@yuku123/z-mist-component"), "ComponentDocPage"), bn = a(() => import("@yuku123/z-meta-component"), "ComponentDocPage"), gn = a(() => import("@yuku123/z-msg-component"), "ComponentDocPage"), _n = a(() => import("@yuku123/z-rpc-component"), "ComponentDocPage"), yn = a(() => import("@yuku123/z-kb-component"), "ComponentDocPage"), kn = a(() => import("@yuku123/z-product-component"), "ComponentDocPage"), fn = a(() => import("@yuku123/z-oss-component"), "ComponentDocPage"), wn = a(() => import("@yuku123/z-vector-component"), "ComponentDocPage"), Sn = a(() => import("@yuku123/z-graph-component"), "ComponentDocPage"), vn = a(() => import("@yuku123/z-gw-component"), "ComponentDocPage"), An = a(() => import("@yuku123/z-cache-component"), "ComponentDocPage"), Dn = a(() => import("@yuku123/z-mq-component"), "ComponentDocPage"), Nn = a(() => import("@yuku123/z-ctc-component"), "ComponentDocPage"), Pn = a(() => import("@yuku123/z-agent-component"), "ComponentDocPage"), Cn = a(() => import("@yuku123/z-lc-component"), "ComponentDocPage"), In = a(() => import("@yuku123/z-qa-component"), "ComponentDocPage"), Mn = A(() => import("./ComponentDoc-Bx6NAJlK.js").then((n) => n.l)), ee = A(() => import("@yuku123/z-qa-component"));
727
- function Gn() {
728
- return /* @__PURE__ */ u("div", { className: D.empty, children: [
729
- /* @__PURE__ */ e("div", { className: D.emptyIcon, children: "📋" }),
730
- /* @__PURE__ */ e("div", { className: D.emptyText, children: "请从左侧菜单选择模块" })
731
- ] });
732
- }
733
- function On() {
734
- const { pathname: n } = E();
735
- return /* @__PURE__ */ e(d, { to: n.replace(/^\/product/, "/z-product"), replace: !0 });
736
- }
737
- const te = [
738
- // ─── 顶层 / 概览 ───
739
- { path: "/overview", element: /* @__PURE__ */ e(Yt, {}) },
740
- // ─── 4A 中心 (/ctc/*) ───
741
- { path: "/ctc", element: /* @__PURE__ */ e(d, { to: "/ctc/4a/account", replace: !0 }) },
742
- { path: "/ctc/4a/account", element: /* @__PURE__ */ e(Mt, {}) },
743
- { path: "/ctc/4a/role", element: /* @__PURE__ */ e($t, {}) },
744
- { path: "/ctc/4a/application", element: /* @__PURE__ */ e(Gt, {}) },
745
- { path: "/ctc/4a/tenant", element: /* @__PURE__ */ e(xt, {}) },
746
- { path: "/ctc/4a/org", element: /* @__PURE__ */ e(Et, {}) },
747
- { path: "/ctc/4a/permission", element: /* @__PURE__ */ e(zt, {}) },
748
- { path: "/ctc/4a/surl", element: /* @__PURE__ */ e(Z, {}) },
749
- { path: "/ctc/dict", element: /* @__PURE__ */ e(Tt, {}) },
750
- { path: "/ctc/overview", element: /* @__PURE__ */ e(Lt, {}) },
751
- { path: "/ctc/audit", element: /* @__PURE__ */ e(Ot, {}) },
752
- { path: "/ctc/webide", element: /* @__PURE__ */ e(J, {}) },
753
- { path: "/ctc/agent-team", element: /* @__PURE__ */ e(Qt, {}) },
754
- { path: "/ctc/invitation", element: /* @__PURE__ */ e(Vt, {}) },
755
- { path: "/onboarding", element: /* @__PURE__ */ e(Zt, {}) },
756
- // ─── 智能中心 (/ai/*) ───
757
- { path: "/ai", element: /* @__PURE__ */ e(d, { to: "/ai/agent/app", replace: !0 }) },
758
- { path: "/ai/agent", element: /* @__PURE__ */ e(d, { to: "/ai/agent/app", replace: !0 }) },
759
- { path: "/ai/agent/app", element: /* @__PURE__ */ e(Rt, {}) },
760
- { path: "/ai/llm", element: /* @__PURE__ */ e(Kt, {}) },
761
- { path: "/ai/llm/provider", element: /* @__PURE__ */ e(d, { to: "/ai/llm", replace: !0 }) },
762
- { path: "/ai/llm/model", element: /* @__PURE__ */ e(d, { to: "/ai/llm", replace: !0 }) },
763
- { path: "/ai/usage", element: /* @__PURE__ */ e(d, { to: "/ai/llm", replace: !0 }) },
764
- { path: "/ai/ak", element: /* @__PURE__ */ e(jt, {}) },
765
- { path: "/ai/mcp", element: /* @__PURE__ */ e(Ut, {}) },
766
- { path: "/ai/skill", element: /* @__PURE__ */ e(Xt, {}) },
767
- { path: "/ai/oss", element: /* @__PURE__ */ e(d, { to: "/ai/oss/bucket", replace: !0 }) },
768
- { path: "/ai/oss/bucket", element: /* @__PURE__ */ e(qt, {}) },
769
- { path: "/ai/oss/bucket/:bucketName", element: /* @__PURE__ */ e(Bt, {}) },
770
- { path: "/ai/trace", element: /* @__PURE__ */ e(V, {}) },
771
- { path: "/ai/trace/debug", element: /* @__PURE__ */ e(V, {}) },
772
- { path: "/ai/dashboard", element: /* @__PURE__ */ e(Ht, {}) },
773
- // 多 Agent 实例 / 模板市场已下线 (2026-10-22): 模板并入 Agent 应用页,
774
- // 旧深链重定向, 别再回到独立菜单
775
- { path: "/ai/template", element: /* @__PURE__ */ e(d, { to: "/ai/agent/app", replace: !0 }) },
776
- { path: "/ai/agent-instance", element: /* @__PURE__ */ e(d, { to: "/ai/agent/app", replace: !0 }) },
777
- { path: "/ai/agent/instances", element: /* @__PURE__ */ e(d, { to: "/ai/agent/app", replace: !0 }) },
778
- // ─── 配置中心 ───
779
- { path: "/config/*", element: /* @__PURE__ */ e(Jt, {}) },
780
- // ─── 任务中心 ───
781
- { path: "/task/*", element: /* @__PURE__ */ e(en, {}) },
782
- // ─── 流程中心 ───
783
- { path: "/workflow/*", element: /* @__PURE__ */ e(tn, {}) },
784
- // ─── 调度中心 ───
785
- { path: "/schedule/*", element: /* @__PURE__ */ e(nn, {}) },
786
- // ─── 密钥中心 ───
787
- { path: "/mist/*", element: /* @__PURE__ */ e(an, {}) },
788
- // ─── 中间件孵化页 (大需求 004) — 主入口在运维工作台 (?mode=ops),此处兜住直链/刷新 ───
789
- { path: "/meta", element: /* @__PURE__ */ e(d, { to: "/meta/app", replace: !0 }) },
790
- { path: "/meta/*", element: /* @__PURE__ */ e(on, {}) },
791
- { path: "/msg", element: /* @__PURE__ */ e(d, { to: "/msg/inbox", replace: !0 }) },
792
- { path: "/msg/*", element: /* @__PURE__ */ e(cn, {}) },
793
- { path: "/rpc", element: /* @__PURE__ */ e(d, { to: "/rpc/service", replace: !0 }) },
794
- { path: "/rpc/*", element: /* @__PURE__ */ e(sn, {}) },
795
- // ─── 订阅中心 ───
796
- { path: "/subscribe/*", element: /* @__PURE__ */ e(rn, {}) },
797
- // ─── 产品工作台 z-product (2026-10-21 接入) ───
798
- // /z-product/* 由 z-product 组件自己的 ProductApp 渲染(内部按 manifest 的绝对路径手工匹配,
799
- // 不用嵌套 <Routes>:这里没有 Route 父上下文,绝对路径不会被再拼一次父前缀)。
800
- // §14:z-product 的菜单 key / 路由 path 一律带产品名前缀(/z-product/xxx),
801
- // 避免 /board、/products 这类短路径跟宿主自己的同名路由撞车。
802
- { path: "/z-product", element: /* @__PURE__ */ e(d, { to: "/z-product/board", replace: !0 }) },
803
- { path: "/z-product/*", element: /* @__PURE__ */ e(ke, { basePath: "/z-product" }) },
804
- // 旧前缀 /product/* → 新前缀 /z-product/*:§14 前缀化之前的老 URL 仍可达(书签 / 旧分享链接)。
805
- { path: "/product", element: /* @__PURE__ */ e(d, { to: "/z-product/board", replace: !0 }) },
806
- { path: "/product/*", element: /* @__PURE__ */ e(On, {}) },
807
- // ─── 项目中心 ───
808
- { path: "/project/*", element: /* @__PURE__ */ e(ln, {}) },
809
- // ─── 脚本中心 (/script/*) — FEATURE052 ───
810
- { path: "/script", element: /* @__PURE__ */ e(d, { to: "/script/manage", replace: !0 }) },
811
- { path: "/script/manage", element: /* @__PURE__ */ e(Ft, {}) },
812
- { path: "/script/productization", element: /* @__PURE__ */ e(Wt, {}) },
813
- // ─── 工具中心 (/z-tool/*) — FEATURE054 ───
814
- { path: "/z-tool", element: /* @__PURE__ */ e(d, { to: "/z-tool/curl", replace: !0 }) },
815
- { path: "/z-tool/curl", element: /* @__PURE__ */ e(Z, {}) },
816
- { path: "/z-tool/webide", element: /* @__PURE__ */ e(J, {}) },
817
- // ─── 测试中心 (/test/*) — FEATURE061 ───
818
- { path: "/test", element: /* @__PURE__ */ e(d, { to: "/test/qa/dashboard", replace: !0 }) },
819
- { path: "/test/mock", element: /* @__PURE__ */ e(Mn, {}) },
820
- // QAApp 内部用 <Routes> 相对路由, 通配匹配后由 QAApp 自己接管子路径
821
- { path: "/test/qa", element: /* @__PURE__ */ e(ee, {}) },
822
- { path: "/test/qa/*", element: /* @__PURE__ */ e(ee, {}) },
823
- // ─── 低代码 ───
824
- // /lc/* 刻意不在这里注册。它早就迁到 src/lc/(TS 重写), 挂载点是
825
- // main.jsx 的 <Route path="/lc/*" element={<ZTeamApp forcedMode="dev"/>}/>,
826
- // 由 DevWorkbench 把 pathname 原样交给 @/lc 自己的嵌套 <Routes>。
827
- // 本表早先还挂着一行 {path:'/lc/*', element:<LcIndex/>}, 它的 import 写的是
828
- // '@/pages/lc' —— 该别名解析到 src/zteam/pages/lc(不存在), 真身在 src/lc,
829
- // 于是这行既解析不了、又因 main.jsx 先消费了 /lc/* 而永远不可达。
830
- // /form/:entity 与 /form/_model 是 z-lc Phase 1 手写原型的两条 URL
831
- // (LowCodeModel 实体字段编辑器 / LowCodeRuntime 通用 CRUD), 现已由
832
- // @yuku123/z-lc-component 承接 —— 它是同一套 /api/lc 后端的完整前端客户,
833
- // 能力严格更强(designer 模型编辑、workspace 七种视图 CRUD、admin 全套、
834
- // db-import、AI 建模), 挂在 main.jsx 的 <Route path="/lc/*"> 下经
835
- // DevWorkbench 的 <LcApp/> 渲染。
836
- //
837
- // 不做逐条映射: z-lc 的工作区路由是 /lc/{appCode}/{entityCode}/{viewType},
838
- // 比 /form/{entityCode} 多一层 appCode, 旧 URL 里没有这个信息, 无法还原。
839
- // 故统一重定向到应用列表, 由用户自行进入对应应用。
840
- { path: "/form/:entity", element: /* @__PURE__ */ e(d, { to: "/lc/apps", replace: !0 }) },
841
- // ─── 各域组件文档(lead 008 §7)───
842
- // 放在本表末尾即可:matchSystemPath 是「先全表精确匹配、再全表通配匹配」,
843
- // 所以 /config/docs 这类精确路径**不会**被上面的 /config/* 吃掉。
844
- //
845
- // 为什么路径用宿主前缀(/config/docs)而不是各域 manifest 里的 /z-config/docs:
846
- // manifest 的 routes 是给**独立壳**用的(suit 里 <Route path={r.path}> 直接铺);
847
- // 工作台把各域挂在宿主前缀下(/config/* ⇒ ConfigApp 内部相对路由),
848
- // 两套路径对不上 ⇒ manifest 的 routes 在工作台里不生效,文档页会 404。
849
- // 这里统一按**宿主前缀**挂,各域自己的 manifest 路径仍然保留给独立壳用。
850
- //
851
- // §14 铁律(菜单 key 必须带产品名前缀)针对的是**同一宿主内多套件共存**的撞车问题;
852
- // 这里每个域的宿主前缀本身就已经是产品名(/config / /task / /workflow …),
853
- // 且各域之间前缀互不相同 ⇒ 不存在撞车,不需要再加 z- 前缀。
854
- { path: "/config/docs", element: /* @__PURE__ */ e(pn, {}) },
855
- { path: "/task/docs", element: /* @__PURE__ */ e(un, {}) },
856
- { path: "/workflow/docs", element: /* @__PURE__ */ e(mn, {}) },
857
- { path: "/schedule/docs", element: /* @__PURE__ */ e(dn, {}) },
858
- { path: "/mist/docs", element: /* @__PURE__ */ e(hn, {}) },
859
- { path: "/meta/docs", element: /* @__PURE__ */ e(bn, {}) },
860
- { path: "/msg/docs", element: /* @__PURE__ */ e(gn, {}) },
861
- { path: "/rpc/docs", element: /* @__PURE__ */ e(_n, {}) },
862
- { path: "/kb/docs", element: /* @__PURE__ */ e(yn, {}) },
863
- { path: "/z-product/docs", element: /* @__PURE__ */ e(kn, {}) },
864
- { path: "/oss/docs", element: /* @__PURE__ */ e(fn, {}) },
865
- { path: "/vector/docs", element: /* @__PURE__ */ e(wn, {}) },
866
- { path: "/graph/docs", element: /* @__PURE__ */ e(Sn, {}) },
867
- { path: "/gw/docs", element: /* @__PURE__ */ e(vn, {}) },
868
- { path: "/cache/docs", element: /* @__PURE__ */ e(An, {}) },
869
- { path: "/mq/docs", element: /* @__PURE__ */ e(Dn, {}) },
870
- { path: "/ctc/docs", element: /* @__PURE__ */ e(Nn, {}) },
871
- { path: "/ai/docs", element: /* @__PURE__ */ e(Pn, {}) },
872
- { path: "/lc/docs", element: /* @__PURE__ */ e(Cn, {}) },
873
- { path: "/test/qa/docs", element: /* @__PURE__ */ e(In, {}) }
874
- ];
875
- function Ln(n) {
876
- for (const t of te)
877
- if (t.path === n) return t.element;
878
- for (const t of te)
879
- if (Tn(t.path, n)) return t.element;
880
- return /* @__PURE__ */ e(Gn, {});
881
- }
882
- function Tn(n, t) {
883
- if (!n.includes("*") && !n.includes(":")) return !1;
884
- const o = "^" + n.replace(/[.+?^${}()|[\]\\]/g, "\\$&").replace(/\*/g, ".*").replace(/:([a-zA-Z_][a-zA-Z0-9_]*)/g, "[^/]+") + "$";
885
- return new RegExp(o).test(t);
886
- }
887
- function Hn() {
888
- ne();
889
- const { pathname: n } = E(), t = n.startsWith("/test/"), o = v(() => n, [n]), p = v(() => Ln(n), [n]);
890
- return /* @__PURE__ */ u("div", { className: D.shell, children: [
891
- /* @__PURE__ */ e(
892
- Fe,
893
- {
894
- activePathOverride: o,
895
- menuOnly: !0,
896
- visibleGroups: t ? ["测试中心"] : void 0
897
- }
898
- ),
899
- /* @__PURE__ */ u("main", { className: D.main, children: [
900
- /* @__PURE__ */ e(rt, {}),
901
- /* @__PURE__ */ e(At, { resetKey: n, children: /* @__PURE__ */ e(le, { fallback: /* @__PURE__ */ e("div", { className: D.empty, children: "加载中…" }), children: p }) })
902
- ] })
903
- ] });
904
- }
905
- export {
906
- Hn as default
907
- };