diff --git a/messages/en.json b/messages/en.json
index 1a828873..3d95de2e 100644
--- a/messages/en.json
+++ b/messages/en.json
@@ -792,5 +792,7 @@
"license_adjust_nodes_fifo_hint": "FIFO mode: nodes are authorized in the order they joined the cluster.",
"license_adjust_nodes_readonly": "This license has expired or is invalid. Node adjustments are not allowed.",
"license_adjust_nodes_last_accepted": "Last accepted: ",
+ "alerting": "Alerting",
+ "alerting_description": "Email platform alerts through an SMTP server.",
"containers_without_limit": "{uncapped} of {containers} containers declare no limit"
}
diff --git a/messages/zh-hant.json b/messages/zh-hant.json
index 905e468a..126de47c 100644
--- a/messages/zh-hant.json
+++ b/messages/zh-hant.json
@@ -792,5 +792,7 @@
"license_adjust_nodes_fifo_hint": "FIFO 模式:節點依加入叢集的順序自動授權。",
"license_adjust_nodes_readonly": "此授權已過期或無效,無法調整節點設定。",
"license_adjust_nodes_last_accepted": "上次接受:",
+ "alerting": "告警",
+ "alerting_description": "透過 SMTP 郵件伺服器寄送平台告警。",
"containers_without_limit": "{containers} 個容器中有 {uncapped} 個未宣告 Limit"
}
diff --git a/src/lib/components/alerting/alerting-settings.svelte b/src/lib/components/alerting/alerting-settings.svelte
new file mode 100644
index 00000000..091993dc
--- /dev/null
+++ b/src/lib/components/alerting/alerting-settings.svelte
@@ -0,0 +1,18 @@
+
diff --git a/src/lib/utils/alerting.ts b/src/lib/utils/alerting.ts
new file mode 100644
index 00000000..154b23c0
--- /dev/null
+++ b/src/lib/utils/alerting.ts
@@ -0,0 +1,32 @@
+/* eslint-disable @typescript-eslint/no-explicit-any */
+// Placeholder — the enterprise edition overlays this file (ee/src).
+
+export type SmtpSettings = any;
+export type AlertRule = any;
+export type AlertingOverview = any;
+export type TestPhase = any;
+
+export class AlertingConflictError extends Error {}
+
+export function parseAlerting(...args: any[]): any {
+ void args;
+ return {};
+}
+
+export async function loadAlerting(...args: any[]): Promise {
+ void args;
+ return null;
+}
+
+export async function saveAlerting(...args: any[]): Promise {
+ void args;
+ return {};
+}
+
+export async function disableAlerting(...args: any[]): Promise {
+ void args;
+}
+
+export async function sendTestEmail(...args: any[]): Promise {
+ void args;
+}
diff --git a/src/routes/(auth)/[cluster]/[workspace]/alerting/+page.svelte b/src/routes/(auth)/[cluster]/[workspace]/alerting/+page.svelte
new file mode 100644
index 00000000..e69de29b
diff --git a/vite.config.ts b/vite.config.ts
index 61ead973..feeaf1c4 100644
--- a/vite.config.ts
+++ b/vite.config.ts
@@ -48,7 +48,7 @@ export default defineConfig({
test: {
name: 'server',
environment: 'node',
- include: ['src/**/*.{test,spec}.{js,ts}'],
+ include: ['src/**/*.{test,spec}.{js,ts}', 'ee/src/**/*.{test,spec}.{js,ts}'],
exclude: ['src/**/*.svelte.{test,spec}.{js,ts}']
}
}