@akiraka/quark-big-screen-ui 0.1.4 → 0.1.6

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/README.md CHANGED
@@ -10,6 +10,18 @@ The single visual source for Quark big-screen cards. `QuarkAi` and `QuarkNovo` m
10
10
 
11
11
  It deliberately excludes application routing, authentication, API/SSE fetching, and either application's general UI library.
12
12
 
13
+ ## Editor preview data
14
+
15
+ Use the package fixture in an editor preview; do not create a second mock-data set in the consuming application.
16
+
17
+ ```ts
18
+ import { getBigScreenPreviewData } from '@akiraka/quark-big-screen-ui'
19
+
20
+ const data = getBigScreenPreviewData('alert_latest')
21
+ ```
22
+
23
+ `getBigScreenPreviewData()` returns a fresh copy. It is only for preview rendering and must never be used as runtime fallback data.
24
+
13
25
  ## Release policy
14
26
 
15
27
  Publish a new version whenever a shared visual component changes. Upgrade both consumers to the same version and run visual checks at 1920×1080 and 3440×1440.
@@ -0,0 +1,33 @@
1
+ export interface BigScreenDutyUser {
2
+ userId: number | string;
3
+ nickName?: string;
4
+ username?: string;
5
+ }
6
+ export interface BigScreenDutyGroup {
7
+ groupId: number | string;
8
+ groupName: string;
9
+ users: BigScreenDutyUser[];
10
+ }
11
+ type __VLS_Props = {
12
+ /** Compact single-person presentation used by an operational runtime screen. */
13
+ compact?: boolean;
14
+ personName?: string;
15
+ personPhone?: string;
16
+ personTag?: string;
17
+ date?: string;
18
+ totalGroups?: number;
19
+ totalUsers?: number;
20
+ groups?: BigScreenDutyGroup[];
21
+ };
22
+ declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
23
+ compact: boolean;
24
+ personName: string;
25
+ personPhone: string;
26
+ personTag: string;
27
+ date: string;
28
+ totalGroups: number;
29
+ totalUsers: number;
30
+ groups: BigScreenDutyGroup[];
31
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
32
+ export default _default;
33
+ //# sourceMappingURL=BigScreenDutyContent.vue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BigScreenDutyContent.vue.d.ts","sourceRoot":"","sources":["../../src/components/BigScreenDutyContent.vue"],"names":[],"mappings":"AAmEA,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAA;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAA;IACxB,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,iBAAiB,EAAE,CAAA;CAC3B;AAED,KAAK,WAAW,GAAG;IACjB,gFAAgF;IAChF,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,MAAM,CAAC,EAAE,kBAAkB,EAAE,CAAA;CAC9B,CAAC;;aARU,OAAO;gBACJ,MAAM;iBACL,MAAM;eACR,MAAM;UACX,MAAM;iBACC,MAAM;gBACP,MAAM;YACV,kBAAkB,EAAE;;AAqL/B,wBAOG"}
@@ -1,4 +1,183 @@
1
- import { BigScreenPreviewFixtures } from '../types';
2
- /** Stable, representative data for editor previews. Never use it at runtime. */
3
- export declare const bigScreenPreviewFixtures: BigScreenPreviewFixtures;
1
+ /**
2
+ * Stable, representative data for editor previews.
3
+ *
4
+ * These objects contain no runtime state or customer data. Consumers must use
5
+ * `getBigScreenPreviewData()` instead of mutating this constant directly.
6
+ */
7
+ export declare const bigScreenPreviewFixtures: {
8
+ readonly screen_header: {
9
+ readonly dateText: "2026-07-27";
10
+ readonly timeText: "14:30";
11
+ readonly weekdayText: "星期一";
12
+ };
13
+ readonly robot: {
14
+ readonly status: "online";
15
+ readonly mode: "guard";
16
+ readonly emotion: "neutral";
17
+ readonly generatedAt: "2026-07-27 14:30:00";
18
+ readonly summary: {
19
+ readonly dutyGroups: 3;
20
+ readonly todayAlerts: 12;
21
+ readonly buildingCount: 4;
22
+ readonly endpointNodes: 86;
23
+ };
24
+ readonly alerts: {
25
+ readonly todayTotal: 12;
26
+ readonly todayPending: 3;
27
+ readonly criticalCount: 1;
28
+ readonly warningCount: 5;
29
+ };
30
+ readonly builds: {
31
+ readonly buildingCount: 4;
32
+ readonly todayBuilds: 28;
33
+ readonly successRate: 98.6;
34
+ };
35
+ };
36
+ readonly duty_today: {
37
+ readonly date: "2026-07-27";
38
+ readonly totalGroups: 3;
39
+ readonly totalUsers: 8;
40
+ readonly groups: readonly [{
41
+ readonly groupId: 1;
42
+ readonly groupName: "平台组";
43
+ readonly users: readonly [{
44
+ readonly userId: 101;
45
+ readonly nickName: "张工";
46
+ readonly username: "zhang";
47
+ }, {
48
+ readonly userId: 102;
49
+ readonly nickName: "李工";
50
+ readonly username: "li";
51
+ }];
52
+ }, {
53
+ readonly groupId: 2;
54
+ readonly groupName: "网络组";
55
+ readonly users: readonly [{
56
+ readonly userId: 103;
57
+ readonly nickName: "王工";
58
+ readonly username: "wang";
59
+ }];
60
+ }];
61
+ };
62
+ readonly alert_latest: {
63
+ readonly total: 3;
64
+ readonly stats: {
65
+ readonly todayTotal: 12;
66
+ readonly todayPending: 3;
67
+ readonly overdueTotal: 1;
68
+ readonly criticalCount: 1;
69
+ readonly warningCount: 5;
70
+ readonly infoCount: 6;
71
+ };
72
+ readonly items: readonly [{
73
+ readonly id: 1;
74
+ readonly alertId: "AL-20260727-001";
75
+ readonly title: "边缘节点延迟升高";
76
+ readonly severity: "WARN";
77
+ readonly severityText: "警告";
78
+ readonly status: "pending";
79
+ readonly statusText: "待处理";
80
+ readonly source: "edge-01";
81
+ readonly firedAt: "14:20";
82
+ readonly groupNames: readonly ["网络组"];
83
+ }, {
84
+ readonly id: 2;
85
+ readonly alertId: "AL-20260727-002";
86
+ readonly title: "构建队列等待时间过长";
87
+ readonly severity: "CRITICAL";
88
+ readonly severityText: "严重";
89
+ readonly status: "processing";
90
+ readonly statusText: "处理中";
91
+ readonly source: "CI/CD";
92
+ readonly firedAt: "14:08";
93
+ readonly groupNames: readonly ["平台组"];
94
+ }, {
95
+ readonly id: 3;
96
+ readonly alertId: "AL-20260727-003";
97
+ readonly title: "磁盘使用率接近阈值";
98
+ readonly severity: "INFO";
99
+ readonly severityText: "提示";
100
+ readonly status: "pending";
101
+ readonly statusText: "待处理";
102
+ readonly source: "node-03";
103
+ readonly firedAt: "13:56";
104
+ readonly groupNames: readonly ["运维组"];
105
+ }];
106
+ };
107
+ readonly build_projects: {
108
+ readonly summary: {
109
+ readonly buildingCount: 4;
110
+ readonly todayBuilds: 28;
111
+ readonly successRate: 98.6;
112
+ };
113
+ readonly items: readonly [{
114
+ readonly pipelineId: 1;
115
+ readonly buildId: 101;
116
+ readonly jobName: "eagle-eye-web";
117
+ readonly statusText: "构建中";
118
+ readonly currentStage: "测试";
119
+ readonly buildUser: "system";
120
+ readonly progress: 68;
121
+ }, {
122
+ readonly pipelineId: 2;
123
+ readonly buildId: 102;
124
+ readonly jobName: "quark-api";
125
+ readonly statusText: "构建中";
126
+ readonly currentStage: "镜像打包";
127
+ readonly buildUser: "李工";
128
+ readonly progress: 42;
129
+ }];
130
+ };
131
+ readonly build_distribution: {
132
+ readonly total: 100;
133
+ readonly items: readonly [{
134
+ readonly name: "应用构建";
135
+ readonly count: 42;
136
+ }, {
137
+ readonly name: "镜像构建";
138
+ readonly count: 27;
139
+ }, {
140
+ readonly name: "基础设施";
141
+ readonly count: 18;
142
+ }, {
143
+ readonly name: "其他任务";
144
+ readonly count: 13;
145
+ }];
146
+ };
147
+ readonly endpoint_distribution: {
148
+ readonly summary: {
149
+ readonly total: 3;
150
+ };
151
+ readonly items: readonly [{
152
+ readonly id: 1;
153
+ readonly nodeName: "edge-01";
154
+ readonly nodeIp: "10.10.2.11";
155
+ readonly nodeStatus: true;
156
+ readonly heartbeatResults: readonly [{
157
+ readonly targetName: "API Gateway";
158
+ readonly targetIp: "10.10.1.10";
159
+ readonly latencyMs: 12.4;
160
+ }];
161
+ }, {
162
+ readonly id: 2;
163
+ readonly nodeName: "edge-02";
164
+ readonly nodeIp: "10.10.2.12";
165
+ readonly nodeStatus: true;
166
+ readonly heartbeatResults: readonly [{
167
+ readonly targetName: "API Gateway";
168
+ readonly targetIp: "10.10.1.10";
169
+ readonly latencyMs: 18.7;
170
+ }];
171
+ }, {
172
+ readonly id: 3;
173
+ readonly nodeName: "edge-03";
174
+ readonly nodeIp: "10.10.2.13";
175
+ readonly nodeStatus: false;
176
+ readonly heartbeatResults: readonly [];
177
+ }];
178
+ };
179
+ };
180
+ export type BigScreenPreviewWidgetType = keyof typeof bigScreenPreviewFixtures;
181
+ /** Returns a fresh object so an editor preview can never mutate package fixtures. */
182
+ export declare function getBigScreenPreviewData(type: BigScreenPreviewWidgetType): Record<string, unknown>;
4
183
  //# sourceMappingURL=big-screen.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"big-screen.d.ts","sourceRoot":"","sources":["../../src/fixtures/big-screen.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,UAAU,CAAA;AAExD,gFAAgF;AAChF,eAAO,MAAM,wBAAwB,EAAE,wBAOtC,CAAA"}
