@yuku123/z-team-component 0.2.78 → 0.2.80
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/{menuPermission-CO2KgDX8.js → menuPermission-D9NGpBZP.js} +1 -1
- package/dist/pages.js +1 -1
- package/dist/z-team-component.css +2 -2
- package/package.json +1 -1
- package/dist/ChangeLogView-_bRZ55Yi.js +0 -542
- package/dist/ComponentDoc-Aw4QY8oI.js +0 -3998
- package/dist/InvitationManagementPage-Bv0ys--k.js +0 -495
- package/dist/OnboardingPage-B7274ITW.js +0 -393
- package/dist/ScheduledTasks-cc8n9giN.js +0 -9406
- package/dist/SystemShell-CPGtmxXl.js +0 -689
- package/dist/_commonjsHelpers-B52_cu2H.js +0 -26
- package/dist/api-B2APc1an.js +0 -20
- package/dist/api-CIhVblfa.js +0 -2155
- package/dist/browser-jb_PFvU3.js +0 -1538
- package/dist/createWorkspaceWsHandler-BWP5S5X3.js +0 -12951
- package/dist/ctc-sso-DtJHC-2M.js +0 -117
- package/dist/echarts-B1OU1xr4.js +0 -16
- package/dist/history-BlrA1eaW.js +0 -41
- package/dist/index-51d5011I.js +0 -178
- package/dist/index-62K6U_D_.js +0 -574
- package/dist/index-ACANAhdd.js +0 -242
- package/dist/index-B_LJRFsK.js +0 -339
- package/dist/index-BgIheStI.js +0 -133
- package/dist/index-BohoJQPr.js +0 -7631
- package/dist/index-Bpi_ysgC.js +0 -914
- package/dist/index-BwyN94l7.js +0 -9567
- package/dist/index-BydWNuk5.js +0 -1229
- package/dist/index-C6FYNbSB.js +0 -118
- package/dist/index-C815hPWS.js +0 -430
- package/dist/index-CNcX0oSU.js +0 -112
- package/dist/index-CUVdeb8y.js +0 -638
- package/dist/index-CijskN6t.js +0 -316
- package/dist/index-Cvx6rrxD.js +0 -956
- package/dist/index-Cwr5Slv1.js +0 -480
- package/dist/index-CxFAICql.js +0 -42050
- package/dist/index-D2cy0jVs.js +0 -1143
- package/dist/index-DGbL_CMP.js +0 -137
- package/dist/index-DK70mOTz.js +0 -143
- package/dist/index-DT80Pwa_.js +0 -5893
- package/dist/index-DWsfQMp8.js +0 -208
- package/dist/index-DhDdFRHC.js +0 -279
- package/dist/index-Dm3wmB0K.js +0 -435
- package/dist/index-DvBDj0ul.js +0 -93
- package/dist/index-DzS6-D3M.js +0 -1640
- package/dist/index-Xn84wLNu.js +0 -2700
- package/dist/index-_9zO-72Q.js +0 -2908
- package/dist/index-cdB5K3gx.js +0 -814
- package/dist/index-nU-V276i.js +0 -170
- package/dist/index-uF04Ucsi.js +0 -8
- package/dist/index.js +0 -10
- package/dist/index.module-CAa-2T7m.js +0 -72
- package/dist/index.module-UI0iz8K0.js +0 -42
package/dist/index-ACANAhdd.js
DELETED
|
@@ -1,242 +0,0 @@
|
|
|
1
|
-
import { jsx as e, jsxs as n } from "react/jsx-runtime";
|
|
2
|
-
import { Navigate as i, useLocation as b } from "react-router-dom";
|
|
3
|
-
import { Alert as u } from "antd";
|
|
4
|
-
import { DashboardOutlined as v, ClusterOutlined as r, ContainerOutlined as y, CloudServerOutlined as l, BranchesOutlined as O, RocketOutlined as g, AlertOutlined as k, FileTextOutlined as S, DatabaseOutlined as c, CloudOutlined as f, DeploymentUnitOutlined as z } from "@ant-design/icons";
|
|
5
|
-
import { W as P } from "./index-CNcX0oSU.js";
|
|
6
|
-
import { M as D } from "./ComponentDoc-Aw4QY8oI.js";
|
|
7
|
-
import "./index-BwyN94l7.js";
|
|
8
|
-
const a = "K8s 管理面的数据源在**独立运维平台 z-ops**:/z-team/ops/k8s/** 由 z-ops 仓的 z-ops-web 提供(K8sController 注册 /z-team/ops/k8s,HpaController 注册 /z-team/ops/k8s/hpa)。**z-opc 主壳不承载它**:主壳制品 BOOT-INF/lib 里 0 个 z-ops-*,主壳 nginx 路由总表里也没有^/z-team/ops 这条反代规则 ⇒ 实测 GET /z-team/ops/k8s/nodes 得到的是 SPA 兜底页(HTTP 200 + text/html + 451B,与必假路径逐字节相同),不是后端 JSON。该页面的真实入口在 z-ops 独立平台(集群内端口 8886,其前端路由 /ops/k8s)。", E = [
|
|
9
|
-
{
|
|
10
|
-
title: "DevOps 运维",
|
|
11
|
-
icon: /* @__PURE__ */ e(r, {}),
|
|
12
|
-
items: [
|
|
13
|
-
{
|
|
14
|
-
key: "devops-dashboard",
|
|
15
|
-
label: "运维总览",
|
|
16
|
-
icon: /* @__PURE__ */ e(v, {}),
|
|
17
|
-
path: "/ops/devops/dashboard",
|
|
18
|
-
desc: "集群概览与资源统计"
|
|
19
|
-
},
|
|
20
|
-
{
|
|
21
|
-
key: "devops-nodes",
|
|
22
|
-
label: "节点管理",
|
|
23
|
-
icon: /* @__PURE__ */ e(r, {}),
|
|
24
|
-
path: "/ops/devops/nodes",
|
|
25
|
-
desc: "K8s 节点列表与状态"
|
|
26
|
-
},
|
|
27
|
-
{
|
|
28
|
-
key: "devops-pods",
|
|
29
|
-
label: "Pod 管理",
|
|
30
|
-
icon: /* @__PURE__ */ e(y, {}),
|
|
31
|
-
path: "/ops/devops/pods",
|
|
32
|
-
desc: "Pod 列表、日志、终端"
|
|
33
|
-
},
|
|
34
|
-
{
|
|
35
|
-
key: "devops-hpa",
|
|
36
|
-
label: "弹性伸缩",
|
|
37
|
-
icon: /* @__PURE__ */ e(l, {}),
|
|
38
|
-
path: "/ops/devops/hpa",
|
|
39
|
-
desc: "HPA 自动扩缩容策略"
|
|
40
|
-
},
|
|
41
|
-
{
|
|
42
|
-
key: "devops-registry",
|
|
43
|
-
label: "镜像仓库",
|
|
44
|
-
icon: /* @__PURE__ */ e(l, {}),
|
|
45
|
-
path: "/ops/devops/registry",
|
|
46
|
-
desc: "容器镜像统一管理"
|
|
47
|
-
},
|
|
48
|
-
{
|
|
49
|
-
key: "devops-pipeline",
|
|
50
|
-
label: "流水线",
|
|
51
|
-
icon: /* @__PURE__ */ e(O, {}),
|
|
52
|
-
path: "/ops/devops/pipeline",
|
|
53
|
-
desc: "CI/CD 流水线编排"
|
|
54
|
-
},
|
|
55
|
-
{
|
|
56
|
-
key: "devops-release",
|
|
57
|
-
label: "发布管理",
|
|
58
|
-
icon: /* @__PURE__ */ e(g, {}),
|
|
59
|
-
path: "/ops/devops/release",
|
|
60
|
-
desc: "应用发布与回滚"
|
|
61
|
-
},
|
|
62
|
-
{
|
|
63
|
-
key: "devops-monitor",
|
|
64
|
-
label: "监控告警",
|
|
65
|
-
icon: /* @__PURE__ */ e(k, {}),
|
|
66
|
-
path: "/ops/devops/monitor",
|
|
67
|
-
desc: "Prometheus/Grafana 监控"
|
|
68
|
-
},
|
|
69
|
-
{
|
|
70
|
-
key: "devops-logs",
|
|
71
|
-
label: "日志管理",
|
|
72
|
-
icon: /* @__PURE__ */ e(S, {}),
|
|
73
|
-
path: "/ops/devops/logs",
|
|
74
|
-
desc: "Loki 集中日志查询"
|
|
75
|
-
},
|
|
76
|
-
{
|
|
77
|
-
key: "devops-dba",
|
|
78
|
-
label: "DBA 工单",
|
|
79
|
-
icon: /* @__PURE__ */ e(c, {}),
|
|
80
|
-
path: "/ops/devops/dba",
|
|
81
|
-
desc: "数据库运维工单"
|
|
82
|
-
}
|
|
83
|
-
]
|
|
84
|
-
},
|
|
85
|
-
{
|
|
86
|
-
title: "基础设施",
|
|
87
|
-
icon: /* @__PURE__ */ e(r, {}),
|
|
88
|
-
items: [
|
|
89
|
-
{
|
|
90
|
-
key: "ops-channel",
|
|
91
|
-
label: "渠道管理",
|
|
92
|
-
icon: /* @__PURE__ */ e(f, {}),
|
|
93
|
-
path: "/ops/channel",
|
|
94
|
-
desc: "部署渠道配置与管理"
|
|
95
|
-
},
|
|
96
|
-
{
|
|
97
|
-
key: "ops-env",
|
|
98
|
-
label: "环境管理",
|
|
99
|
-
icon: /* @__PURE__ */ e(l, {}),
|
|
100
|
-
path: "/ops/delivery",
|
|
101
|
-
desc: "运行环境配置与管理"
|
|
102
|
-
},
|
|
103
|
-
{
|
|
104
|
-
key: "ops-deploy",
|
|
105
|
-
label: "部署管理",
|
|
106
|
-
icon: /* @__PURE__ */ e(z, {}),
|
|
107
|
-
path: "/ops/deployment",
|
|
108
|
-
desc: "应用部署与发布管理"
|
|
109
|
-
},
|
|
110
|
-
{
|
|
111
|
-
key: "ops-repo",
|
|
112
|
-
label: "仓库管理",
|
|
113
|
-
icon: /* @__PURE__ */ e(c, {}),
|
|
114
|
-
path: "/ops/repo-mgmt",
|
|
115
|
-
desc: "代码仓库与镜像管理"
|
|
116
|
-
}
|
|
117
|
-
]
|
|
118
|
-
},
|
|
119
|
-
{
|
|
120
|
-
title: "资源管理",
|
|
121
|
-
icon: /* @__PURE__ */ e(l, {}),
|
|
122
|
-
items: [
|
|
123
|
-
{
|
|
124
|
-
key: "resource",
|
|
125
|
-
label: "资源管理",
|
|
126
|
-
icon: /* @__PURE__ */ e(l, {}),
|
|
127
|
-
path: "/resource/domain",
|
|
128
|
-
desc: "域名、ECS、RDS、OSS 管理"
|
|
129
|
-
}
|
|
130
|
-
]
|
|
131
|
-
}
|
|
132
|
-
];
|
|
133
|
-
function p({ label: o }) {
|
|
134
|
-
return /* @__PURE__ */ n("div", { style: { padding: 40, textAlign: "center", color: "#999" }, children: [
|
|
135
|
-
/* @__PURE__ */ n("h2", { children: [
|
|
136
|
-
"🚧 ",
|
|
137
|
-
o
|
|
138
|
-
] }),
|
|
139
|
-
/* @__PURE__ */ e("p", { children: "功能开发中..." })
|
|
140
|
-
] });
|
|
141
|
-
}
|
|
142
|
-
function t({ label: o, reason: d, message: h = "该页面未孵化,因为后端接口尚不可用" }) {
|
|
143
|
-
return /* @__PURE__ */ n("div", { style: { padding: 40, maxWidth: 720, margin: "0 auto" }, children: [
|
|
144
|
-
/* @__PURE__ */ n("h2", { style: { textAlign: "center" }, children: [
|
|
145
|
-
"🧪 ",
|
|
146
|
-
o
|
|
147
|
-
] }),
|
|
148
|
-
/* @__PURE__ */ e(
|
|
149
|
-
u,
|
|
150
|
-
{
|
|
151
|
-
type: "warning",
|
|
152
|
-
showIcon: !0,
|
|
153
|
-
message: h,
|
|
154
|
-
description: d
|
|
155
|
-
}
|
|
156
|
-
)
|
|
157
|
-
] });
|
|
158
|
-
}
|
|
159
|
-
function s({ label: o }) {
|
|
160
|
-
return /* @__PURE__ */ e(
|
|
161
|
-
t,
|
|
162
|
-
{
|
|
163
|
-
label: o,
|
|
164
|
-
message: "该页面未孵化,因为组件从来不在本仓",
|
|
165
|
-
reason: "组件从未迁进本仓:z-opc 的 src 目录下没有这个组件,历史上也没有任何提交 import 过它(OPS_ROUTES 里留着一个解析不到的标识符)。要恢复这一页,得先把组件从 z-ops 迁进来并接上它自己的后端;在那之前这里刻意不放假表格。"
|
|
166
|
-
}
|
|
167
|
-
);
|
|
168
|
-
}
|
|
169
|
-
function m() {
|
|
170
|
-
const { pathname: o } = b();
|
|
171
|
-
return /* @__PURE__ */ e(i, { to: `${o}?mode=middleware`, replace: !0 });
|
|
172
|
-
}
|
|
173
|
-
const A = [...D, "/script"], T = [
|
|
174
|
-
// ─── 运维中心 ───
|
|
175
|
-
// ⚠ 这一族路由的组件从来没有从 z-ops 迁进来(见 UnmigratedPage 注释)。原先直接写
|
|
176
|
-
// <ChannelPage/> 之类会在**模块求值期**抛 ReferenceError 并白屏整个前端,不是只坏这一页。
|
|
177
|
-
{ path: "/ops", element: /* @__PURE__ */ e(i, { to: "/ops/devops", replace: !0 }) },
|
|
178
|
-
{ path: "/ops/channel", element: /* @__PURE__ */ e(s, { label: "渠道管理" }) },
|
|
179
|
-
{ path: "/ops/delivery", element: /* @__PURE__ */ e(s, { label: "环境管理" }) },
|
|
180
|
-
{ path: "/ops/deployment", element: /* @__PURE__ */ e(s, { label: "部署管理" }) },
|
|
181
|
-
{ path: "/ops/deployment/:id", element: /* @__PURE__ */ e(s, { label: "部署管理" }) },
|
|
182
|
-
{ path: "/ops/repo-mgmt", element: /* @__PURE__ */ e(s, { label: "仓库管理" }) },
|
|
183
|
-
{ path: "/ops/git-platform", element: /* @__PURE__ */ e(s, { label: "仓库管理" }) },
|
|
184
|
-
// ─── DevOps 子路由(K8s 管理面:**本宿主不承载** ⇒ 显式占位,见 DEVOPS_MIGRATED_NOTE)───
|
|
185
|
-
// ⚠ 这 4 条原先挂的是真组件(OpsDashboard / K8sNodeList / K8sPodList / K8sHpaList),
|
|
186
|
-
// 而它们的 API_BASE = '/z-team/ops/k8s'(OpsK8s/api.ts)——
|
|
187
|
-
// **该前缀的 handler 在 z-ops 仓的 z-ops-web 里**(K8sController @RequestMapping("/z-team/ops/k8s")
|
|
188
|
-
// / HpaController @RequestMapping("/z-team/ops/k8s/hpa")),**不在 z-opc 主壳**:
|
|
189
|
-
// ① 主壳 boot jar 的 BOOT-INF/lib 里 0 个 z-ops-*;
|
|
190
|
-
// ② 主壳 nginx 路由总表里没有 `^/z-team/ops` 这条反代规则;
|
|
191
|
-
// ⇒ 生产实测 GET /z-team/ops/k8s/nodes → HTTP 200 + text/html + 451B
|
|
192
|
-
// (sha16 92c38b6b20edc50d,与必假路径逐字节相同)= **SPA 兜底页**。
|
|
193
|
-
// ⇒ 这 4 条是「菜单项点进去是页面、数据源在后端不存在」的**断头路**
|
|
194
|
-
// (卡 TASK-20261023-056 · ops-001~004)。
|
|
195
|
-
// ⇒ 修法 = **撤菜单项的落地形态**:不再渲染真组件、不再发任何打到 /z-team/ops 的请求,
|
|
196
|
-
// 改渲染显式占位并写明**实测到的堵点**与归属平台(口径见 003_辅助能力/
|
|
197
|
-
// frontend-incubation-audit/SKILL.md:占位不许写成空表/全 0 的假绿)。
|
|
198
|
-
// ⚠ 菜单项**保留**(不删条目):深链进来要有明确去处,而不是白屏或落回 SPA 兜底。
|
|
199
|
-
{ path: "/ops/devops", element: /* @__PURE__ */ e(t, { label: "DevOps 运维", reason: a, message: "该页面已迁至独立运维平台 z-ops,本宿主不承载" }) },
|
|
200
|
-
{ path: "/ops/devops/dashboard", element: /* @__PURE__ */ e(t, { label: "运维总览", reason: a, message: "该页面已迁至独立运维平台 z-ops,本宿主不承载" }) },
|
|
201
|
-
{ path: "/ops/devops/nodes", element: /* @__PURE__ */ e(t, { label: "节点管理", reason: a, message: "该页面已迁至独立运维平台 z-ops,本宿主不承载" }) },
|
|
202
|
-
{ path: "/ops/devops/pods", element: /* @__PURE__ */ e(t, { label: "Pod 管理", reason: a, message: "该页面已迁至独立运维平台 z-ops,本宿主不承载" }) },
|
|
203
|
-
{ path: "/ops/devops/hpa", element: /* @__PURE__ */ e(t, { label: "弹性伸缩", reason: a, message: "该页面已迁至独立运维平台 z-ops,本宿主不承载" }) },
|
|
204
|
-
{ path: "/ops/devops/registry", element: /* @__PURE__ */ e(p, { label: "镜像仓库" }) },
|
|
205
|
-
{ path: "/ops/devops/pipeline", element: /* @__PURE__ */ e(p, { label: "流水线" }) },
|
|
206
|
-
{ path: "/ops/devops/release", element: /* @__PURE__ */ e(p, { label: "发布管理" }) },
|
|
207
|
-
{ path: "/ops/devops/monitor", element: /* @__PURE__ */ e(p, { label: "监控告警" }) },
|
|
208
|
-
{ path: "/ops/devops/logs", element: /* @__PURE__ */ e(p, { label: "日志管理" }) },
|
|
209
|
-
{ path: "/ops/devops/dba", element: /* @__PURE__ */ e(p, { label: "DBA 工单" }) },
|
|
210
|
-
// ─── 资源管理 ───
|
|
211
|
-
{ path: "/resource", element: /* @__PURE__ */ e(i, { to: "/resource/domain", replace: !0 }) },
|
|
212
|
-
{ path: "/resource/domain", element: /* @__PURE__ */ e(s, { label: "域名管理" }) },
|
|
213
|
-
{ path: "/resource/ecs", element: /* @__PURE__ */ e(s, { label: "ECS 管理" }) },
|
|
214
|
-
{ path: "/resource/rds", element: /* @__PURE__ */ e(s, { label: "RDS 管理" }) },
|
|
215
|
-
{ path: "/resource/oss", element: /* @__PURE__ */ e(s, { label: "OSS 管理" }) },
|
|
216
|
-
// ─── 已迁到中间件面的前缀 → 旧深链交还中间件面 ───
|
|
217
|
-
// ⚠ 必须排在最后:matchWorkbenchPath 先全表精确、再全表通配,
|
|
218
|
-
// 但本面自己的 /ops/* 与 /resource/* 都在前面,不会被这几条吃掉。
|
|
219
|
-
...A.flatMap((o) => [
|
|
220
|
-
{ path: o, element: /* @__PURE__ */ e(m, {}) },
|
|
221
|
-
{ path: `${o}/*`, element: /* @__PURE__ */ e(m, {}) }
|
|
222
|
-
])
|
|
223
|
-
];
|
|
224
|
-
function U({
|
|
225
|
-
activePathOverride: o,
|
|
226
|
-
menuOnly: d = !1
|
|
227
|
-
} = {}) {
|
|
228
|
-
return /* @__PURE__ */ e(
|
|
229
|
-
P,
|
|
230
|
-
{
|
|
231
|
-
groups: E,
|
|
232
|
-
routes: T,
|
|
233
|
-
mode: "ops",
|
|
234
|
-
emptyText: "请从左侧菜单选择运维模块",
|
|
235
|
-
activePathOverride: o,
|
|
236
|
-
menuOnly: d
|
|
237
|
-
}
|
|
238
|
-
);
|
|
239
|
-
}
|
|
240
|
-
export {
|
|
241
|
-
U as default
|
|
242
|
-
};
|
package/dist/index-B_LJRFsK.js
DELETED
|
@@ -1,339 +0,0 @@
|
|
|
1
|
-
import { jsxs as r, jsx as n } from "react/jsx-runtime";
|
|
2
|
-
import { useState as o, useEffect as m, useCallback as k, useMemo as M } from "react";
|
|
3
|
-
import { h as l } from "./history-BlrA1eaW.js";
|
|
4
|
-
import { f as N, p as v, L as d, M as S, A as C, a as O, b as W } from "./index-DWsfQMp8.js";
|
|
5
|
-
const R = "_page_15tgf_8", E = "_bgWash_15tgf_48", F = "_bgGrid_15tgf_59", G = "_navbar_15tgf_74", z = "_navInner_15tgf_84", H = "_navBrand_15tgf_95", Z = "_navMark_15tgf_102", $ = "_navBrandText_15tgf_116", U = "_navBack_15tgf_123", K = "_hero_15tgf_143", j = "_eyebrow_15tgf_151", X = "_eyebrowDot_15tgf_166", Q = "_heroTitle_15tgf_174", V = "_heroLead_15tgf_183", q = "_grid_15tgf_192", J = "_card_15tgf_203", Y = "_cardFocused_15tgf_219", ee = "_cardHead_15tgf_224", ae = "_cardIcon_15tgf_230", ne = "_cardHeadText_15tgf_243", te = "_cardTitle_15tgf_248", re = "_cardEn_15tgf_256", se = "_cardBadges_15tgf_262", ce = "_badge_15tgf_270", oe = "_badgeDevice_15tgf_271", de = "_badge_ready_15tgf_286", ie = "_badge_beta_15tgf_292", le = "_badge_soon_15tgf_298", _e = "_badge_free_15tgf_304", ge = "_badge_instant_15tgf_310", me = "_cardDesc_15tgf_316", he = "_metaRow_15tgf_323", be = "_metaItem_15tgf_330", fe = "_changelog_15tgf_343", ue = "_changelogLabel_15tgf_351", ke = "_changelogText_15tgf_358", Ne = "_steps_15tgf_365", ve = "_cardAction_15tgf_381", we = "_btnPrimary_15tgf_385", ye = "_btnGhost_15tgf_386", pe = "_btnDisabled_15tgf_387", Te = "_cardNote_15tgf_432", Ae = "_footer_15tgf_439", Pe = "_footerLink_15tgf_455", e = {
|
|
6
|
-
page: R,
|
|
7
|
-
bgWash: E,
|
|
8
|
-
bgGrid: F,
|
|
9
|
-
navbar: G,
|
|
10
|
-
navInner: z,
|
|
11
|
-
navBrand: H,
|
|
12
|
-
navMark: Z,
|
|
13
|
-
navBrandText: $,
|
|
14
|
-
navBack: U,
|
|
15
|
-
hero: K,
|
|
16
|
-
eyebrow: j,
|
|
17
|
-
eyebrowDot: X,
|
|
18
|
-
heroTitle: Q,
|
|
19
|
-
heroLead: V,
|
|
20
|
-
grid: q,
|
|
21
|
-
card: J,
|
|
22
|
-
cardFocused: Y,
|
|
23
|
-
cardHead: ee,
|
|
24
|
-
cardIcon: ae,
|
|
25
|
-
cardHeadText: ne,
|
|
26
|
-
cardTitle: te,
|
|
27
|
-
cardEn: re,
|
|
28
|
-
cardBadges: se,
|
|
29
|
-
badge: ce,
|
|
30
|
-
badgeDevice: oe,
|
|
31
|
-
badge_ready: de,
|
|
32
|
-
badge_beta: ie,
|
|
33
|
-
badge_soon: le,
|
|
34
|
-
badge_free: _e,
|
|
35
|
-
badge_instant: ge,
|
|
36
|
-
cardDesc: me,
|
|
37
|
-
metaRow: he,
|
|
38
|
-
metaItem: be,
|
|
39
|
-
changelog: fe,
|
|
40
|
-
changelogLabel: ue,
|
|
41
|
-
changelogText: ke,
|
|
42
|
-
steps: Ne,
|
|
43
|
-
cardAction: ve,
|
|
44
|
-
btnPrimary: we,
|
|
45
|
-
btnGhost: ye,
|
|
46
|
-
btnDisabled: pe,
|
|
47
|
-
cardNote: Te,
|
|
48
|
-
footer: Ae,
|
|
49
|
-
footerLink: Pe
|
|
50
|
-
}, Le = {
|
|
51
|
-
ready: "正式版",
|
|
52
|
-
beta: "内测中",
|
|
53
|
-
soon: "即将发布",
|
|
54
|
-
free: "免安装",
|
|
55
|
-
instant: "即刻可用"
|
|
56
|
-
}, g = [
|
|
57
|
-
{
|
|
58
|
-
key: "macos",
|
|
59
|
-
icon: "laptop",
|
|
60
|
-
name: "macOS 桌面客户端",
|
|
61
|
-
en: "Z-OPC 桌面端 · Apple Silicon",
|
|
62
|
-
state: "ready",
|
|
63
|
-
desc: "本地 Agent 沙箱、火箭跳转、自动更新。桌面端与生产 Agent 集群双向打通,敏感操作不出本地。"
|
|
64
|
-
},
|
|
65
|
-
{
|
|
66
|
-
key: "windows",
|
|
67
|
-
icon: "windows",
|
|
68
|
-
name: "Windows 桌面客户端",
|
|
69
|
-
en: "Z-OPC 桌面端 · Windows 10+",
|
|
70
|
-
state: "ready",
|
|
71
|
-
desc: "与 macOS 同源交付:本地 Agent 沙箱、火箭跳转、自动更新一套不打折。安装包为 x64 setup 格式。"
|
|
72
|
-
},
|
|
73
|
-
{
|
|
74
|
-
key: "ios",
|
|
75
|
-
icon: "phone",
|
|
76
|
-
name: "iOS App",
|
|
77
|
-
en: "Z-OPC · iPhone / iPad",
|
|
78
|
-
state: "beta",
|
|
79
|
-
desc: "iOS 版通过 TestFlight 分发内测版本,测试通过后上架 App Store。后续版本由 TestFlight 自动推送。"
|
|
80
|
-
},
|
|
81
|
-
{
|
|
82
|
-
key: "android",
|
|
83
|
-
icon: "bot",
|
|
84
|
-
name: "Android App",
|
|
85
|
-
en: "Z-OPC · APK 直装包",
|
|
86
|
-
state: "soon",
|
|
87
|
-
desc: "APK 直装包,支持手机浏览器直接下载安装。若提示「未知来源」,需在系统设置中允许浏览器安装应用。"
|
|
88
|
-
},
|
|
89
|
-
{
|
|
90
|
-
key: "web",
|
|
91
|
-
icon: "globe",
|
|
92
|
-
name: "Web 版",
|
|
93
|
-
en: "浏览器 · 全平台",
|
|
94
|
-
state: "free",
|
|
95
|
-
desc: "无需安装,浏览器直接进入完整工作台。手机浏览器自动进入移动端界面,数据与客户端完全同步。"
|
|
96
|
-
},
|
|
97
|
-
{
|
|
98
|
-
key: "cli",
|
|
99
|
-
icon: "terminal",
|
|
100
|
-
name: "CLI Agent",
|
|
101
|
-
en: "claude-code 等多运行时",
|
|
102
|
-
state: "instant",
|
|
103
|
-
desc: "接入既有 CLI 运行时,在命令行里把任务交给 Agent 执行,结论回到会话。详见操作手册的接入章节。"
|
|
104
|
-
}
|
|
105
|
-
];
|
|
106
|
-
function De(s, c) {
|
|
107
|
-
return c && c.releaseType === "beta" ? "beta" : s.state;
|
|
108
|
-
}
|
|
109
|
-
function Ie(s, c) {
|
|
110
|
-
return c && c.releaseType === "beta" ? "内测版" : Le[s.state];
|
|
111
|
-
}
|
|
112
|
-
function xe() {
|
|
113
|
-
const s = navigator.userAgent;
|
|
114
|
-
return /iPad|iPhone|iPod/.test(s) ? "ios" : /Android/i.test(s) ? "android" : /Mac OS X|Macintosh/.test(s) ? "macos" : "web";
|
|
115
|
-
}
|
|
116
|
-
function w() {
|
|
117
|
-
if (typeof window > "u") return null;
|
|
118
|
-
const s = new URLSearchParams(window.location.search).get("platform");
|
|
119
|
-
return s && g.some((c) => c.key === s) ? s : null;
|
|
120
|
-
}
|
|
121
|
-
function We() {
|
|
122
|
-
const [s, c] = o(null), [h, y] = o(null), [b, f] = o(!1), [p, u] = o(!1), [_, T] = o(
|
|
123
|
-
w
|
|
124
|
-
), [A, Be] = o(() => xe());
|
|
125
|
-
m(() => {
|
|
126
|
-
let a = !0;
|
|
127
|
-
return N(S).then((t) => {
|
|
128
|
-
a && (c(t), f(!0));
|
|
129
|
-
}).catch(() => a && f(!0)), N(C).then((t) => {
|
|
130
|
-
a && (y(t), u(!0));
|
|
131
|
-
}).catch(() => a && u(!0)), () => {
|
|
132
|
-
a = !1;
|
|
133
|
-
};
|
|
134
|
-
}, []), m(() => {
|
|
135
|
-
const a = () => T(w());
|
|
136
|
-
return window.addEventListener("popstate", a), () => window.removeEventListener("popstate", a);
|
|
137
|
-
}, []), m(() => {
|
|
138
|
-
if (!_) return;
|
|
139
|
-
const a = document.getElementById(`dl-${_}`);
|
|
140
|
-
if (!a) return;
|
|
141
|
-
const t = window.setTimeout(
|
|
142
|
-
() => a.scrollIntoView({ behavior: "smooth", block: "center" }),
|
|
143
|
-
120
|
|
144
|
-
);
|
|
145
|
-
return () => window.clearTimeout(t);
|
|
146
|
-
}, [_]);
|
|
147
|
-
const P = k(() => {
|
|
148
|
-
const a = /iPad|iPhone|iPod|Android/i.test(navigator.userAgent);
|
|
149
|
-
l.push(a ? "/phone" : "/workspace");
|
|
150
|
-
}, []), i = k(
|
|
151
|
-
(a) => a === "macos" ? v(s, "macos") : a === "windows" ? v(s, "windows") : a === "android" ? h : null,
|
|
152
|
-
[s, h]
|
|
153
|
-
), L = (a) => {
|
|
154
|
-
const t = i(a.key);
|
|
155
|
-
return a.key === "macos" ? t ? /* @__PURE__ */ r(
|
|
156
|
-
"a",
|
|
157
|
-
{
|
|
158
|
-
className: e.btnPrimary,
|
|
159
|
-
href: t.downloadUrl,
|
|
160
|
-
target: "_blank",
|
|
161
|
-
rel: "noreferrer",
|
|
162
|
-
children: [
|
|
163
|
-
/* @__PURE__ */ n(d, { name: "download", size: 15, strokeWidth: 2 }),
|
|
164
|
-
"下载 DMG · v",
|
|
165
|
-
t.version
|
|
166
|
-
]
|
|
167
|
-
}
|
|
168
|
-
) : /* @__PURE__ */ n("button", { className: e.btnDisabled, disabled: !0, children: b ? "版本清单未获取" : "版本清单加载中…" }) : a.key === "windows" ? t ? /* @__PURE__ */ r(
|
|
169
|
-
"a",
|
|
170
|
-
{
|
|
171
|
-
className: e.btnPrimary,
|
|
172
|
-
href: t.downloadUrl,
|
|
173
|
-
target: "_blank",
|
|
174
|
-
rel: "noreferrer",
|
|
175
|
-
children: [
|
|
176
|
-
/* @__PURE__ */ n(d, { name: "download", size: 15, strokeWidth: 2 }),
|
|
177
|
-
"下载 Windows 版 · v",
|
|
178
|
-
t.version
|
|
179
|
-
]
|
|
180
|
-
}
|
|
181
|
-
) : /* @__PURE__ */ n("button", { className: e.btnDisabled, disabled: !0, children: b ? "版本清单未获取" : "版本清单加载中…" }) : a.key === "android" ? t ? /* @__PURE__ */ r(
|
|
182
|
-
"a",
|
|
183
|
-
{
|
|
184
|
-
className: e.btnPrimary,
|
|
185
|
-
href: t.downloadUrl,
|
|
186
|
-
target: "_blank",
|
|
187
|
-
rel: "noreferrer",
|
|
188
|
-
children: [
|
|
189
|
-
/* @__PURE__ */ n(d, { name: "download", size: 15, strokeWidth: 2 }),
|
|
190
|
-
"下载 APK · v",
|
|
191
|
-
t.version
|
|
192
|
-
]
|
|
193
|
-
}
|
|
194
|
-
) : /* @__PURE__ */ n("button", { className: e.btnDisabled, disabled: !0, children: p ? "即将发布 · 敬请期待" : "版本清单加载中…" }) : a.key === "ios" ? /* @__PURE__ */ n("button", { className: e.btnDisabled, disabled: !0, children: "内测资格申请中 · 敬请期待" }) : a.key === "web" ? /* @__PURE__ */ r("button", { className: e.btnPrimary, onClick: P, children: [
|
|
195
|
-
/* @__PURE__ */ n(d, { name: "arrow", size: 15, strokeWidth: 2 }),
|
|
196
|
-
"立即进入工作台"
|
|
197
|
-
] }) : a.key === "cli" ? /* @__PURE__ */ n(
|
|
198
|
-
"button",
|
|
199
|
-
{
|
|
200
|
-
className: e.btnGhost,
|
|
201
|
-
onClick: () => l.push("/docs"),
|
|
202
|
-
children: "查看接入方式"
|
|
203
|
-
}
|
|
204
|
-
) : /* @__PURE__ */ n("button", { className: e.btnDisabled, disabled: !0, children: "安装包制作中" });
|
|
205
|
-
}, D = (a) => {
|
|
206
|
-
const t = i(a.key);
|
|
207
|
-
return t ? /* @__PURE__ */ r("div", { className: e.metaRow, children: [
|
|
208
|
-
/* @__PURE__ */ r("span", { className: e.metaItem, children: [
|
|
209
|
-
/* @__PURE__ */ n(d, { name: "check", size: 13, strokeWidth: 2.2 }),
|
|
210
|
-
"v",
|
|
211
|
-
t.version
|
|
212
|
-
] }),
|
|
213
|
-
t.fileSize > 0 && /* @__PURE__ */ n("span", { className: e.metaItem, children: O(t.fileSize) }),
|
|
214
|
-
t.releaseTime && /* @__PURE__ */ n("span", { className: e.metaItem, children: W(t.releaseTime) }),
|
|
215
|
-
t.arch && /* @__PURE__ */ n("span", { className: e.metaItem, children: t.arch })
|
|
216
|
-
] }) : null;
|
|
217
|
-
}, I = M(
|
|
218
|
-
() => g.filter((a) => a.key === "web" || a.key === "cli" ? !0 : !!i(a.key)).length,
|
|
219
|
-
[i]
|
|
220
|
-
);
|
|
221
|
-
return /* @__PURE__ */ r("div", { className: e.page, children: [
|
|
222
|
-
/* @__PURE__ */ n("div", { className: e.bgWash }),
|
|
223
|
-
/* @__PURE__ */ n("div", { className: e.bgGrid }),
|
|
224
|
-
/* @__PURE__ */ n("nav", { className: e.navbar, children: /* @__PURE__ */ r("div", { className: e.navInner, children: [
|
|
225
|
-
/* @__PURE__ */ r(
|
|
226
|
-
"div",
|
|
227
|
-
{
|
|
228
|
-
className: e.navBrand,
|
|
229
|
-
onClick: () => l.push("/welcome"),
|
|
230
|
-
role: "button",
|
|
231
|
-
tabIndex: 0,
|
|
232
|
-
children: [
|
|
233
|
-
/* @__PURE__ */ n("span", { className: e.navMark, children: "ZO" }),
|
|
234
|
-
/* @__PURE__ */ n("span", { className: e.navBrandText, children: "Z-OPC" })
|
|
235
|
-
]
|
|
236
|
-
}
|
|
237
|
-
),
|
|
238
|
-
/* @__PURE__ */ n(
|
|
239
|
-
"button",
|
|
240
|
-
{
|
|
241
|
-
className: e.navBack,
|
|
242
|
-
onClick: () => l.push("/welcome"),
|
|
243
|
-
children: "返回产品首页"
|
|
244
|
-
}
|
|
245
|
-
)
|
|
246
|
-
] }) }),
|
|
247
|
-
/* @__PURE__ */ r("header", { className: e.hero, children: [
|
|
248
|
-
/* @__PURE__ */ r("span", { className: e.eyebrow, children: [
|
|
249
|
-
/* @__PURE__ */ n("span", { className: e.eyebrowDot }),
|
|
250
|
-
"下载中心"
|
|
251
|
-
] }),
|
|
252
|
-
/* @__PURE__ */ n("h1", { className: e.heroTitle, children: "全平台客户端" }),
|
|
253
|
-
/* @__PURE__ */ r("p", { className: e.heroLead, children: [
|
|
254
|
-
g.length,
|
|
255
|
-
" 个终端、同一条消息协议、同一套账号。 桌面端跑本地 Agent,移动端随手跟进,Web 与 CLI 随时接入。 当前 ",
|
|
256
|
-
I,
|
|
257
|
-
" 个终端可直接下载或使用。"
|
|
258
|
-
] })
|
|
259
|
-
] }),
|
|
260
|
-
/* @__PURE__ */ n("main", { className: e.grid, children: g.map((a) => {
|
|
261
|
-
const t = i(a.key), x = a.key === A, B = _ === a.key;
|
|
262
|
-
return /* @__PURE__ */ r(
|
|
263
|
-
"section",
|
|
264
|
-
{
|
|
265
|
-
id: `dl-${a.key}`,
|
|
266
|
-
className: `${e.card} ${B ? e.cardFocused : ""}`,
|
|
267
|
-
children: [
|
|
268
|
-
/* @__PURE__ */ r("div", { className: e.cardHead, children: [
|
|
269
|
-
/* @__PURE__ */ n("span", { className: e.cardIcon, children: /* @__PURE__ */ n(
|
|
270
|
-
d,
|
|
271
|
-
{
|
|
272
|
-
name: a.icon,
|
|
273
|
-
size: 21,
|
|
274
|
-
strokeWidth: 1.8
|
|
275
|
-
}
|
|
276
|
-
) }),
|
|
277
|
-
/* @__PURE__ */ r("div", { className: e.cardHeadText, children: [
|
|
278
|
-
/* @__PURE__ */ n("h2", { className: e.cardTitle, children: a.name }),
|
|
279
|
-
/* @__PURE__ */ n("div", { className: e.cardEn, children: a.en })
|
|
280
|
-
] }),
|
|
281
|
-
/* @__PURE__ */ r("div", { className: e.cardBadges, children: [
|
|
282
|
-
x && /* @__PURE__ */ n("span", { className: e.badgeDevice, children: "当前设备" }),
|
|
283
|
-
/* @__PURE__ */ n(
|
|
284
|
-
"span",
|
|
285
|
-
{
|
|
286
|
-
className: `${e.badge} ${e[`badge_${De(a, t)}`]}`,
|
|
287
|
-
children: Ie(a, t)
|
|
288
|
-
}
|
|
289
|
-
)
|
|
290
|
-
] })
|
|
291
|
-
] }),
|
|
292
|
-
/* @__PURE__ */ n("p", { className: e.cardDesc, children: a.desc }),
|
|
293
|
-
D(a),
|
|
294
|
-
(t == null ? void 0 : t.changelog) && /* @__PURE__ */ r("div", { className: e.changelog, children: [
|
|
295
|
-
/* @__PURE__ */ n("span", { className: e.changelogLabel, children: "本次更新" }),
|
|
296
|
-
/* @__PURE__ */ n("p", { className: e.changelogText, children: t.changelog })
|
|
297
|
-
] }),
|
|
298
|
-
a.key === "ios" && /* @__PURE__ */ r("ol", { className: e.steps, children: [
|
|
299
|
-
/* @__PURE__ */ r("li", { children: [
|
|
300
|
-
"在 App Store 搜索并安装",
|
|
301
|
-
" ",
|
|
302
|
-
/* @__PURE__ */ n("b", { children: "TestFlight" }),
|
|
303
|
-
"(苹果官方测试平台)"
|
|
304
|
-
] }),
|
|
305
|
-
/* @__PURE__ */ r("li", { children: [
|
|
306
|
-
"用 iPhone 打开",
|
|
307
|
-
/* @__PURE__ */ n("b", { children: "邀请链接" }),
|
|
308
|
-
",点击「接受」 加入内测"
|
|
309
|
-
] }),
|
|
310
|
-
/* @__PURE__ */ r("li", { children: [
|
|
311
|
-
"在 TestFlight 中安装 Z-OPC,后续版本",
|
|
312
|
-
/* @__PURE__ */ n("b", { children: "自动推送" })
|
|
313
|
-
] })
|
|
314
|
-
] }),
|
|
315
|
-
/* @__PURE__ */ n("div", { className: e.cardAction, children: L(a) }),
|
|
316
|
-
a.key === "macos" && /* @__PURE__ */ n("p", { className: e.cardNote, children: "下载后拖入「应用程序」即可使用,客户端支持自动检查更新" }),
|
|
317
|
-
a.key === "web" && /* @__PURE__ */ n("p", { className: e.cardNote, children: "平台 SSO 登录后使用,数据与客户端完全同步" }),
|
|
318
|
-
a.key === "android" && /* @__PURE__ */ n("p", { className: e.cardNote, children: "建议用手机浏览器打开本页直接下载安装" })
|
|
319
|
-
]
|
|
320
|
-
},
|
|
321
|
-
a.key
|
|
322
|
-
);
|
|
323
|
-
}) }),
|
|
324
|
-
/* @__PURE__ */ r("footer", { className: e.footer, children: [
|
|
325
|
-
/* @__PURE__ */ n("span", { children: "© 2026 Z-OPC · 一人公司基建" }),
|
|
326
|
-
/* @__PURE__ */ n(
|
|
327
|
-
"button",
|
|
328
|
-
{
|
|
329
|
-
className: e.footerLink,
|
|
330
|
-
onClick: () => l.push("/welcome"),
|
|
331
|
-
children: "返回产品首页"
|
|
332
|
-
}
|
|
333
|
-
)
|
|
334
|
-
] })
|
|
335
|
-
] });
|
|
336
|
-
}
|
|
337
|
-
export {
|
|
338
|
-
We as default
|
|
339
|
-
};
|