@yuku123/z-team-component 0.2.59 → 0.2.61

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-CZGpQekc.js} +1497 -1387
  3. package/dist/{InvitationManagementPage-Gkqisq4C.js → InvitationManagementPage-Dvhu6OWP.js} +1 -1
  4. package/dist/{OnboardingPage-C7C4PEjn.js → OnboardingPage-CF_ECLv7.js} +2 -2
  5. package/dist/{ScheduledTasks-BQRcjBOd.js → ScheduledTasks-Cec22jf4.js} +8 -8
  6. package/dist/SystemShell-D8uLAhd8.js +670 -0
  7. package/dist/{admin-logs-B9KS6VJz.js → admin-logs-DCYof_u5.js} +2 -2
  8. package/dist/{api-CALqShkO.js → api-DWt94BcM.js} +584 -572
  9. package/dist/{api-Y-52Ejhz.js → api-Dxw9Ajfn.js} +1 -1
  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-B5dPYPuA.js +93 -0
  13. package/dist/{index-C2Wkg1b5.js → index-BIdcTXZW.js} +3 -3
  14. package/dist/{index-m8V5TniT.js → index-BVh0W8ck.js} +15861 -15586
  15. package/dist/{index-Gt21FARO.js → index-BdGXRcf4.js} +3 -3
  16. package/dist/index-BgR7NlYr.js +118 -0
  17. package/dist/{index-8gCovDDT.js → index-C6jp_1-U.js} +6 -6
  18. package/dist/{index-DJ0FV74Y.js → index-CKtjapcc.js} +3 -3
  19. package/dist/{index-lftFkqfI.js → index-CTKf6h2u.js} +4 -4
  20. package/dist/{index-DKeYG0Fu.js → index-CrIIInfs.js} +4 -4
  21. package/dist/{index-63ovR-_x.js → index-DF4ZWJfp.js} +1 -1
  22. package/dist/index-DepaHnKP.js +2858 -0
  23. package/dist/{index-CO6WYRIS.js → index-Dfce6-jv.js} +3 -3
  24. package/dist/{index-Bpn6x1So.js → index-Dr8elYjm.js} +12 -12
  25. package/dist/{index-CLWgeKwr.js → index-DtVBFjaJ.js} +2 -2
  26. package/dist/{index-CGWttFLb.js → index-Dvhocfyo.js} +4 -4
  27. package/dist/{index-aw72ID7y.js → index-NPxrK-81.js} +1 -1
  28. package/dist/{index-CinRd7Nz.js → index-VY-pgcyl.js} +1 -1
  29. package/dist/{index-DJOyOVn_.js → index-VxO9i5r6.js} +1 -1
  30. package/dist/{index-C3B7CbHo.js → index-bsGAZKaU.js} +624 -613
  31. package/dist/index-gMeWspFX.js +112 -0
  32. package/dist/{index-DET70T3j.js → index-i6Ejgpao.js} +1 -1
  33. package/dist/{index-BvTYVEEv.js → index-nxjdN-Fp.js} +20 -16
  34. package/dist/{index-DfQCaS0z.js → index-tipx38MZ.js} +248 -244
  35. package/dist/{index-CN9NsUQ6.js → index-yRDgpDx1.js} +5 -5
  36. package/dist/index.js +1 -1
  37. package/dist/{instance-f3C-1qYl.js → instance-CbkHlDr4.js} +1 -1
  38. package/dist/menuPermission-BvgoOn21.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