1
+ {"version":3,"file":"big-screen.d.ts","sourceRoot":"","sources":["../../src/fixtures/big-screen.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+C3B,CAAA;AAEV,MAAM,MAAM,0BAA0B,GAAG,MAAM,OAAO,wBAAwB,CAAA;AAE9E,qFAAqF;AACrF,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,0BAA0B,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEjG"}
package/dist/index.css CHANGED
@@ -1 +1 @@
1
- :root{--qbs-surface-top: rgba(13, 24, 39, .92);--qbs-surface-bottom: rgba(8, 16, 28, .96);--qbs-border: rgba(142, 161, 178, .2);--qbs-text: #f6f8fb;--qbs-muted: #9fb2c7;--qbs-radius: 20px;--qbs-shadow: 0 18px 48px rgba(4, 10, 18, .28)}.qbs-panel[data-v-749400b6]{position:relative;display:flex;height:100%;min-height:0;flex-direction:column;border:1px solid oklch(.6 .12 220 / .28);border-radius:10px;background:linear-gradient(160deg,#091b318c,#050f2066);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);color:#c8e4e9}.qbs-panel--overflow-hidden[data-v-749400b6]{overflow:hidden}.qbs-panel--padding-md[data-v-749400b6]{padding:14px 16px}.qbs-panel--padding-compact[data-v-749400b6]{padding:10px 12px}.qbs-panel--padding-tight[data-v-749400b6]{padding:12px 8px}.qbs-panel__corner[data-v-749400b6]{position:absolute;width:12px;height:12px;border:2px solid var(--qbs-accent);pointer-events:none}.qbs-panel__corner--tl[data-v-749400b6]{top:-1px;left:-1px;border-right:0;border-bottom:0}.qbs-panel__corner--tr[data-v-749400b6]{top:-1px;right:-1px;border-left:0;border-bottom:0}.qbs-panel__corner--bl[data-v-749400b6]{bottom:-1px;left:-1px;border-right:0;border-top:0}.qbs-panel__corner--br[data-v-749400b6]{right:-1px;bottom:-1px;border-left:0;border-top:0}.qbs-panel__header[data-v-749400b6]{display:flex;align-items:center;gap:8px;margin:0 0 10px;min-width:0;font-weight:700;letter-spacing:1px}.qbs-panel__header--md[data-v-749400b6]{font-size:14px}.qbs-panel__header--sm[data-v-749400b6]{margin-bottom:8px;font-size:13px}.qbs-panel__bar[data-v-749400b6]{width:4px;height:14px;flex-shrink:0;border-radius:2px;background:var(--qbs-accent);box-shadow:0 0 8px var(--qbs-accent)}.qbs-panel__title[data-v-749400b6]{flex-shrink:0}.qbs-panel__header-prefix[data-v-749400b6]{display:inline-flex;align-items:center;gap:6px;flex-shrink:0}.qbs-panel__header-center[data-v-749400b6]{display:inline-flex;flex:1;min-width:0;justify-content:center}.qbs-panel__header-extra[data-v-749400b6]{display:inline-flex;align-items:center;justify-content:flex-end;flex-shrink:0;margin-left:auto}.qbs-panel__live[data-v-749400b6]{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:700;letter-spacing:1px;color:#ff5050;color:oklch(.68 .22 25)}.qbs-panel__live-dot[data-v-749400b6]{width:7px;height:7px;border-radius:50%;background:#ff5050;background:oklch(.68 .22 25);box-shadow:0 0 8px #ff5050;box-shadow:0 0 8px oklch(.68 .22 25);animation:qbs-panel-blink-749400b6 1s steps(1,end) infinite}.qbs-panel__body[data-v-749400b6]{display:flex;flex:1;min-height:0;flex-direction:column}.qbs-panel--layout-metric .qbs-panel__body[data-v-749400b6]{align-items:center;justify-content:center;gap:4px;text-align:center}@keyframes qbs-panel-blink-749400b6{50%{opacity:.25}}
1
+ :root{--qbs-surface-top: rgba(13, 24, 39, .92);--qbs-surface-bottom: rgba(8, 16, 28, .96);--qbs-border: rgba(142, 161, 178, .2);--qbs-text: #f6f8fb;--qbs-muted: #9fb2c7;--qbs-radius: 20px;--qbs-shadow: 0 18px 48px rgba(4, 10, 18, .28)}.qbs-panel[data-v-749400b6]{position:relative;display:flex;height:100%;min-height:0;flex-direction:column;border:1px solid oklch(.6 .12 220 / .28);border-radius:10px;background:linear-gradient(160deg,#091b318c,#050f2066);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);color:#c8e4e9}.qbs-panel--overflow-hidden[data-v-749400b6]{overflow:hidden}.qbs-panel--padding-md[data-v-749400b6]{padding:14px 16px}.qbs-panel--padding-compact[data-v-749400b6]{padding:10px 12px}.qbs-panel--padding-tight[data-v-749400b6]{padding:12px 8px}.qbs-panel__corner[data-v-749400b6]{position:absolute;width:12px;height:12px;border:2px solid var(--qbs-accent);pointer-events:none}.qbs-panel__corner--tl[data-v-749400b6]{top:-1px;left:-1px;border-right:0;border-bottom:0}.qbs-panel__corner--tr[data-v-749400b6]{top:-1px;right:-1px;border-left:0;border-bottom:0}.qbs-panel__corner--bl[data-v-749400b6]{bottom:-1px;left:-1px;border-right:0;border-top:0}.qbs-panel__corner--br[data-v-749400b6]{right:-1px;bottom:-1px;border-left:0;border-top:0}.qbs-panel__header[data-v-749400b6]{display:flex;align-items:center;gap:8px;margin:0 0 10px;min-width:0;font-weight:700;letter-spacing:1px}.qbs-panel__header--md[data-v-749400b6]{font-size:14px}.qbs-panel__header--sm[data-v-749400b6]{margin-bottom:8px;font-size:13px}.qbs-panel__bar[data-v-749400b6]{width:4px;height:14px;flex-shrink:0;border-radius:2px;background:var(--qbs-accent);box-shadow:0 0 8px var(--qbs-accent)}.qbs-panel__title[data-v-749400b6]{flex-shrink:0}.qbs-panel__header-prefix[data-v-749400b6]{display:inline-flex;align-items:center;gap:6px;flex-shrink:0}.qbs-panel__header-center[data-v-749400b6]{display:inline-flex;flex:1;min-width:0;justify-content:center}.qbs-panel__header-extra[data-v-749400b6]{display:inline-flex;align-items:center;justify-content:flex-end;flex-shrink:0;margin-left:auto}.qbs-panel__live[data-v-749400b6]{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:700;letter-spacing:1px;color:#ff5050;color:oklch(.68 .22 25)}.qbs-panel__live-dot[data-v-749400b6]{width:7px;height:7px;border-radius:50%;background:#ff5050;background:oklch(.68 .22 25);box-shadow:0 0 8px #ff5050;box-shadow:0 0 8px oklch(.68 .22 25);animation:qbs-panel-blink-749400b6 1s steps(1,end) infinite}.qbs-panel__body[data-v-749400b6]{display:flex;flex:1;min-height:0;flex-direction:column}.qbs-panel--layout-metric .qbs-panel__body[data-v-749400b6]{align-items:center;justify-content:center;gap:4px;text-align:center}@keyframes qbs-panel-blink-749400b6{50%{opacity:.25}}.qbs-duty-compact[data-v-f5721bce]{display:flex;align-items:center;gap:12px}.qbs-duty-compact__avatar[data-v-f5721bce]{display:flex;width:42px;height:42px;align-items:center;justify-content:center;border-radius:10px;background:#34dde5;box-shadow:0 0 14px #34dde599;color:#050e1a;font-size:18px;font-weight:700}.qbs-duty-compact__info[data-v-f5721bce]{display:flex;flex-direction:column}.qbs-duty-compact__name[data-v-f5721bce]{color:#cfebf0;font-size:15px;font-weight:700}.qbs-duty-compact__phone[data-v-f5721bce]{color:#7d939e;font-family:var(--font-mono,monospace);font-size:12px}.qbs-duty-compact__tag[data-v-f5721bce]{margin-left:auto;padding:4px 10px;border:1px solid oklch(.82 .13 200 / .4);border-radius:20px;background:#34dde51a;color:#34dde5;font-size:11px}.qbs-duty[data-v-f5721bce]{display:flex;height:100%;min-height:0;flex-direction:column;gap:14px}.qbs-duty__summary[data-v-f5721bce]{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.qbs-duty__summary-chip[data-v-f5721bce]{padding:10px 12px;border:1px solid rgba(157,176,198,.12);border-radius:14px;background:#0f1927bd}.qbs-duty__summary-chip span[data-v-f5721bce]{display:block;margin-bottom:6px;color:#8ca0b4;font-size:11px}.qbs-duty__summary-chip strong[data-v-f5721bce]{color:#f5f8fc;font-size:15px;line-height:1.2}.qbs-duty__list[data-v-f5721bce]{display:grid;min-height:0;gap:10px;overflow:auto}.qbs-duty__group[data-v-f5721bce]{padding:12px;border:1px solid rgba(157,176,198,.1);border-radius:16px;background:#0d1723c2}.qbs-duty__group-header[data-v-f5721bce]{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px;color:#edf3f9;font-size:13px}.qbs-duty__group-header span[data-v-f5721bce]{color:#8ca0b4}.qbs-duty__users[data-v-f5721bce]{display:flex;flex-wrap:wrap;gap:8px}.qbs-duty__user[data-v-f5721bce]{padding:5px 10px;border-radius:999px;background:#19293ed1;color:#bfd0e0;font-size:12px}.qbs-duty__empty[data-v-f5721bce]{display:grid;min-height:140px;place-items:center;border:1px dashed rgba(157,176,198,.14);border-radius:16px;background:#0c162280;color:#7d91a6;font-size:13px}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,7 @@
1
1
  export { default as BigScreenPanel } from './components/BigScreenPanel.vue';
2
- export { bigScreenPreviewFixtures } from './fixtures/big-screen';
2
+ export { default as BigScreenDutyContent } from './components/BigScreenDutyContent.vue';
3
+ export type { BigScreenDutyGroup, BigScreenDutyUser } from './components/BigScreenDutyContent.vue';
4
+ export { bigScreenPreviewFixtures, getBigScreenPreviewData } from './fixtures/big-screen';
5
+ export type { BigScreenPreviewWidgetType } from './fixtures/big-screen';
3
6
  export type { BigScreenPanelProps, BigScreenPreviewFixtures, BigScreenTone } from './types';
4
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,qBAAqB,CAAA;AAE5B,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,iCAAiC,CAAA;AAC3E,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAA;AAChE,YAAY,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,qBAAqB,CAAA;AAE5B,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,iCAAiC,CAAA;AAC3E,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,uCAAuC,CAAA;AACvF,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAA;AAClG,OAAO,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAA;AACzF,YAAY,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAA;AACvE,YAAY,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA"}
package/dist/index.js CHANGED
@@ -1,35 +1,35 @@
1
- import { defineComponent as b, openBlock as s, createElementBlock as a, normalizeStyle as p, normalizeClass as i, createCommentVNode as n, toDisplayString as u, renderSlot as d, createElementVNode as c, createTextVNode as _ } from "vue";
2
- const y = {
1
+ import { defineComponent as m, openBlock as a, createElementBlock as n, normalizeStyle as h, normalizeClass as p, createCommentVNode as r, toDisplayString as l, renderSlot as i, createElementVNode as s, createTextVNode as f, Fragment as y, renderList as b } from "vue";
2
+ const v = {
3
3
  key: 0,
4
4
  class: "qbs-panel__corner qbs-panel__corner--tl"
5
- }, h = {
5
+ }, q = {
6
6
  key: 1,
7
7
  class: "qbs-panel__corner qbs-panel__corner--tr"
8
- }, m = {
8
+ }, N = {
9
9
  key: 2,
10
10
  class: "qbs-panel__corner qbs-panel__corner--bl"
11
- }, f = {
11
+ }, k = {
12
12
  key: 3,
13
13
  class: "qbs-panel__corner qbs-panel__corner--br"
14
- }, q = {
14
+ }, I = {
15
15
  key: 0,
16
16
  class: "qbs-panel__bar"
17
- }, g = {
17
+ }, $ = {
18
18
  key: 1,
19
19
  class: "qbs-panel__title"
20
- }, v = {
20
+ }, T = {
21
21
  key: 2,
22
22
  class: "qbs-panel__header-prefix"
23
- }, k = {
23
+ }, C = {
24
24
  key: 3,
25
25
  class: "qbs-panel__header-center"
26
- }, $ = {
26
+ }, S = {
27
27
  key: 4,
28
28
  class: "qbs-panel__header-extra"
29
29
  }, w = {
30
30
  key: 0,
31
31
  class: "qbs-panel__live"
32
- }, B = { class: "qbs-panel__body" }, S = /* @__PURE__ */ b({
32
+ }, x = { class: "qbs-panel__body" }, B = /* @__PURE__ */ m({
33
33
  __name: "BigScreenPanel",
34
34
  props: {
35
35
  title: { default: "" },
@@ -43,62 +43,183 @@ const y = {
43
43
  overflowHidden: { type: Boolean, default: !0 }
44
44
  },
45
45
  setup(e) {
46
- const r = e;
47
- function l(t) {
48
- return r.corners === "all" ? !0 : r.corners === "none" ? !1 : t === "tl" || t === "br";
46
+ const o = e;
47
+ function u(t) {
48
+ return o.corners === "all" ? !0 : o.corners === "none" ? !1 : t === "tl" || t === "br";
49
49
  }
50
- return (t, o) => (s(), a("section", {
51
- class: i(["qbs-panel", [
50
+ return (t, d) => (a(), n("section", {
51
+ class: p(["qbs-panel", [
52
52
  `qbs-panel--padding-${e.padding}`,
53
53
  `qbs-panel--layout-${e.bodyLayout}`,
54
54
  { "qbs-panel--overflow-hidden": e.overflowHidden }
55
55
  ]]),
56
- style: p({ "--qbs-accent": e.accent })
56
+ style: h({ "--qbs-accent": e.accent })
57
57
  }, [
58
- l("tl") ? (s(), a("span", y)) : n("", !0),
59
- l("tr") ? (s(), a("span", h)) : n("", !0),
60
- l("bl") ? (s(), a("span", m)) : n("", !0),
61
- l("br") ? (s(), a("span", f)) : n("", !0),
62
- e.title || e.liveLabel || t.$slots["header-center"] || t.$slots["header-extra"] ? (s(), a("header", {
58
+ u("tl") ? (a(), n("span", v)) : r("", !0),
59
+ u("tr") ? (a(), n("span", q)) : r("", !0),
60
+ u("bl") ? (a(), n("span", N)) : r("", !0),
61
+ u("br") ? (a(), n("span", k)) : r("", !0),
62
+ e.title || e.liveLabel || t.$slots["header-center"] || t.$slots["header-extra"] ? (a(), n("header", {
63
63
  key: 4,
64
- class: i(["qbs-panel__header", `qbs-panel__header--${e.titleSize}`])
64
+ class: p(["qbs-panel__header", `qbs-panel__header--${e.titleSize}`])
65
65
  }, [
66
- e.showBar ? (s(), a("span", q)) : n("", !0),
67
- e.title ? (s(), a("span", g, u(e.title), 1)) : n("", !0),
68
- t.$slots["header-prefix"] ? (s(), a("span", v, [
69
- d(t.$slots, "header-prefix", {}, void 0, !0)
70
- ])) : n("", !0),
71
- t.$slots["header-center"] ? (s(), a("span", k, [
72
- d(t.$slots, "header-center", {}, void 0, !0)
73
- ])) : n("", !0),
74
- t.$slots["header-extra"] || e.liveLabel ? (s(), a("span", $, [
75
- d(t.$slots, "header-extra", {}, () => [
76
- e.liveLabel ? (s(), a("span", w, [
77
- o[0] || (o[0] = c("span", { class: "qbs-panel__live-dot" }, null, -1)),
78
- _(u(e.liveLabel), 1)
79
- ])) : n("", !0)
66
+ e.showBar ? (a(), n("span", I)) : r("", !0),
67
+ e.title ? (a(), n("span", $, l(e.title), 1)) : r("", !0),
68
+ t.$slots["header-prefix"] ? (a(), n("span", T, [
69
+ i(t.$slots, "header-prefix", {}, void 0, !0)
70
+ ])) : r("", !0),
71
+ t.$slots["header-center"] ? (a(), n("span", C, [
72
+ i(t.$slots, "header-center", {}, void 0, !0)
73
+ ])) : r("", !0),
74
+ t.$slots["header-extra"] || e.liveLabel ? (a(), n("span", S, [
75
+ i(t.$slots, "header-extra", {}, () => [
76
+ e.liveLabel ? (a(), n("span", w, [
77
+ d[0] || (d[0] = s("span", { class: "qbs-panel__live-dot" }, null, -1)),
78
+ f(l(e.liveLabel), 1)
79
+ ])) : r("", !0)
80
80
  ], !0)
81
- ])) : n("", !0)
82
- ], 2)) : n("", !0),
83
- c("div", B, [
84
- d(t.$slots, "default", {}, void 0, !0)
81
+ ])) : r("", !0)
82
+ ], 2)) : r("", !0),
83
+ s("div", x, [
84
+ i(t.$slots, "default", {}, void 0, !0)
85
85
  ])
86
86
  ], 6));
87
87
  }
88
- }), L = (e, r) => {
89
- const l = e.__vccOpts || e;
90
- for (const [t, o] of r)
91
- l[t] = o;
92
- return l;
93
- }, C = /* @__PURE__ */ L(S, [["__scopeId", "data-v-749400b6"]]), z = {
94
- robot: { status: "online", mode: "guard", emotion: "neutral", summary: { dutyGroups: 3, todayAlerts: 12, buildingCount: 4, endpointNodes: 86 } },
95
- buildProjects: { summary: { buildingCount: 4, todayBuilds: 28, successRate: 98.6 }, items: [{ pipelineId: 1, buildId: 101, jobName: "eagle-eye-web", statusText: "构建中", currentStage: "测试", buildUser: "system", progress: 68 }] },
96
- dutyToday: { totalGroups: 3, totalUsers: 8, groups: [{ groupId: 1, groupName: "平台组", users: [{ userId: 1, nickName: "张工", username: "zhang" }] }] },
97
- alertLatest: { total: 3, items: [{ id: "preview-alert-1", level: "warning", title: "边缘节点延迟升高", createdAt: "10:24" }] },
98
- buildDistribution: { items: [{ label: "应用构建", value: 42, tone: "info" }, { label: "镜像构建", value: 27, tone: "success" }] },
99
- endpointDistribution: { nodes: [{ id: "edge-01", name: "边缘节点 01", status: "online" }, { id: "edge-02", name: "边缘节点 02", status: "warning" }] }
88
+ }), g = (e, o) => {
89
+ const u = e.__vccOpts || e;
90
+ for (const [t, d] of o)
91
+ u[t] = d;
92
+ return u;
93
+ }, Q = /* @__PURE__ */ g(B, [["__scopeId", "data-v-749400b6"]]), A = {
94
+ key: 0,
95
+ class: "qbs-duty-compact"
96
+ }, L = { class: "qbs-duty-compact__avatar" }, P = { class: "qbs-duty-compact__info" }, R = { class: "qbs-duty-compact__name" }, G = { class: "qbs-duty-compact__phone" }, z = {
97
+ key: 0,
98
+ class: "qbs-duty-compact__tag"
99
+ }, D = {
100
+ key: 1,
101
+ class: "qbs-duty"
102
+ }, U = { class: "qbs-duty__summary" }, O = { class: "qbs-duty__summary-chip" }, j = { class: "qbs-duty__summary-chip" }, F = { class: "qbs-duty__summary-chip" }, V = { class: "qbs-duty__list" }, E = { class: "qbs-duty__group-header" }, H = { class: "qbs-duty__users" }, J = {
103
+ key: 0,
104
+ class: "qbs-duty__empty"
105
+ }, M = /* @__PURE__ */ m({
106
+ __name: "BigScreenDutyContent",
107
+ props: {
108
+ compact: { type: Boolean, default: !1 },
109
+ personName: { default: "" },
110
+ personPhone: { default: "" },
111
+ personTag: { default: "" },
112
+ date: { default: "" },
113
+ totalGroups: { default: void 0 },
114
+ totalUsers: { default: void 0 },
115
+ groups: { default: () => [] }
116
+ },
117
+ setup(e) {
118
+ const o = e;
119
+ return (u, t) => o.compact ? (a(), n("div", A, [
120
+ s("div", L, l(o.personName.charAt(0) || "-"), 1),
121
+ s("div", P, [
122
+ s("span", R, l(o.personName || "暂未排班"), 1),
123
+ s("span", G, l(o.personPhone || "—"), 1)
124
+ ]),
125
+ o.personTag ? (a(), n("span", z, l(o.personTag), 1)) : r("", !0)
126
+ ])) : (a(), n("div", D, [
127
+ s("div", U, [
128
+ s("div", O, [
129
+ t[0] || (t[0] = s("span", null, "日期", -1)),
130
+ s("strong", null, l(o.date || "未同步"), 1)
131
+ ]),
132
+ s("div", j, [
133
+ t[1] || (t[1] = s("span", null, "值班组", -1)),
134
+ s("strong", null, l(o.totalGroups ?? o.groups.length), 1)
135
+ ]),
136
+ s("div", F, [
137
+ t[2] || (t[2] = s("span", null, "值班人数", -1)),
138
+ s("strong", null, l(o.totalUsers ?? 0), 1)
139
+ ])
140
+ ]),
141
+ s("div", V, [
142
+ (a(!0), n(y, null, b(o.groups, (d) => {
143
+ var _;
144
+ return a(), n("article", {
145
+ key: d.groupId,
146
+ class: "qbs-duty__group"
147
+ }, [
148
+ s("div", E, [
149
+ s("strong", null, l(d.groupName), 1),
150
+ s("span", null, l(((_ = d.users) == null ? void 0 : _.length) || 0) + " 人", 1)
151
+ ]),
152
+ s("div", H, [
153
+ (a(!0), n(y, null, b(d.users || [], (c) => (a(), n("span", {
154
+ key: c.userId,
155
+ class: "qbs-duty__user"
156
+ }, l(c.nickName || c.username), 1))), 128))
157
+ ])
158
+ ]);
159
+ }), 128)),
160
+ o.groups.length ? r("", !0) : (a(), n("div", J, "暂无值班数据"))
161
+ ])
162
+ ]));
163
+ }
164
+ }), X = /* @__PURE__ */ g(M, [["__scopeId", "data-v-f5721bce"]]), W = {
165
+ screen_header: {
166
+ dateText: "2026-07-27",
167
+ timeText: "14:30",
168
+ weekdayText: "星期一"
169
+ },
170
+ robot: {
171
+ status: "online",
172
+ mode: "guard",
173
+ emotion: "neutral",
174
+ generatedAt: "2026-07-27 14:30:00",
175
+ summary: { dutyGroups: 3, todayAlerts: 12, buildingCount: 4, endpointNodes: 86 },
176
+ alerts: { todayTotal: 12, todayPending: 3, criticalCount: 1, warningCount: 5 },
177
+ builds: { buildingCount: 4, todayBuilds: 28, successRate: 98.6 }
178
+ },
179
+ duty_today: {
180
+ date: "2026-07-27",
181
+ totalGroups: 3,
182
+ totalUsers: 8,
183
+ groups: [
184
+ { groupId: 1, groupName: "平台组", users: [{ userId: 101, nickName: "张工", username: "zhang" }, { userId: 102, nickName: "李工", username: "li" }] },
185
+ { groupId: 2, groupName: "网络组", users: [{ userId: 103, nickName: "王工", username: "wang" }] }
186
+ ]
187
+ },
188
+ alert_latest: {
189
+ total: 3,
190
+ stats: { todayTotal: 12, todayPending: 3, overdueTotal: 1, criticalCount: 1, warningCount: 5, infoCount: 6 },
191
+ items: [
192
+ { id: 1, alertId: "AL-20260727-001", title: "边缘节点延迟升高", severity: "WARN", severityText: "警告", status: "pending", statusText: "待处理", source: "edge-01", firedAt: "14:20", groupNames: ["网络组"] },
193
+ { id: 2, alertId: "AL-20260727-002", title: "构建队列等待时间过长", severity: "CRITICAL", severityText: "严重", status: "processing", statusText: "处理中", source: "CI/CD", firedAt: "14:08", groupNames: ["平台组"] },
194
+ { id: 3, alertId: "AL-20260727-003", title: "磁盘使用率接近阈值", severity: "INFO", severityText: "提示", status: "pending", statusText: "待处理", source: "node-03", firedAt: "13:56", groupNames: ["运维组"] }
195
+ ]
196
+ },
197
+ build_projects: {
198
+ summary: { buildingCount: 4, todayBuilds: 28, successRate: 98.6 },
199
+ items: [
200
+ { pipelineId: 1, buildId: 101, jobName: "eagle-eye-web", statusText: "构建中", currentStage: "测试", buildUser: "system", progress: 68 },
201
+ { pipelineId: 2, buildId: 102, jobName: "quark-api", statusText: "构建中", currentStage: "镜像打包", buildUser: "李工", progress: 42 }
202
+ ]
203
+ },
204
+ build_distribution: {
205
+ total: 100,
206
+ items: [{ name: "应用构建", count: 42 }, { name: "镜像构建", count: 27 }, { name: "基础设施", count: 18 }, { name: "其他任务", count: 13 }]
207
+ },
208
+ endpoint_distribution: {
209
+ summary: { total: 3 },
210
+ items: [
211
+ { id: 1, nodeName: "edge-01", nodeIp: "10.10.2.11", nodeStatus: !0, heartbeatResults: [{ targetName: "API Gateway", targetIp: "10.10.1.10", latencyMs: 12.4 }] },
212
+ { id: 2, nodeName: "edge-02", nodeIp: "10.10.2.12", nodeStatus: !0, heartbeatResults: [{ targetName: "API Gateway", targetIp: "10.10.1.10", latencyMs: 18.7 }] },
213
+ { id: 3, nodeName: "edge-03", nodeIp: "10.10.2.13", nodeStatus: !1, heartbeatResults: [] }
214
+ ]
215
+ }
100
216
  };
217
+ function Y(e) {
218
+ return JSON.parse(JSON.stringify(W[e]));
219
+ }
101
220
  export {
102
- C as BigScreenPanel,
103
- z as bigScreenPreviewFixtures
221
+ X as BigScreenDutyContent,
222
+ Q as BigScreenPanel,
223
+ W as bigScreenPreviewFixtures,
224
+ Y as getBigScreenPreviewData
104
225
  };
@@ -1 +1 @@
1
- (function(o,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue")):typeof define=="function"&&define.amd?define(["exports","vue"],e):(o=typeof globalThis<"u"?globalThis:o||self,e(o.QuarkBigScreenUi={},o.Vue))})(this,(function(o,e){"use strict";const r={key:0,class:"qbs-panel__corner qbs-panel__corner--tl"},c={key:1,class:"qbs-panel__corner qbs-panel__corner--tr"},d={key:2,class:"qbs-panel__corner qbs-panel__corner--bl"},i={key:3,class:"qbs-panel__corner qbs-panel__corner--br"},m={key:0,class:"qbs-panel__bar"},b={key:1,class:"qbs-panel__title"},p={key:2,class:"qbs-panel__header-prefix"},u={key:3,class:"qbs-panel__header-center"},f={key:4,class:"qbs-panel__header-extra"},k={key:0,class:"qbs-panel__live"},y={class:"qbs-panel__body"},_=((t,a)=>{const l=t.__vccOpts||t;for(const[n,s]of a)l[n]=s;return l})(e.defineComponent({__name:"BigScreenPanel",props:{title:{default:""},accent:{default:"oklch(.82 .13 200)"},liveLabel:{default:""},showBar:{type:Boolean,default:!0},corners:{default:"tl-br"},padding:{default:"md"},bodyLayout:{default:"default"},titleSize:{default:"md"},overflowHidden:{type:Boolean,default:!0}},setup(t){const a=t;function l(n){return a.corners==="all"?!0:a.corners==="none"?!1:n==="tl"||n==="br"}return(n,s)=>(e.openBlock(),e.createElementBlock("section",{class:e.normalizeClass(["qbs-panel",[`qbs-panel--padding-${t.padding}`,`qbs-panel--layout-${t.bodyLayout}`,{"qbs-panel--overflow-hidden":t.overflowHidden}]]),style:e.normalizeStyle({"--qbs-accent":t.accent})},[l("tl")?(e.openBlock(),e.createElementBlock("span",r)):e.createCommentVNode("",!0),l("tr")?(e.openBlock(),e.createElementBlock("span",c)):e.createCommentVNode("",!0),l("bl")?(e.openBlock(),e.createElementBlock("span",d)):e.createCommentVNode("",!0),l("br")?(e.openBlock(),e.createElementBlock("span",i)):e.createCommentVNode("",!0),t.title||t.liveLabel||n.$slots["header-center"]||n.$slots["header-extra"]?(e.openBlock(),e.createElementBlock("header",{key:4,class:e.normalizeClass(["qbs-panel__header",`qbs-panel__header--${t.titleSize}`])},[t.showBar?(e.openBlock(),e.createElementBlock("span",m)):e.createCommentVNode("",!0),t.title?(e.openBlock(),e.createElementBlock("span",b,e.toDisplayString(t.title),1)):e.createCommentVNode("",!0),n.$slots["header-prefix"]?(e.openBlock(),e.createElementBlock("span",p,[e.renderSlot(n.$slots,"header-prefix",{},void 0,!0)])):e.createCommentVNode("",!0),n.$slots["header-center"]?(e.openBlock(),e.createElementBlock("span",u,[e.renderSlot(n.$slots,"header-center",{},void 0,!0)])):e.createCommentVNode("",!0),n.$slots["header-extra"]||t.liveLabel?(e.openBlock(),e.createElementBlock("span",f,[e.renderSlot(n.$slots,"header-extra",{},()=>[t.liveLabel?(e.openBlock(),e.createElementBlock("span",k,[s[0]||(s[0]=e.createElementVNode("span",{class:"qbs-panel__live-dot"},null,-1)),e.createTextVNode(e.toDisplayString(t.liveLabel),1)])):e.createCommentVNode("",!0)],!0)])):e.createCommentVNode("",!0)],2)):e.createCommentVNode("",!0),e.createElementVNode("div",y,[e.renderSlot(n.$slots,"default",{},void 0,!0)])],6))}}),[["__scopeId","data-v-749400b6"]]),h={robot:{status:"online",mode:"guard",emotion:"neutral",summary:{dutyGroups:3,todayAlerts:12,buildingCount:4,endpointNodes:86}},buildProjects:{summary:{buildingCount:4,todayBuilds:28,successRate:98.6},items:[{pipelineId:1,buildId:101,jobName:"eagle-eye-web",statusText:"构建中",currentStage:"测试",buildUser:"system",progress:68}]},dutyToday:{totalGroups:3,totalUsers:8,groups:[{groupId:1,groupName:"平台组",users:[{userId:1,nickName:"张工",username:"zhang"}]}]},alertLatest:{total:3,items:[{id:"preview-alert-1",level:"warning",title:"边缘节点延迟升高",createdAt:"10:24"}]},buildDistribution:{items:[{label:"应用构建",value:42,tone:"info"},{label:"镜像构建",value:27,tone:"success"}]},endpointDistribution:{nodes:[{id:"edge-01",name:"边缘节点 01",status:"online"},{id:"edge-02",name:"边缘节点 02",status:"warning"}]}};o.BigScreenPanel=_,o.bigScreenPreviewFixtures=h,Object.defineProperty(o,Symbol.toStringTag,{value:"Module"})}));
1
+ (function(o,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue")):typeof define=="function"&&define.amd?define(["exports","vue"],e):(o=typeof globalThis<"u"?globalThis:o||self,e(o.QuarkBigScreenUi={},o.Vue))})(this,(function(o,e){"use strict";const m={key:0,class:"qbs-panel__corner qbs-panel__corner--tl"},p={key:1,class:"qbs-panel__corner qbs-panel__corner--tr"},_={key:2,class:"qbs-panel__corner qbs-panel__corner--bl"},u={key:3,class:"qbs-panel__corner qbs-panel__corner--br"},y={key:0,class:"qbs-panel__bar"},g={key:1,class:"qbs-panel__title"},b={key:2,class:"qbs-panel__header-prefix"},k={key:3,class:"qbs-panel__header-center"},N={key:4,class:"qbs-panel__header-extra"},f={key:0,class:"qbs-panel__live"},h={class:"qbs-panel__body"},B=e.defineComponent({__name:"BigScreenPanel",props:{title:{default:""},accent:{default:"oklch(.82 .13 200)"},liveLabel:{default:""},showBar:{type:Boolean,default:!0},corners:{default:"tl-br"},padding:{default:"md"},bodyLayout:{default:"default"},titleSize:{default:"md"},overflowHidden:{type:Boolean,default:!0}},setup(t){const s=t;function r(n){return s.corners==="all"?!0:s.corners==="none"?!1:n==="tl"||n==="br"}return(n,a)=>(e.openBlock(),e.createElementBlock("section",{class:e.normalizeClass(["qbs-panel",[`qbs-panel--padding-${t.padding}`,`qbs-panel--layout-${t.bodyLayout}`,{"qbs-panel--overflow-hidden":t.overflowHidden}]]),style:e.normalizeStyle({"--qbs-accent":t.accent})},[r("tl")?(e.openBlock(),e.createElementBlock("span",m)):e.createCommentVNode("",!0),r("tr")?(e.openBlock(),e.createElementBlock("span",p)):e.createCommentVNode("",!0),r("bl")?(e.openBlock(),e.createElementBlock("span",_)):e.createCommentVNode("",!0),r("br")?(e.openBlock(),e.createElementBlock("span",u)):e.createCommentVNode("",!0),t.title||t.liveLabel||n.$slots["header-center"]||n.$slots["header-extra"]?(e.openBlock(),e.createElementBlock("header",{key:4,class:e.normalizeClass(["qbs-panel__header",`qbs-panel__header--${t.titleSize}`])},[t.showBar?(e.openBlock(),e.createElementBlock("span",y)):e.createCommentVNode("",!0),t.title?(e.openBlock(),e.createElementBlock("span",g,e.toDisplayString(t.title),1)):e.createCommentVNode("",!0),n.$slots["header-prefix"]?(e.openBlock(),e.createElementBlock("span",b,[e.renderSlot(n.$slots,"header-prefix",{},void 0,!0)])):e.createCommentVNode("",!0),n.$slots["header-center"]?(e.openBlock(),e.createElementBlock("span",k,[e.renderSlot(n.$slots,"header-center",{},void 0,!0)])):e.createCommentVNode("",!0),n.$slots["header-extra"]||t.liveLabel?(e.openBlock(),e.createElementBlock("span",N,[e.renderSlot(n.$slots,"header-extra",{},()=>[t.liveLabel?(e.openBlock(),e.createElementBlock("span",f,[a[0]||(a[0]=e.createElementVNode("span",{class:"qbs-panel__live-dot"},null,-1)),e.createTextVNode(e.toDisplayString(t.liveLabel),1)])):e.createCommentVNode("",!0)],!0)])):e.createCommentVNode("",!0)],2)):e.createCommentVNode("",!0),e.createElementVNode("div",h,[e.renderSlot(n.$slots,"default",{},void 0,!0)])],6))}}),d=(t,s)=>{const r=t.__vccOpts||t;for(const[n,a]of s)r[n]=a;return r},q=d(B,[["__scopeId","data-v-749400b6"]]),E={key:0,class:"qbs-duty-compact"},S={class:"qbs-duty-compact__avatar"},V={class:"qbs-duty-compact__info"},C={class:"qbs-duty-compact__name"},I={class:"qbs-duty-compact__phone"},$={key:0,class:"qbs-duty-compact__tag"},T={key:1,class:"qbs-duty"},D={class:"qbs-duty__summary"},w={class:"qbs-duty__summary-chip"},x={class:"qbs-duty__summary-chip"},P={class:"qbs-duty__summary-chip"},A={class:"qbs-duty__list"},L={class:"qbs-duty__group-header"},R={class:"qbs-duty__users"},z={key:0,class:"qbs-duty__empty"},G=d(e.defineComponent({__name:"BigScreenDutyContent",props:{compact:{type:Boolean,default:!1},personName:{default:""},personPhone:{default:""},personTag:{default:""},date:{default:""},totalGroups:{default:void 0},totalUsers:{default:void 0},groups:{default:()=>[]}},setup(t){const s=t;return(r,n)=>s.compact?(e.openBlock(),e.createElementBlock("div",E,[e.createElementVNode("div",S,e.toDisplayString(s.personName.charAt(0)||"-"),1),e.createElementVNode("div",V,[e.createElementVNode("span",C,e.toDisplayString(s.personName||"暂未排班"),1),e.createElementVNode("span",I,e.toDisplayString(s.personPhone||"—"),1)]),s.personTag?(e.openBlock(),e.createElementBlock("span",$,e.toDisplayString(s.personTag),1)):e.createCommentVNode("",!0)])):(e.openBlock(),e.createElementBlock("div",T,[e.createElementVNode("div",D,[e.createElementVNode("div",w,[n[0]||(n[0]=e.createElementVNode("span",null,"日期",-1)),e.createElementVNode("strong",null,e.toDisplayString(s.date||"未同步"),1)]),e.createElementVNode("div",x,[n[1]||(n[1]=e.createElementVNode("span",null,"值班组",-1)),e.createElementVNode("strong",null,e.toDisplayString(s.totalGroups??s.groups.length),1)]),e.createElementVNode("div",P,[n[2]||(n[2]=e.createElementVNode("span",null,"值班人数",-1)),e.createElementVNode("strong",null,e.toDisplayString(s.totalUsers??0),1)])]),e.createElementVNode("div",A,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.groups,a=>{var i;return e.openBlock(),e.createElementBlock("article",{key:a.groupId,class:"qbs-duty__group"},[e.createElementVNode("div",L,[e.createElementVNode("strong",null,e.toDisplayString(a.groupName),1),e.createElementVNode("span",null,e.toDisplayString(((i=a.users)==null?void 0:i.length)||0)+" 人",1)]),e.createElementVNode("div",R,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.users||[],l=>(e.openBlock(),e.createElementBlock("span",{key:l.userId,class:"qbs-duty__user"},e.toDisplayString(l.nickName||l.username),1))),128))])])}),128)),s.groups.length?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",z,"暂无值班数据"))])]))}}),[["__scopeId","data-v-f5721bce"]]),c={screen_header:{dateText:"2026-07-27",timeText:"14:30",weekdayText:"星期一"},robot:{status:"online",mode:"guard",emotion:"neutral",generatedAt:"2026-07-27 14:30:00",summary:{dutyGroups:3,todayAlerts:12,buildingCount:4,endpointNodes:86},alerts:{todayTotal:12,todayPending:3,criticalCount:1,warningCount:5},builds:{buildingCount:4,todayBuilds:28,successRate:98.6}},duty_today:{date:"2026-07-27",totalGroups:3,totalUsers:8,groups:[{groupId:1,groupName:"平台组",users:[{userId:101,nickName:"张工",username:"zhang"},{userId:102,nickName:"李工",username:"li"}]},{groupId:2,groupName:"网络组",users:[{userId:103,nickName:"王工",username:"wang"}]}]},alert_latest:{total:3,stats:{todayTotal:12,todayPending:3,overdueTotal:1,criticalCount:1,warningCount:5,infoCount:6},items:[{id:1,alertId:"AL-20260727-001",title:"边缘节点延迟升高",severity:"WARN",severityText:"警告",status:"pending",statusText:"待处理",source:"edge-01",firedAt:"14:20",groupNames:["网络组"]},{id:2,alertId:"AL-20260727-002",title:"构建队列等待时间过长",severity:"CRITICAL",severityText:"严重",status:"processing",statusText:"处理中",source:"CI/CD",firedAt:"14:08",groupNames:["平台组"]},{id:3,alertId:"AL-20260727-003",title:"磁盘使用率接近阈值",severity:"INFO",severityText:"提示",status:"pending",statusText:"待处理",source:"node-03",firedAt:"13:56",groupNames:["运维组"]}]},build_projects:{summary:{buildingCount:4,todayBuilds:28,successRate:98.6},items:[{pipelineId:1,buildId:101,jobName:"eagle-eye-web",statusText:"构建中",currentStage:"测试",buildUser:"system",progress:68},{pipelineId:2,buildId:102,jobName:"quark-api",statusText:"构建中",currentStage:"镜像打包",buildUser:"李工",progress:42}]},build_distribution:{total:100,items:[{name:"应用构建",count:42},{name:"镜像构建",count:27},{name:"基础设施",count:18},{name:"其他任务",count:13}]},endpoint_distribution:{summary:{total:3},items:[{id:1,nodeName:"edge-01",nodeIp:"10.10.2.11",nodeStatus:!0,heartbeatResults:[{targetName:"API Gateway",targetIp:"10.10.1.10",latencyMs:12.4}]},{id:2,nodeName:"edge-02",nodeIp:"10.10.2.12",nodeStatus:!0,heartbeatResults:[{targetName:"API Gateway",targetIp:"10.10.1.10",latencyMs:18.7}]},{id:3,nodeName:"edge-03",nodeIp:"10.10.2.13",nodeStatus:!1,heartbeatResults:[]}]}};function U(t){return JSON.parse(JSON.stringify(c[t]))}o.BigScreenDutyContent=G,o.BigScreenPanel=q,o.bigScreenPreviewFixtures=c,o.getBigScreenPreviewData=U,Object.defineProperty(o,Symbol.toStringTag,{value:"Module"})}));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@akiraka/quark-big-screen-ui",
3
- "version": "0.1.4",
3
+ "version": "0.1.6",
4
4
  "description": "Shared visual components for Quark big-screen applications.",
5
5
  "type": "module",
6
6
  "files": [