@yuku123/z-team-component 0.2.57 → 0.2.59
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{ComponentDoc-0L_mpFyu.js → ComponentDoc-Bx6NAJlK.js} +2 -2
- package/dist/{InvitationManagementPage-Ba5yy-Hl.js → InvitationManagementPage-Gkqisq4C.js} +1 -1
- package/dist/{OnboardingPage-rEAorVv0.js → OnboardingPage-C7C4PEjn.js} +2 -2
- package/dist/{ScheduledTasks-Db5a-nxu.js → ScheduledTasks-BQRcjBOd.js} +1 -1
- package/dist/SystemShell-Df9PZzLO.js +907 -0
- package/dist/{api-B4-sB0Pv.js → api-Y-52Ejhz.js} +1 -1
- package/dist/{index-C88kp8U2.js → index-63ovR-_x.js} +1 -1
- package/dist/{index-DTGL9OWw.js → index-BADGOdUu.js} +279 -245
- package/dist/{index-DJGEEIGt.js → index-Bpn6x1So.js} +2 -2
- package/dist/{index-CHb5cxi8.js → index-BvTYVEEv.js} +1 -1
- package/dist/index-Bw9yypc4.js +2841 -0
- package/dist/{index-BVYQ8p6A.js → index-CN9NsUQ6.js} +2 -2
- package/dist/{index-JpY3wmeg.js → index-CO6WYRIS.js} +2 -2
- package/dist/{index-C90C1lUS.js → index-DJ0FV74Y.js} +1 -1
- package/dist/{index-CmToF3CG.js → index-DfQCaS0z.js} +3914 -3911
- package/dist/{index-DRQFmqYV.js → index-Gt21FARO.js} +2 -2
- package/dist/index.js +1 -1
- package/dist/pages.js +1 -1
- package/dist/z-team-component.css +2 -2
- package/package.json +1 -2
- package/dist/SystemShell-BbREgRq8.js +0 -637
- package/dist/index-9w4zGIUG.js +0 -2826
|
@@ -0,0 +1,907 @@
|
|
|
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
|
+
};
|