@@ -0,0 +1,670 @@
1
+ import { jsxs as p, jsx as e } from "react/jsx-runtime";
2
+ import { useNavigate as F, useLocation as M, Navigate as l } from "react-router-dom";
3
+ import { useMemo as g, useState as L, Suspense as ae, lazy as u } from "react";
4
+ import { DownOutlined as z, RightOutlined as T, AppstoreOutlined as Q, UserOutlined as oe, SafetyCertificateOutlined as E, CloudOutlined as v, DeploymentUnitOutlined as x, AuditOutlined as j, CodeOutlined as f, FolderOpenOutlined as ce, DesktopOutlined as Y, DashboardOutlined as S, ProfileOutlined as H, BookOutlined as le, ApartmentOutlined as se, FileImageOutlined as pe, FileTextOutlined as A, CalendarOutlined as b, ApiOutlined as re, ProjectOutlined as Z, ClusterOutlined as ie, DatabaseOutlined as me, TeamOutlined as ue, BarChartOutlined as R } from "@ant-design/icons";
5
+ import { f as de, M as he } from "./menuPermission-BvgoOn21.js";
6
+ import { u as q } from "./useAppStore-BGOxWep2.js";
7
+ import { ProductApp as be } from "@yuku123/z-product-component";
8
+ import { P as ge, R as _e } from "./index-B5dPYPuA.js";
9
+ import { b as ke } from "./ComponentDoc-CZGpQekc.js";
10
+ const ye = "_container_wbul9_7", Se = "_sidebar_wbul9_17", Ae = "_menuList_wbul9_37", we = "_menuGroup_wbul9_44", fe = "_menuGroupHeader_wbul9_48", Pe = "_menuGroupIcon_wbul9_66", ve = "_menuGroupLabel_wbul9_75", De = "_menuGroupArrow_wbul9_80", Me = "_menuSubList_wbul9_87", Ge = "_menuSubItem_wbul9_93", Ie = "_menuSubItemActive_wbul9_110", Ce = "_menuSubItemIcon_wbul9_117", Ne = "_menuSubGroup_wbul9_132", Oe = "_menuSubGroupHeader_wbul9_136", Le = "_menuSubGroupHeaderActive_wbul9_154", ze = "_menuSubGroupLabel_wbul9_158", Te = "_main_wbul9_169", Ee = "_detailPanel_wbul9_179", xe = "_detailHeader_wbul9_189", je = "_detailIcon_wbul9_196", He = "_detailTitle_wbul9_209", Re = "_detailDesc_wbul9_216", qe = "_detailAction_wbul9_223", Be = "_goBtn_wbul9_228", $e = "_emptyState_wbul9_248", a = {
11
+ container: ye,
12
+ sidebar: Se,
13
+ menuList: Ae,
14
+ menuGroup: we,
15
+ menuGroupHeader: fe,
16
+ menuGroupIcon: Pe,
17
+ menuGroupLabel: ve,
18
+ menuGroupArrow: De,
19
+ menuSubList: Me,
20
+ menuSubItem: Ge,
21
+ menuSubItemActive: Ie,
22
+ menuSubItemIcon: Ce,
23
+ menuSubGroup: Ne,
24
+ menuSubGroupHeader: Oe,
25
+ menuSubGroupHeaderActive: Le,
26
+ menuSubGroupLabel: ze,
27
+ main: Te,
28
+ detailPanel: Ee,
29
+ detailHeader: xe,
30
+ detailIcon: je,
31
+ detailTitle: He,
32
+ detailDesc: Re,
33
+ detailAction: qe,
34
+ goBtn: Be,
35
+ emptyState: $e
36
+ };
37
+ function D(o) {
38
+ return o.flatMap((s) => [s, ...D(s.children ?? [])]);
39
+ }
40
+ const Ue = {
41
+ title: "测试中心",
42
+ icon: /* @__PURE__ */ e(S, {}),
43
+ // 测试 Tab 的入口权限点 (顶栏 test mode 同码)。4A 普通用户角色 USER 持有 TEST_ENTRY
44
+ // ⇒ 全员可见; 未绑测试角色的账号看不到这一组。
45
+ permission: "TEST_ENTRY",
46
+ items: [
47
+ {
48
+ key: "test-dashboard",
49
+ label: "测试总览",
50
+ icon: /* @__PURE__ */ e(S, {}),
51
+ path: "/test/qa/dashboard",
52
+ desc: "测试统计、趋势与套件健康度"
53
+ },
54
+ {
55
+ key: "test-design",
56
+ label: "用例与编排",
57
+ icon: /* @__PURE__ */ e(A, {}),
58
+ children: [
59
+ {
60
+ key: "test-case",
61
+ label: "测试用例",
62
+ icon: /* @__PURE__ */ e(A, {}),
63
+ path: "/test/qa/cases",
64
+ desc: "接口用例与断言模板"
65
+ },
66
+ {
67
+ key: "test-suite",
68
+ label: "测试套件",
69
+ icon: /* @__PURE__ */ e(ie, {}),
70
+ path: "/test/qa/suites",
71
+ desc: "步骤编排与变量传递"
72
+ },
73
+ {
74
+ key: "test-plan",
75
+ label: "测试计划",
76
+ icon: /* @__PURE__ */ e(Z, {}),
77
+ path: "/test/qa/plans",
78
+ desc: "套件组合与环境绑定"
79
+ }
80
+ ]
81
+ },
82
+ {
83
+ key: "test-exec",
84
+ label: "执行与调度",
85
+ icon: /* @__PURE__ */ e(b, {}),
86
+ children: [
87
+ {
88
+ key: "test-run",
89
+ label: "执行记录",
90
+ icon: /* @__PURE__ */ e(b, {}),
91
+ path: "/test/qa/runs",
92
+ desc: "执行触发、状态与报告"
93
+ },
94
+ {
95
+ key: "test-schedule",
96
+ label: "定时调度",
97
+ icon: /* @__PURE__ */ e(b, {}),
98
+ path: "/test/qa/schedules",
99
+ desc: "cron 定时执行"
100
+ },
101
+ {
102
+ key: "test-e2e",
103
+ label: "E2E 测试",
104
+ icon: /* @__PURE__ */ e(Y, {}),
105
+ path: "/test/qa/e2e",
106
+ desc: "浏览器自动化测试"
107
+ }
108
+ ]
109
+ },
110
+ {
111
+ key: "test-support",
112
+ label: "环境与工具",
113
+ icon: /* @__PURE__ */ e(v, {}),
114
+ children: [
115
+ {
116
+ key: "test-env",
117
+ label: "环境管理",
118
+ icon: /* @__PURE__ */ e(v, {}),
119
+ path: "/test/qa/envs",
120
+ desc: "多环境变量管理"
121
+ },
122
+ {
123
+ key: "test-mock",
124
+ label: "Mock 平台",
125
+ icon: /* @__PURE__ */ e(me, {}),
126
+ path: "/test/mock",
127
+ desc: "API Mock 服务管理"
128
+ }
129
+ ]
130
+ },
131
+ {
132
+ key: "test-eval",
133
+ label: "智能测评",
134
+ icon: /* @__PURE__ */ e(R, {}),
135
+ children: [
136
+ {
137
+ key: "test-eval-start",
138
+ label: "发起测评",
139
+ icon: /* @__PURE__ */ e(S, {}),
140
+ path: "/test/evaluation/start",
141
+ desc: "Agent 质量测评"
142
+ },
143
+ {
144
+ key: "test-eval-schedule",
145
+ label: "自动测评",
146
+ icon: /* @__PURE__ */ e(b, {}),
147
+ path: "/test/evaluation/schedule",
148
+ desc: "定时批量测评"
149
+ },
150
+ {
151
+ key: "test-eval-group",
152
+ label: "群聊评测",
153
+ icon: /* @__PURE__ */ e(ue, {}),
154
+ path: "/test/evaluation/group",
155
+ desc: "群聊场景评测"
156
+ },
157
+ {
158
+ key: "test-eval-report",
159
+ label: "分析报告",
160
+ icon: /* @__PURE__ */ e(R, {}),
161
+ path: "/test/evaluation/report",
162
+ desc: "测评结果分析"
163
+ }
164
+ ]
165
+ }
166
+ ]
167
+ }, V = [
168
+ {
169
+ title: "认证与权限",
170
+ icon: /* @__PURE__ */ e(E, {}),
171
+ // 4A 授权中心自身的资源管理动作 (账号/角色/应用/租户/组织/权限分配)
172
+ // ⇒ 4A 权限管理域 PERMISSION_MANAGE。普通用户角色 USER 不含该码,
173
+ // 之前照样能点进这些页面 (进去就是 403 / 空白) —— 现在入口先收敛。
174
+ permission: "PERMISSION_MANAGE",
175
+ items: [
176
+ {
177
+ key: "4a-account",
178
+ label: "账号管理",
179
+ icon: /* @__PURE__ */ e(oe, {}),
180
+ path: "/ctc/4a/account",
181
+ desc: "用户账号创建、编辑与状态管理"
182
+ },
183
+ {
184
+ key: "4a-role",
185
+ label: "角色管理",
186
+ icon: /* @__PURE__ */ e(E, {}),
187
+ path: "/ctc/4a/role",
188
+ desc: "角色定义与权限分配"
189
+ },
190
+ {
191
+ key: "4a-app",
192
+ label: "应用管理",
193
+ icon: /* @__PURE__ */ e(Q, {}),
194
+ path: "/ctc/4a/application",
195
+ desc: "应用注册、资源与权限配置"
196
+ },
197
+ {
198
+ key: "4a-tenant",
199
+ label: "租户管理",
200
+ icon: /* @__PURE__ */ e(v, {}),
201
+ path: "/ctc/4a/tenant",
202
+ desc: "多租户管理与配置"
203
+ },
204
+ {
205
+ key: "4a-org",
206
+ label: "组织管理",
207
+ icon: /* @__PURE__ */ e(x, {}),
208
+ path: "/ctc/4a/org",
209
+ desc: "组织架构与部门管理"
210
+ },
211
+ {
212
+ key: "4a-permission",
213
+ label: "权限管理",
214
+ icon: /* @__PURE__ */ e(j, {}),
215
+ path: "/ctc/4a/permission",
216
+ desc: "细粒度权限控制与审批"
217
+ }
218
+ ]
219
+ },
220
+ {
221
+ title: "开发与工具",
222
+ icon: /* @__PURE__ */ e(f, {}),
223
+ items: [
224
+ {
225
+ key: "script",
226
+ label: "脚本中心",
227
+ icon: /* @__PURE__ */ e(f, {}),
228
+ path: "/script/manage",
229
+ desc: "DSL 脚本注册与执行"
230
+ },
231
+ { key: "lc", label: "研发中心", icon: /* @__PURE__ */ e(f, {}), path: "/lc/apps", desc: "低代码应用开发与管理" },
232
+ {
233
+ key: "tool-curl",
234
+ label: "短链管理",
235
+ icon: /* @__PURE__ */ e(ce, {}),
236
+ path: "/z-tool/curl",
237
+ desc: "短链接创建与管理"
238
+ },
239
+ {
240
+ key: "tool-webide",
241
+ label: "WebIDE 容器",
242
+ icon: /* @__PURE__ */ e(Y, {}),
243
+ path: "/z-tool/webide",
244
+ desc: "在线 IDE 代码编辑器"
245
+ }
246
+ ]
247
+ },
248
+ {
249
+ title: "产品认知",
250
+ icon: /* @__PURE__ */ e(H, {}),
251
+ items: [
252
+ {
253
+ key: "product-board",
254
+ label: "产品全景",
255
+ icon: /* @__PURE__ */ e(S, {}),
256
+ path: "/z-product/board",
257
+ desc: "业务/产品/研发三线可见的全量认知(术语·模型·链路·设计稿·缺口)"
258
+ },
259
+ {
260
+ key: "product-blueprint",
261
+ label: "产品蓝图",
262
+ icon: /* @__PURE__ */ e(H, {}),
263
+ path: "/z-product/blueprint",
264
+ desc: "AI 的唯一入口:后端实时投影的全量认知快照"
265
+ },
266
+ {
267
+ key: "product-glossary",
268
+ label: "统一语言",
269
+ icon: /* @__PURE__ */ e(le, {}),
270
+ path: "/z-product/glossary",
271
+ desc: "术语仲裁表:标准词/别名/适用范围/反例"
272
+ },
273
+ {
274
+ key: "product-concept",
275
+ label: "领域模型",
276
+ icon: /* @__PURE__ */ e(se, {}),
277
+ path: "/z-product/concept-model",
278
+ desc: "概念与关系画布(四种投影)"
279
+ },
280
+ {
281
+ key: "product-scenarios",
282
+ label: "用户链路",
283
+ icon: /* @__PURE__ */ e(x, {}),
284
+ path: "/z-product/scenarios",
285
+ desc: "端到端场景:步骤引用领域概念"
286
+ },
287
+ {
288
+ key: "product-designs",
289
+ label: "设计稿 ⇄ 模型",
290
+ icon: /* @__PURE__ */ e(pe, {}),
291
+ path: "/z-product/designs",
292
+ desc: "设计与认知的双向收敛回路"
293
+ }
294
+ ]
295
+ },
296
+ {
297
+ title: "业务流程",
298
+ icon: /* @__PURE__ */ e(A, {}),
299
+ items: [
300
+ {
301
+ key: "workflow",
302
+ label: "流程中心",
303
+ icon: /* @__PURE__ */ e(j, {}),
304
+ path: "/workflow/dashboard",
305
+ desc: "工作流定义与审批管理"
306
+ },
307
+ {
308
+ key: "task",
309
+ label: "任务中心",
310
+ icon: /* @__PURE__ */ e(A, {}),
311
+ path: "/task/dashboard",
312
+ desc: "任务创建、分配与跟踪"
313
+ },
314
+ {
315
+ key: "schedule",
316
+ label: "调度中心",
317
+ icon: /* @__PURE__ */ e(b, {}),
318
+ // z-schedule-component 的路由只有 jobs / group / log,**没有 dashboard**:
319
+ // 原来写 /schedule/dashboard,点进去命中 /schedule/* 通配后组件内部匹配不到
320
+ // 任何路由 ⇒ 右侧一片空白。默认页取 jobs。
321
+ path: "/schedule/jobs",
322
+ desc: "定时任务调度与管理"
323
+ },
324
+ {
325
+ key: "subscribe",
326
+ label: "订阅中心",
327
+ icon: /* @__PURE__ */ e(re, {}),
328
+ path: "/subscribe/list",
329
+ desc: "第三方数据订阅与拉取"
330
+ },
331
+ {
332
+ key: "project",
333
+ label: "项目中心",
334
+ icon: /* @__PURE__ */ e(Z, {}),
335
+ path: "/project/list",
336
+ desc: "项目创建与进度管理"
337
+ }
338
+ ]
339
+ }
340
+ ], P = [...V, Ue];
341
+ function We({
342
+ activePathOverride: o,
343
+ menuOnly: s = !1,
344
+ visibleGroups: r
345
+ } = {}) {
346
+ const _ = F(), { pathname: G } = M(), w = g(
347
+ () => r ? P.filter((n) => r.includes(n.title)) : V,
348
+ [r]
349
+ ), I = q((n) => n.permissionState), C = q((n) => n.currentUser), k = g(
350
+ () => I === "failed" ? w : de(w, C),
351
+ [w, C, I]
352
+ ), [J, X] = L(
353
+ new Set(P.map((n) => n.title))
354
+ ), [N, ee] = L(
355
+ () => new Set(
356
+ P.flatMap((n) => n.items).filter((n) => n.children).map((n) => n.key)
357
+ )
358
+ ), y = g(() => {
359
+ var i;
360
+ const n = o ?? G;
361
+ return ((i = k.flatMap((c) => D(c.items)).find(
362
+ (c) => c.path === n
363
+ )) == null ? void 0 : i.key) ?? null;
364
+ }, [o, G, k]), te = (n) => {
365
+ X((i) => {
366
+ const c = new Set(i);
367
+ return c.has(n) ? c.delete(n) : c.add(n), c;
368
+ });
369
+ }, ne = (n) => {
370
+ ee((i) => {
371
+ const c = new Set(i);
372
+ return c.has(n) ? c.delete(n) : c.add(n), c;
373
+ });
374
+ }, O = (n) => {
375
+ n.path && _(n.path);
376
+ }, d = k.flatMap((n) => D(n.items)).find(
377
+ (n) => n.key === y
378
+ );
379
+ return /* @__PURE__ */ p("div", { className: a.container, children: [
380
+ /* @__PURE__ */ p("aside", { className: a.sidebar, children: [
381
+ /* @__PURE__ */ e(he, {}),
382
+ /* @__PURE__ */ e("nav", { className: a.menuList, children: k.map((n) => {
383
+ const i = J.has(n.title);
384
+ return /* @__PURE__ */ p("div", { className: a.menuGroup, children: [
385
+ /* @__PURE__ */ p(
386
+ "div",
387
+ {
388
+ className: a.menuGroupHeader,
389
+ onClick: () => te(n.title),
390
+ children: [
391
+ /* @__PURE__ */ e("span", { className: a.menuGroupIcon, children: n.icon }),
392
+ /* @__PURE__ */ e("span", { className: a.menuGroupLabel, children: n.title }),
393
+ /* @__PURE__ */ e("span", { className: a.menuGroupArrow, children: i ? /* @__PURE__ */ e(z, {}) : /* @__PURE__ */ e(T, {}) })
394
+ ]
395
+ }
396
+ ),
397
+ i && /* @__PURE__ */ e("ul", { className: a.menuSubList, children: n.items.map(
398
+ (c) => c.children ? (
399
+ /* 子菜单分组头 — 可折叠; active 项落在其中时高亮 */
400
+ /* @__PURE__ */ p("li", { className: a.menuSubGroup, children: [
401
+ /* @__PURE__ */ p(
402
+ "div",
403
+ {
404
+ className: `${a.menuSubGroupHeader} ${c.children.some((m) => m.key === y) ? a.menuSubGroupHeaderActive : ""}`,
405
+ onClick: () => ne(c.key),
406
+ children: [
407
+ /* @__PURE__ */ e("span", { className: a.menuGroupIcon, children: c.icon }),
408
+ /* @__PURE__ */ e("span", { className: a.menuSubGroupLabel, children: c.label }),
409
+ /* @__PURE__ */ e("span", { className: a.menuGroupArrow, children: N.has(c.key) ? /* @__PURE__ */ e(z, {}) : /* @__PURE__ */ e(T, {}) })
410
+ ]
411
+ }
412
+ ),
413
+ N.has(c.key) && /* @__PURE__ */ e("ul", { className: a.menuSubList, children: c.children.map((m) => /* @__PURE__ */ p(
414
+ "li",
415
+ {
416
+ className: `${a.menuSubItem} ${y === m.key ? a.menuSubItemActive : ""}`,
417
+ onClick: () => O(m),
418
+ children: [
419
+ /* @__PURE__ */ e(
420
+ "span",
421
+ {
422
+ className: a.menuSubItemIcon,
423
+ children: m.icon
424
+ }
425
+ ),
426
+ /* @__PURE__ */ e("span", { children: m.label })
427
+ ]
428
+ },
429
+ m.key
430
+ )) })
431
+ ] }, c.key)
432
+ ) : /* @__PURE__ */ p(
433
+ "li",
434
+ {
435
+ className: `${a.menuSubItem} ${y === c.key ? a.menuSubItemActive : ""}`,
436
+ onClick: () => O(c),
437
+ children: [
438
+ /* @__PURE__ */ e("span", { className: a.menuSubItemIcon, children: c.icon }),
439
+ /* @__PURE__ */ e("span", { children: c.label })
440
+ ]
441
+ },
442
+ c.key
443
+ )
444
+ ) })
445
+ ] }, n.title);
446
+ }) })
447
+ ] }),
448
+ s ? null : /* @__PURE__ */ e("main", { className: a.main, children: d ? /* @__PURE__ */ p("div", { className: a.detailPanel, children: [
449
+ /* @__PURE__ */ p("div", { className: a.detailHeader, children: [
450
+ /* @__PURE__ */ e("div", { className: a.detailIcon, children: d.icon }),
451
+ /* @__PURE__ */ p("div", { children: [
452
+ /* @__PURE__ */ e("h2", { className: a.detailTitle, children: d.label }),
453
+ /* @__PURE__ */ e("p", { className: a.detailDesc, children: d.desc })
454
+ ] })
455
+ ] }),
456
+ /* @__PURE__ */ e("div", { className: a.detailAction, children: /* @__PURE__ */ p(
457
+ "button",
458
+ {
459
+ className: a.goBtn,
460
+ onClick: () => _(d.path),
461
+ children: [
462
+ "进入 ",
463
+ d.label
464
+ ]
465
+ }
466
+ ) })
467
+ ] }) : /* @__PURE__ */ p("div", { className: a.emptyState, children: [
468
+ /* @__PURE__ */ e(Q, { style: { fontSize: 48, color: "#ccc" } }),
469
+ /* @__PURE__ */ e("p", { children: "点击左侧菜单进入对应功能模块" })
470
+ ] }) })
471
+ ] });
472
+ }
473
+ const Ke = "_shell_10jrt_6", Fe = "_main_10jrt_21", Qe = "_empty_10jrt_31", Ye = "_emptyIcon_10jrt_41", Ze = "_emptyText_10jrt_46", h = {
474
+ shell: Ke,
475
+ main: Fe,
476
+ empty: Qe,
477
+ emptyIcon: Ye,
478
+ emptyText: Ze
479
+ };
480
+ ke();
481
+ const t = (o, s) => u(() => o().then((r) => ({ default: r[s] }))), Ve = t(() => import("@yuku123/z-ctc-component"), "AccountManagement"), Je = t(() => import("@yuku123/z-ctc-component"), "ApplicationManagement"), Xe = t(() => import("@yuku123/z-ctc-component"), "AuditPage"), et = t(() => import("@yuku123/z-ctc-component"), "CtcOverview"), tt = t(() => import("@yuku123/z-ctc-component"), "DictPage"), nt = t(() => import("@yuku123/z-ctc-component"), "OrgPage"), at = t(() => import("@yuku123/z-ctc-component"), "PermissionManagement"), ot = t(() => import("@yuku123/z-ctc-component"), "RoleManagement"), B = t(() => import("@yuku123/z-ctc-component"), "SurlManagement"), ct = t(() => import("@yuku123/z-ctc-component"), "TenantManagement"), lt = t(() => import("@yuku123/z-agent-component"), "AgentAppList"), st = t(() => import("@yuku123/z-agent-component"), "AgentDashboard"), pt = t(() => import("@yuku123/z-agent-component"), "AkManage"), rt = t(() => import("@yuku123/z-agent-component"), "BucketList"), it = t(() => import("@yuku123/z-agent-component"), "LlmManage"), mt = t(() => import("@yuku123/z-agent-component"), "McpPage"), ut = t(() => import("@yuku123/z-agent-component"), "ObjectBrowser"), dt = t(() => import("@yuku123/z-agent-component"), "ScriptCenterPage"), ht = t(() => import("@yuku123/z-agent-component"), "ScriptProductizationPage"), bt = t(() => import("@yuku123/z-agent-component"), "SkillMarket"), gt = t(() => import("./index-Dr8elYjm.js"), "AgentTeamIM"), $ = t(() => import("./index-Dr8elYjm.js"), "DebugPlayground"), _t = t(() => import("./index-Dr8elYjm.js"), "Overview"), U = t(() => import("./index-Dr8elYjm.js"), "Webide"), kt = u(() => import("./OnboardingPage-CF_ECLv7.js")), yt = u(() => import("./InvitationManagementPage-Dvhu6OWP.js")), St = t(() => import("@yuku123/z-config-component"), "ConfigApp"), At = t(() => import("@yuku123/z-task-component"), "TaskApp"), wt = t(() => import("@yuku123/z-wf-component"), "WorkflowApp"), ft = t(() => import("@yuku123/z-schedule-component"), "ScheduleApp"), Pt = t(() => import("@yuku123/z-mist-component"), "MistApp"), vt = t(() => import("@yuku123/z-meta-component"), "MetaApp"), Dt = t(() => import("@yuku123/z-msg-component"), "MsgApp"), Mt = t(() => import("@yuku123/z-rpc-component"), "RpcApp"), Gt = u(() => import("./ComponentDoc-CZGpQekc.js").then((o) => o.p)), It = u(() => import("./ComponentDoc-CZGpQekc.js").then((o) => o.q)), Ct = t(() => import("@yuku123/z-config-component"), "ComponentDocPage"), Nt = t(() => import("@yuku123/z-task-component"), "ComponentDocPage"), Ot = t(() => import("@yuku123/z-wf-component"), "ComponentDocPage"), Lt = t(() => import("@yuku123/z-schedule-component"), "ComponentDocPage"), zt = t(() => import("@yuku123/z-mist-component"), "ComponentDocPage"), Tt = t(() => import("@yuku123/z-meta-component"), "ComponentDocPage"), Et = t(() => import("@yuku123/z-msg-component"), "ComponentDocPage"), xt = t(() => import("@yuku123/z-rpc-component"), "ComponentDocPage"), jt = t(() => import("@yuku123/z-kb-component"), "ComponentDocPage"), Ht = t(() => import("@yuku123/z-product-component"), "ComponentDocPage"), Rt = t(() => import("@yuku123/z-oss-component"), "ComponentDocPage"), qt = t(() => import("@yuku123/z-vector-component"), "ComponentDocPage"), Bt = t(() => import("@yuku123/z-graph-component"), "ComponentDocPage"), $t = t(() => import("@yuku123/z-gw-component"), "ComponentDocPage"), Ut = t(() => import("@yuku123/z-cache-component"), "ComponentDocPage"), Wt = t(() => import("@yuku123/z-mq-component"), "ComponentDocPage"), Kt = t(() => import("@yuku123/z-ctc-component"), "ComponentDocPage"), Ft = t(() => import("@yuku123/z-agent-component"), "ComponentDocPage"), Qt = t(() => import("@yuku123/z-lc-component"), "ComponentDocPage"), Yt = t(() => import("@yuku123/z-qa-component"), "ComponentDocPage"), Zt = u(() => import("./ComponentDoc-CZGpQekc.js").then((o) => o.o)), W = u(() => import("@yuku123/z-qa-component"));
482
+ function Vt() {
483
+ return /* @__PURE__ */ p("div", { className: h.empty, children: [
484
+ /* @__PURE__ */ e("div", { className: h.emptyIcon, children: "📋" }),
485
+ /* @__PURE__ */ e("div", { className: h.emptyText, children: "请从左侧菜单选择模块" })
486
+ ] });
487
+ }
488
+ function Jt() {
489
+ const { pathname: o } = M();
490
+ return /* @__PURE__ */ e(l, { to: o.replace(/^\/product/, "/z-product"), replace: !0 });
491
+ }
492
+ const K = [
493
+ // ─── 顶层 / 概览 ───
494
+ { path: "/overview", element: /* @__PURE__ */ e(_t, {}) },
495
+ // ─── 4A 中心 (/ctc/*) ───
496
+ { path: "/ctc", element: /* @__PURE__ */ e(l, { to: "/ctc/4a/account", replace: !0 }) },
497
+ { path: "/ctc/4a/account", element: /* @__PURE__ */ e(Ve, {}) },
498
+ { path: "/ctc/4a/role", element: /* @__PURE__ */ e(ot, {}) },
499
+ { path: "/ctc/4a/application", element: /* @__PURE__ */ e(Je, {}) },
500
+ { path: "/ctc/4a/tenant", element: /* @__PURE__ */ e(ct, {}) },
501
+ { path: "/ctc/4a/org", element: /* @__PURE__ */ e(nt, {}) },
502
+ { path: "/ctc/4a/permission", element: /* @__PURE__ */ e(at, {}) },
503
+ { path: "/ctc/4a/surl", element: /* @__PURE__ */ e(B, {}) },
504
+ { path: "/ctc/dict", element: /* @__PURE__ */ e(tt, {}) },
505
+ { path: "/ctc/overview", element: /* @__PURE__ */ e(et, {}) },
506
+ { path: "/ctc/audit", element: /* @__PURE__ */ e(Xe, {}) },
507
+ { path: "/ctc/webide", element: /* @__PURE__ */ e(U, {}) },
508
+ { path: "/ctc/agent-team", element: /* @__PURE__ */ e(gt, {}) },
509
+ { path: "/ctc/invitation", element: /* @__PURE__ */ e(yt, {}) },
510
+ { path: "/onboarding", element: /* @__PURE__ */ e(kt, {}) },
511
+ // ─── 智能中心 (/ai/*) ───
512
+ { path: "/ai", element: /* @__PURE__ */ e(l, { to: "/ai/agent/app", replace: !0 }) },
513
+ { path: "/ai/agent", element: /* @__PURE__ */ e(l, { to: "/ai/agent/app", replace: !0 }) },
514
+ { path: "/ai/agent/app", element: /* @__PURE__ */ e(lt, {}) },
515
+ { path: "/ai/llm", element: /* @__PURE__ */ e(it, {}) },
516
+ { path: "/ai/llm/provider", element: /* @__PURE__ */ e(l, { to: "/ai/llm", replace: !0 }) },
517
+ { path: "/ai/llm/model", element: /* @__PURE__ */ e(l, { to: "/ai/llm", replace: !0 }) },
518
+ { path: "/ai/usage", element: /* @__PURE__ */ e(l, { to: "/ai/llm", replace: !0 }) },
519
+ { path: "/ai/ak", element: /* @__PURE__ */ e(pt, {}) },
520
+ { path: "/ai/mcp", element: /* @__PURE__ */ e(mt, {}) },
521
+ { path: "/ai/skill", element: /* @__PURE__ */ e(bt, {}) },
522
+ { path: "/ai/oss", element: /* @__PURE__ */ e(l, { to: "/ai/oss/bucket", replace: !0 }) },
523
+ { path: "/ai/oss/bucket", element: /* @__PURE__ */ e(rt, {}) },
524
+ { path: "/ai/oss/bucket/:bucketName", element: /* @__PURE__ */ e(ut, {}) },
525
+ { path: "/ai/trace", element: /* @__PURE__ */ e($, {}) },
526
+ { path: "/ai/trace/debug", element: /* @__PURE__ */ e($, {}) },
527
+ { path: "/ai/dashboard", element: /* @__PURE__ */ e(st, {}) },
528
+ // 多 Agent 实例 / 模板市场已下线 (2026-10-22): 模板并入 Agent 应用页,
529
+ // 旧深链重定向, 别再回到独立菜单
530
+ { path: "/ai/template", element: /* @__PURE__ */ e(l, { to: "/ai/agent/app", replace: !0 }) },
531
+ { path: "/ai/agent-instance", element: /* @__PURE__ */ e(l, { to: "/ai/agent/app", replace: !0 }) },
532
+ { path: "/ai/agent/instances", element: /* @__PURE__ */ e(l, { to: "/ai/agent/app", replace: !0 }) },
533
+ // ─── 配置中心 ───
534
+ { path: "/config/*", element: /* @__PURE__ */ e(St, {}) },
535
+ // ─── 任务中心 ───
536
+ // 模块根路径要重定向到默认页:通配 /task/* 匹配不到裸 /task(matchPattern 要求
537
+ // 前缀带斜杠),落到 SystemShellEmpty 就是一句"请从左侧菜单选择模块"的空壳。
538
+ { path: "/task", element: /* @__PURE__ */ e(l, { to: "/task/dashboard", replace: !0 }) },
539
+ { path: "/task/*", element: /* @__PURE__ */ e(At, {}) },
540
+ // ─── 流程中心 ───
541
+ { path: "/workflow", element: /* @__PURE__ */ e(l, { to: "/workflow/dashboard", replace: !0 }) },
542
+ { path: "/workflow/*", element: /* @__PURE__ */ e(wt, {}) },
543
+ // ─── 调度中心 ───
544
+ // 默认页是 jobs:z-schedule-component 的路由只有 jobs / group / log,没有 dashboard。
545
+ { path: "/schedule", element: /* @__PURE__ */ e(l, { to: "/schedule/jobs", replace: !0 }) },
546
+ { path: "/schedule/*", element: /* @__PURE__ */ e(ft, {}) },
547
+ // ─── 密钥中心 ───
548
+ { path: "/mist/*", element: /* @__PURE__ */ e(Pt, {}) },
549
+ // ─── 中间件孵化页 (大需求 004) — 主入口在运维工作台 (?mode=ops),此处兜住直链/刷新 ───
550
+ { path: "/meta", element: /* @__PURE__ */ e(l, { to: "/meta/app", replace: !0 }) },
551
+ { path: "/meta/*", element: /* @__PURE__ */ e(vt, {}) },
552
+ { path: "/msg", element: /* @__PURE__ */ e(l, { to: "/msg/inbox", replace: !0 }) },
553
+ { path: "/msg/*", element: /* @__PURE__ */ e(Dt, {}) },
554
+ { path: "/rpc", element: /* @__PURE__ */ e(l, { to: "/rpc/service", replace: !0 }) },
555
+ { path: "/rpc/*", element: /* @__PURE__ */ e(Mt, {}) },
556
+ // ─── 订阅中心 ───
557
+ { path: "/subscribe", element: /* @__PURE__ */ e(l, { to: "/subscribe/list", replace: !0 }) },
558
+ { path: "/subscribe/*", element: /* @__PURE__ */ e(Gt, {}) },
559
+ // ─── 产品工作台 z-product (2026-10-21 接入) ───
560
+ // /z-product/* 由 z-product 组件自己的 ProductApp 渲染(内部按 manifest 的绝对路径手工匹配,
561
+ // 不用嵌套 <Routes>:这里没有 Route 父上下文,绝对路径不会被再拼一次父前缀)。
562
+ // §14:z-product 的菜单 key / 路由 path 一律带产品名前缀(/z-product/xxx),
563
+ // 避免 /board、/products 这类短路径跟宿主自己的同名路由撞车。
564
+ { path: "/z-product", element: /* @__PURE__ */ e(l, { to: "/z-product/board", replace: !0 }) },
565
+ { path: "/z-product/*", element: /* @__PURE__ */ e(be, { basePath: "/z-product" }) },
566
+ // 旧前缀 /product/* → 新前缀 /z-product/*:§14 前缀化之前的老 URL 仍可达(书签 / 旧分享链接)。
567
+ { path: "/product", element: /* @__PURE__ */ e(l, { to: "/z-product/board", replace: !0 }) },
568
+ { path: "/product/*", element: /* @__PURE__ */ e(Jt, {}) },
569
+ // ─── 项目中心 ───
570
+ { path: "/project", element: /* @__PURE__ */ e(l, { to: "/project/list", replace: !0 }) },
571
+ { path: "/project/*", element: /* @__PURE__ */ e(It, {}) },
572
+ // ─── 脚本中心 (/script/*) — FEATURE052 ───
573
+ { path: "/script", element: /* @__PURE__ */ e(l, { to: "/script/manage", replace: !0 }) },
574
+ { path: "/script/manage", element: /* @__PURE__ */ e(dt, {}) },
575
+ { path: "/script/productization", element: /* @__PURE__ */ e(ht, {}) },
576
+ // ─── 工具中心 (/z-tool/*) — FEATURE054 ───
577
+ { path: "/z-tool", element: /* @__PURE__ */ e(l, { to: "/z-tool/curl", replace: !0 }) },
578
+ { path: "/z-tool/curl", element: /* @__PURE__ */ e(B, {}) },
579
+ { path: "/z-tool/webide", element: /* @__PURE__ */ e(U, {}) },
580
+ // ─── 测试中心 (/test/*) — FEATURE061 ───
581
+ { path: "/test", element: /* @__PURE__ */ e(l, { to: "/test/qa/dashboard", replace: !0 }) },
582
+ { path: "/test/mock", element: /* @__PURE__ */ e(Zt, {}) },
583
+ // QAApp 内部用 <Routes> 相对路由, 通配匹配后由 QAApp 自己接管子路径
584
+ { path: "/test/qa", element: /* @__PURE__ */ e(W, {}) },
585
+ { path: "/test/qa/*", element: /* @__PURE__ */ e(W, {}) },
586
+ // ─── 低代码 ───
587
+ // /lc/* 刻意不在这里注册。它早就迁到 src/lc/(TS 重写), 挂载点是
588
+ // main.jsx 的 <Route path="/lc/*" element={<ZTeamApp forcedMode="dev"/>}/>,
589
+ // 由 DevWorkbench 把 pathname 原样交给 @/lc 自己的嵌套 <Routes>。
590
+ // 本表早先还挂着一行 {path:'/lc/*', element:<LcIndex/>}, 它的 import 写的是
591
+ // '@/pages/lc' —— 该别名解析到 src/zteam/pages/lc(不存在), 真身在 src/lc,
592
+ // 于是这行既解析不了、又因 main.jsx 先消费了 /lc/* 而永远不可达。
593
+ // /form/:entity 与 /form/_model 是 z-lc Phase 1 手写原型的两条 URL
594
+ // (LowCodeModel 实体字段编辑器 / LowCodeRuntime 通用 CRUD), 现已由
595
+ // @yuku123/z-lc-component 承接 —— 它是同一套 /api/lc 后端的完整前端客户,
596
+ // 能力严格更强(designer 模型编辑、workspace 七种视图 CRUD、admin 全套、
597
+ // db-import、AI 建模), 挂在 main.jsx 的 <Route path="/lc/*"> 下经
598
+ // DevWorkbench 的 <LcApp/> 渲染。
599
+ //
600
+ // 不做逐条映射: z-lc 的工作区路由是 /lc/{appCode}/{entityCode}/{viewType},
601
+ // 比 /form/{entityCode} 多一层 appCode, 旧 URL 里没有这个信息, 无法还原。
602
+ // 故统一重定向到应用列表, 由用户自行进入对应应用。
603
+ { path: "/form/:entity", element: /* @__PURE__ */ e(l, { to: "/lc/apps", replace: !0 }) },
604
+ // ─── 各域组件文档(lead 008 §7)───
605
+ // 放在本表末尾即可:matchSystemPath 是「先全表精确匹配、再全表通配匹配」,
606
+ // 所以 /config/docs 这类精确路径**不会**被上面的 /config/* 吃掉。
607
+ //
608
+ // 为什么路径用宿主前缀(/config/docs)而不是各域 manifest 里的 /z-config/docs:
609
+ // manifest 的 routes 是给**独立壳**用的(suit 里 <Route path={r.path}> 直接铺);
610
+ // 工作台把各域挂在宿主前缀下(/config/* ⇒ ConfigApp 内部相对路由),
611
+ // 两套路径对不上 ⇒ manifest 的 routes 在工作台里不生效,文档页会 404。
612
+ // 这里统一按**宿主前缀**挂,各域自己的 manifest 路径仍然保留给独立壳用。
613
+ //
614
+ // §14 铁律(菜单 key 必须带产品名前缀)针对的是**同一宿主内多套件共存**的撞车问题;
615
+ // 这里每个域的宿主前缀本身就已经是产品名(/config / /task / /workflow …),
616
+ // 且各域之间前缀互不相同 ⇒ 不存在撞车,不需要再加 z- 前缀。
617
+ { path: "/config/docs", element: /* @__PURE__ */ e(Ct, {}) },
618
+ { path: "/task/docs", element: /* @__PURE__ */ e(Nt, {}) },
619
+ { path: "/workflow/docs", element: /* @__PURE__ */ e(Ot, {}) },
620
+ { path: "/schedule/docs", element: /* @__PURE__ */ e(Lt, {}) },
621
+ { path: "/mist/docs", element: /* @__PURE__ */ e(zt, {}) },
622
+ { path: "/meta/docs", element: /* @__PURE__ */ e(Tt, {}) },
623
+ { path: "/msg/docs", element: /* @__PURE__ */ e(Et, {}) },
624
+ { path: "/rpc/docs", element: /* @__PURE__ */ e(xt, {}) },
625
+ { path: "/kb/docs", element: /* @__PURE__ */ e(jt, {}) },
626
+ { path: "/z-product/docs", element: /* @__PURE__ */ e(Ht, {}) },
627
+ { path: "/oss/docs", element: /* @__PURE__ */ e(Rt, {}) },
628
+ { path: "/vector/docs", element: /* @__PURE__ */ e(qt, {}) },
629
+ { path: "/graph/docs", element: /* @__PURE__ */ e(Bt, {}) },
630
+ { path: "/gw/docs", element: /* @__PURE__ */ e($t, {}) },
631
+ { path: "/cache/docs", element: /* @__PURE__ */ e(Ut, {}) },
632
+ { path: "/mq/docs", element: /* @__PURE__ */ e(Wt, {}) },
633
+ { path: "/ctc/docs", element: /* @__PURE__ */ e(Kt, {}) },
634
+ { path: "/ai/docs", element: /* @__PURE__ */ e(Ft, {}) },
635
+ { path: "/lc/docs", element: /* @__PURE__ */ e(Qt, {}) },
636
+ { path: "/test/qa/docs", element: /* @__PURE__ */ e(Yt, {}) }
637
+ ];
638
+ function Xt(o) {
639
+ for (const s of K)
640
+ if (s.path === o) return s.element;
641
+ for (const s of K)
642
+ if (en(s.path, o)) return s.element;
643
+ return /* @__PURE__ */ e(Vt, {});
644
+ }
645
+ function en(o, s) {
646
+ if (!o.includes("*") && !o.includes(":")) return !1;
647
+ const r = "^" + o.replace(/[.+?^${}()|[\]\\]/g, "\\$&").replace(/\*/g, ".*").replace(/:([a-zA-Z_][a-zA-Z0-9_]*)/g, "[^/]+") + "$";
648
+ return new RegExp(r).test(s);
649
+ }
650
+ function mn() {
651
+ F();
652
+ const { pathname: o } = M(), s = o.startsWith("/test/"), r = g(() => o, [o]), _ = g(() => Xt(o), [o]);
653
+ return /* @__PURE__ */ p("div", { className: h.shell, children: [
654
+ /* @__PURE__ */ e(
655
+ We,
656
+ {
657
+ activePathOverride: r,
658
+ menuOnly: !0,
659
+ visibleGroups: s ? ["测试中心"] : void 0
660
+ }
661
+ ),
662
+ /* @__PURE__ */ p("main", { className: h.main, children: [
663
+ /* @__PURE__ */ e(ge, {}),
664
+ /* @__PURE__ */ e(_e, { resetKey: o, children: /* @__PURE__ */ e(ae, { fallback: /* @__PURE__ */ e("div", { className: h.empty, children: "加载中…" }), children: _ }) })
665
+ ] })
666
+ ] });
667
+ }
668
+ export {
669
+ mn as default
670
+ };