@yuku123/z-team-component 0.2.103 → 0.2.105

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