This is an automated email from the ASF dual-hosted git repository.

gongchao pushed a commit to branch update-ai-with
in repository https://gitbox.apache.org/repos/asf/hertzbeat.git

commit 22d6ad7ec05898c31f4d21a98b2dee0caababd7e
Author: tomsun28 <[email protected]>
AuthorDate: Fri Oct 31 00:14:40 2025 +0800

    [webapp] update ui
    
    Signed-off-by: tomsun28 <[email protected]>
---
 .../shared/components/ai-chat/ai-chat.module.ts    |  4 +-
 .../shared/components/ai-chat/chat.component.html  | 75 ++++++++++------------
 .../shared/components/ai-chat/chat.component.ts    |  5 +-
 web-app/src/assets/i18n/en-US.json                 | 35 +++++++++-
 web-app/src/assets/i18n/ja-JP.json                 | 35 +++++++++-
 web-app/src/assets/i18n/pt-BR.json                 | 35 +++++++++-
 web-app/src/assets/i18n/zh-CN.json                 | 35 +++++++++-
 web-app/src/assets/i18n/zh-TW.json                 | 35 +++++++++-
 8 files changed, 208 insertions(+), 51 deletions(-)

diff --git a/web-app/src/app/shared/components/ai-chat/ai-chat.module.ts 
b/web-app/src/app/shared/components/ai-chat/ai-chat.module.ts
index ca16c108b..b63cd3808 100644
--- a/web-app/src/app/shared/components/ai-chat/ai-chat.module.ts
+++ b/web-app/src/app/shared/components/ai-chat/ai-chat.module.ts
@@ -30,6 +30,7 @@ import { NzMessageModule } from 'ng-zorro-antd/message';
 import { NzModalModule } from 'ng-zorro-antd/modal';
 import { NzSelectModule } from 'ng-zorro-antd/select';
 import { NzSpinModule } from 'ng-zorro-antd/spin';
+import { NzTooltipDirective } from 'ng-zorro-antd/tooltip';
 import { MarkdownPipe } from 'ngx-markdown';
 
 import { ChatComponent } from './chat.component';
@@ -50,7 +51,8 @@ import { ChatComponent } from './chat.component';
     NzModalModule,
     NzSelectModule,
     NzSpinModule,
-    MarkdownPipe
+    MarkdownPipe,
+    NzTooltipDirective
   ],
   exports: [ChatComponent]
 })
diff --git a/web-app/src/app/shared/components/ai-chat/chat.component.html 
b/web-app/src/app/shared/components/ai-chat/chat.component.html
index 5bd402e1d..67b0309fa 100644
--- a/web-app/src/app/shared/components/ai-chat/chat.component.html
+++ b/web-app/src/app/shared/components/ai-chat/chat.component.html
@@ -24,7 +24,7 @@
       <h3>{{ 'menu.extras.ai.chat' | i18n }}</h3>
       <button nz-button nzType="primary" nzSize="small" 
(click)="createNewConversation()" [disabled]="isSendingMessage">
         <i nz-icon nzType="plus"></i>
-        New Chat
+        {{ 'ai.chat.new-chat' | i18n }}
       </button>
     </div>
 
@@ -62,7 +62,7 @@
         <h2 *ngIf="currentConversation">
           {{ getConversationTitle(currentConversation) }}
         </h2>
-        <h2 *ngIf="!currentConversation"> HertzBeat AI </h2>
+        <h2 *ngIf="!currentConversation">{{ 'ai.chat.title' | i18n }}</h2>
       </div>
     </div>
 
@@ -75,27 +75,26 @@
             <i nz-icon nzType="loading" nzSpin></i>
           </ng-template>
         </nz-spin>
-        <p>Loading conversation history...</p>
+        <p>{{ 'ai.chat.loading' | i18n }}</p>
       </div>
 
       <!-- Welcome message -->
       <div *ngIf="messages.length === 0 && !isLoadingConversations" 
class="welcome-message">
         <div class="welcome-content">
           <img [src]="theme === 'dark' ? 'assets/logo_white.svg' : 
'assets/logo.svg'" alt="HertzBeat Logo" class="welcome-icon" />
-          <h3>Welcome to HertzBeat AI!</h3>
-          <p>
-            I'm your intelligent monitoring companion, ready to help you 
manage and optimize your infrastructure monitoring. You can ask me
-            to:
+          <h3 class="welcome-title">{{ 'ai.chat.welcome.title' | i18n }}</h3>
+          <p class="welcome-description">
+            {{ 'ai.chat.welcome.description' | i18n }}
           </p>
-          <ul>
-            <li>🔍 Query and manage monitors by status, type, or labels</li>
-            <li>➕ Add new monitors for websites, APIs, databases, and 
services</li>
-            <li>🚨 View and analyze alerts with comprehensive filtering</li>
-            <li>📊 Access real-time and historical metrics data</li>
-            <li>⚙️ Configure alert rules and thresholds</li>
-            <li>⚡ Troubleshoot performance issues across your 
infrastructure</li>
+          <ul class="capabilities-list">
+            <li>{{ 'ai.chat.welcome.capabilities.monitor' | i18n }}</li>
+            <li>{{ 'ai.chat.welcome.capabilities.manage' | i18n }}</li>
+            <li>{{ 'ai.chat.welcome.capabilities.metrics' | i18n }}</li>
+            <li>{{ 'ai.chat.welcome.capabilities.alerts' | i18n }}</li>
+            <li>{{ 'ai.chat.welcome.capabilities.config' | i18n }}</li>
+            <li>{{ 'ai.chat.welcome.capabilities.troubleshoot' | i18n }}</li>
           </ul>
-          <p>Ask me anything about your monitoring setup!</p>
+          <p class="welcome-question">{{ 'ai.chat.welcome.question' | i18n 
}}</p>
         </div>
       </div>
 
@@ -106,7 +105,7 @@
         </div>
         <div class="message-content">
           <div class="message-header">
-            <span class="message-role">{{ message.role === 'user' ? 'You' : 
'AI Assistant' }}</span>
+            <span class="message-role">{{ message.role === 'user' ? 
('ai.chat.user' | i18n) : ('ai.chat.assistant' | i18n) }}</span>
             <span class="message-time">{{ formatTime(message.timestamp) 
}}</span>
             <span
               *ngIf="message.role === 'assistant' && isSendingMessage && i === 
messages.length - 1 && message.content !== ''"
@@ -118,7 +117,7 @@
           </div>
           <div class="message-text" [innerHTML]="message.content"></div>
           <div *ngIf="message.role === 'assistant' && message.content === '' 
&& isSendingMessage" class="typing-indicator">
-            <span>AI is thinking...</span>
+            <span>{{ 'ai.chat.typing' | i18n }}</span>
           </div>
         </div>
       </div>
@@ -133,26 +132,20 @@
             [(ngModel)]="newMessage"
             (keypress)="onKeyPress($event)"
             [disabled]="isSendingMessage"
-            placeholder="Ask me anything about monitoring..."
+            placeholder="{{ 'ai.chat.input.placeholder' | i18n }}"
             rows="3"
             style="resize: none"
           ></textarea>
         </nz-textarea-count>
-        <button
-          nz-button
-          nzType="primary"
-          (click)="sendMessage()"
-          [disabled]="!newMessage.trim() || isSendingMessage"
-          class="send-button"
-        >
+        <button nz-button nzType="primary" (click)="sendMessage()" 
[disabled]="!newMessage.trim() || isSendingMessage" class="send-button">
           <i nz-icon [nzType]="isSendingMessage ? 'loading' : 'send'" 
[nzSpin]="isSendingMessage"></i>
         </button>
       </div>
       <div class="input-hint">
-        <small>Press Enter to send, Shift+Enter for new line</small>
+        <small>{{ 'ai.chat.input.hint' | i18n }}</small>
         <button nz-button nzType="link" nzSize="small" 
(click)="onShowConfigModal()" style="float: right">
           <i nz-icon nzType="setting"></i>
-          Modify API Key
+          {{ 'ai.chat.modify-api-key' | i18n }}
         </button>
       </div>
     </div>
@@ -162,26 +155,26 @@
 <!-- OpenAI Configuration Modal -->
 <nz-modal
   [(nzVisible)]="showConfigModal"
-  nzTitle="AI Provider Configuration"
+  [nzTitle]="'ai.chat.config.title' | i18n"
   (nzOnCancel)="onCloseConfigModal()"
   (nzOnOk)="onSaveAiProviderConfig()"
   nzMaskClosable="false"
   [nzClosable]="false"
   nzWidth="700px"
   [nzOkLoading]="configLoading"
-  nzOkText="Save"
-  nzCancelText="Cancel"
+  [nzOkText]="'ai.chat.config.save' | i18n"
+  [nzCancelText]="'ai.chat.config.cancel' | i18n"
 >
   <div *nzModalContent class="-inner-content">
     <form nz-form nzLayout="vertical">
       <!-- Provider Selection -->
       <nz-form-item>
-        <nz-form-label nzRequired="true">AI Provider</nz-form-label>
-        <nz-form-control nzErrorTip="Please select an AI provider">
+        <nz-form-label nzRequired="true">{{ 'ai.chat.config.provider' | i18n 
}}</nz-form-label>
+        <nz-form-control [nzErrorTip]="'ai.chat.config.provider.required' | 
i18n">
           <nz-select
             [(ngModel)]="aiProviderConfig.code"
             name="provider"
-            nzPlaceHolder="Select AI Provider"
+            [nzPlaceHolder]="'ai.chat.config.provider.help' | i18n"
             (ngModelChange)="onProviderChange($event)"
             style="width: 100%"
           >
@@ -193,16 +186,16 @@
 
       <!-- API Key -->
       <nz-form-item>
-        <nz-form-label nzRequired="true">API Key</nz-form-label>
-        <nz-form-control nzErrorTip="API Key is required">
+        <nz-form-label nzRequired="true">{{ 'ai.chat.config.api-key' | i18n 
}}</nz-form-label>
+        <nz-form-control [nzErrorTip]="'ai.chat.config.api-key.required' | 
i18n">
           <input nz-input [(ngModel)]="aiProviderConfig.apiKey" name="apiKey" 
type="password" placeholder="sk-..." required />
-          <p class="form-help">Your Provider API key. The key will be 
validated when saved.</p>
+          <p class="form-help">{{ 'ai.chat.config.api-key.help' | i18n }}</p>
         </nz-form-control>
       </nz-form-item>
 
       <!-- Base URL -->
       <nz-form-item>
-        <nz-form-label>Base URL</nz-form-label>
+        <nz-form-label>{{ 'ai.chat.config.base-url' | i18n }}</nz-form-label>
         <nz-form-control>
           <nz-input-group [nzSuffix]="resetBtn">
             <input nz-input [(ngModel)]="aiProviderConfig.baseUrl" 
name="baseUrl" placeholder="https://api.openai.com/v1"; />
@@ -212,23 +205,23 @@
                 nzType="link"
                 nzSize="small"
                 (click)="resetToDefaults()"
-                nzTooltipTitle="Reset to default values"
+                [nzTooltipTitle]="'ai.chat.config.reset' | i18n"
                 nz-tooltip
               >
                 <i nz-icon nzType="reload"></i>
               </button>
             </ng-template>
           </nz-input-group>
-          <p class="form-help">Custom API endpoint URL. Leave empty to use 
default for selected provider.</p>
+          <p class="form-help">{{ 'ai.chat.config.base-url.help' | i18n }}</p>
         </nz-form-control>
       </nz-form-item>
 
       <!-- Model -->
       <nz-form-item>
-        <nz-form-label>Model</nz-form-label>
+        <nz-form-label>{{ 'ai.chat.config.model' | i18n }}</nz-form-label>
         <nz-form-control>
           <input nz-input [(ngModel)]="aiProviderConfig.model" name="model" 
placeholder="gpt-4" />
-          <p class="form-help">Model name to use. Leave empty to use default 
for selected provider.</p>
+          <p class="form-help">{{ 'ai.chat.config.model.help' | i18n }}</p>
         </nz-form-control>
       </nz-form-item>
     </form>
diff --git a/web-app/src/app/shared/components/ai-chat/chat.component.ts 
b/web-app/src/app/shared/components/ai-chat/chat.component.ts
index 35cfbe9e0..e2df25043 100644
--- a/web-app/src/app/shared/components/ai-chat/chat.component.ts
+++ b/web-app/src/app/shared/components/ai-chat/chat.component.ts
@@ -299,7 +299,7 @@ export class ChatComponent implements OnInit, OnDestroy {
         if (lastMessage && lastMessage.role === 'assistant') {
           // Accumulate the content for streaming effect
           lastMessage.content += chunk.content;
-          lastMessage.timestamp = chunk.timestamp instanceof Date ? 
chunk.timestamp : new Date();
+          lastMessage.timestamp = chunk.timestamp;
 
           this.cdr.detectChanges();
           this.scrollToBottom();
@@ -388,9 +388,6 @@ export class ChatComponent implements OnInit, OnDestroy {
    * Format time
    */
   formatTime(date: Date): string {
-    if (!(date instanceof Date)) {
-      date = new Date(date);
-    }
     return date.toLocaleTimeString('en-US', {
       hour: '2-digit',
       minute: '2-digit'
diff --git a/web-app/src/assets/i18n/en-US.json 
b/web-app/src/assets/i18n/en-US.json
index e05785581..bdf5731be 100644
--- a/web-app/src/assets/i18n/en-US.json
+++ b/web-app/src/assets/i18n/en-US.json
@@ -840,6 +840,7 @@
   "monitor.holdingRegisterAddresses.tip": "Input RegisterAddress",
   "monitor.host": "Target Host",
   "monitor.host.tip": "The target peer ip or domain name",
+  "monitor.help": "Monitoring and management page, you can check the metric 
data and manage monitoring tasks here. The status of normal service is",
   "monitor.icon.bigdata": "dot-chart",
   "monitor.icon.cache": "group",
   "monitor.icon.center": "laptop",
@@ -1061,5 +1062,37 @@
   "ai.bot.input.placeholder": "Please enter a question...",
   "ai.bot.send": "Send",
   "ai.bot.connect-fail": "Sorry, there was an issue connecting to the AI 
assistant. Please try again later.",
-  "monitor.help": "Monitoring and management page, you can check the metric 
data and manage monitoring tasks here. The status of normal service is"
+  "ai.chat.assistant": "AI Assistant",
+  "ai.chat.config.api-key": "API Key",
+  "ai.chat.config.api-key.help": "Your Provider API key. The key will be 
validated when saved.",
+  "ai.chat.config.api-key.required": "API Key is required",
+  "ai.chat.config.base-url": "Base URL",
+  "ai.chat.config.base-url.help": "Custom API endpoint URL. Leave empty to use 
default for selected provider.",
+  "ai.chat.config.cancel": "Cancel",
+  "ai.chat.config.model": "Model",
+  "ai.chat.config.model.help": "Model name to use. Leave empty to use default 
for selected provider.",
+  "ai.chat.config.provider": "AI Provider",
+  "ai.chat.config.provider.help": "Choose your AI provider (OpenAI, ZhiPu, or 
ZAI)",
+  "ai.chat.config.provider.required": "Please select an AI provider",
+  "ai.chat.config.reset": "Reset to default values",
+  "ai.chat.config.save": "Save",
+  "ai.chat.config.title": "AI Provider Configuration",
+  "ai.chat.input.hint": "Press Enter to send, Shift+Enter for new line",
+  "ai.chat.input.placeholder": "Ask me anything about monitoring...",
+  "ai.chat.loading": "Loading conversation history...",
+  "ai.chat.modify-api-key": "Modify API Key",
+  "ai.chat.new-chat": "New Chat",
+  "ai.chat.thinking": "AI is thinking...",
+  "ai.chat.title": "HertzBeat AI",
+  "ai.chat.typing": "Typing...",
+  "ai.chat.user": "You",
+  "ai.chat.welcome.capabilities.alerts": "View and analyze alerts with 
comprehensive filtering",
+  "ai.chat.welcome.capabilities.config": "Configure alert rules and 
thresholds",
+  "ai.chat.welcome.capabilities.manage": "Query and manage monitors by status, 
type, or labels",
+  "ai.chat.welcome.capabilities.metrics": "Access real-time and historical 
metrics data",
+  "ai.chat.welcome.capabilities.monitor": "Add new monitors for websites, 
APIs, databases, and services",
+  "ai.chat.welcome.capabilities.troubleshoot": "Troubleshoot performance 
issues across your infrastructure",
+  "ai.chat.welcome.description": "I'm your intelligent monitoring companion, 
ready to help you manage and optimize your infrastructure monitoring. You can 
ask me to:",
+  "ai.chat.welcome.question": "Ask me anything about your monitoring setup!",
+  "ai.chat.welcome.title": "Welcome to HertzBeat AI!"
 }
diff --git a/web-app/src/assets/i18n/ja-JP.json 
b/web-app/src/assets/i18n/ja-JP.json
index c0961caa5..26c6790dc 100644
--- a/web-app/src/assets/i18n/ja-JP.json
+++ b/web-app/src/assets/i18n/ja-JP.json
@@ -1036,5 +1036,38 @@
   "ai.bot.greeting": "こんにちは!私はAIアシスタントです。何かお手伝いできることはありますか?",
   "ai.bot.input.placeholder": "質問を入力してください...",
   "ai.bot.send": "送信",
-  "ai.bot.connect-fail": "申し訳ありません、AIアシスタントへの接続中に問題が発生しました。後ほど再度お試しください。"
+  "ai.bot.connect-fail": "申し訳ありません、AIアシスタントへの接続中に問題が発生しました。後ほど再度お試しください。",
+  "ai.chat.assistant": "AI アシスタント",
+  "ai.chat.config.api-key": "API キー",
+  "ai.chat.config.api-key.help": "プロバイダーの API キー。保存時にキーが検証されます。",
+  "ai.chat.config.api-key.required": "API キーが必要です",
+  "ai.chat.config.base-url": "ベース URL",
+  "ai.chat.config.base-url.help": "カスタム API エンドポイント 
URL。選択したプロバイダーのデフォルトを使用する場合は空のままにしてください。",
+  "ai.chat.config.cancel": "キャンセル",
+  "ai.chat.config.model": "モデル",
+  "ai.chat.config.model.help": "使用するモデル名。選択したプロバイダーのデフォルトを使用する場合は空のままにしてください。",
+  "ai.chat.config.provider": "AI プロバイダー",
+  "ai.chat.config.provider.help": "AI プロバイダーを選択してください(OpenAI、ZhiPu、または ZAI)",
+  "ai.chat.config.provider.required": "AI プロバイダーを選択してください",
+  "ai.chat.config.reset": "デフォルト値にリセット",
+  "ai.chat.config.save": "保存",
+  "ai.chat.config.title": "AI プロバイダー設定",
+  "ai.chat.input.hint": "Enter で送信、Shift+Enter で改行",
+  "ai.chat.input.placeholder": "監視について何でもお聞きください...",
+  "ai.chat.loading": "会話履歴を読み込み中...",
+  "ai.chat.modify-api-key": "API キーを変更",
+  "ai.chat.new-chat": "新しいチャット",
+  "ai.chat.thinking": "AI が考え中...",
+  "ai.chat.title": "HertzBeat AI",
+  "ai.chat.typing": "入力中...",
+  "ai.chat.user": "あなた",
+  "ai.chat.welcome.capabilities.alerts": "包括的なフィルタリングでアラートを表示・分析",
+  "ai.chat.welcome.capabilities.config": "アラートルールと閾値を設定",
+  "ai.chat.welcome.capabilities.manage": "ステータス、タイプ、ラベルでモニターを照会・管理",
+  "ai.chat.welcome.capabilities.metrics": "リアルタイムおよび履歴メトリクスデータにアクセス",
+  "ai.chat.welcome.capabilities.monitor": "ウェブサイト、API、データベース、サービスの新しいモニターを追加",
+  "ai.chat.welcome.capabilities.troubleshoot": 
"インフラストラクチャ全体のパフォーマンス問題をトラブルシューティング",
+  "ai.chat.welcome.description": 
"私はあなたのインテリジェントな監視パートナーです。インフラストラクチャ監視の管理と最適化をお手伝いします。以下のことをお尋ねいただけます:",
+  "ai.chat.welcome.question": "監視設定について何でもお聞きください!",
+  "ai.chat.welcome.title": "HertzBeat AI へようこそ!"
 }
diff --git a/web-app/src/assets/i18n/pt-BR.json 
b/web-app/src/assets/i18n/pt-BR.json
index d1cd0915f..bfca079c2 100644
--- a/web-app/src/assets/i18n/pt-BR.json
+++ b/web-app/src/assets/i18n/pt-BR.json
@@ -1321,5 +1321,38 @@
   "ai.bot.greeting": "Olá! Sou um assistente de IA. Como posso te ajudar?",
   "ai.bot.input.placeholder": "Digite sua pergunta...",
   "ai.bot.send": "Enviar",
-  "ai.bot.connect-fail": "Desculpe, ocorreu um problema ao conectar ao 
assistente de IA. Por favor, tente novamente mais tarde."
+  "ai.bot.connect-fail": "Desculpe, ocorreu um problema ao conectar ao 
assistente de IA. Por favor, tente novamente mais tarde.",
+  "ai.chat.assistant": "Assistente de IA",
+  "ai.chat.config.api-key": "Chave da API",
+  "ai.chat.config.api-key.help": "Sua chave da API do provedor. A chave será 
validada ao salvar.",
+  "ai.chat.config.api-key.required": "Chave da API é obrigatória",
+  "ai.chat.config.base-url": "URL Base",
+  "ai.chat.config.base-url.help": "URL personalizada do endpoint da API. Deixe 
vazio para usar o padrão do provedor selecionado.",
+  "ai.chat.config.cancel": "Cancelar",
+  "ai.chat.config.model": "Modelo",
+  "ai.chat.config.model.help": "Nome do modelo a ser usado. Deixe vazio para 
usar o padrão do provedor selecionado.",
+  "ai.chat.config.provider": "Provedor de IA",
+  "ai.chat.config.provider.help": "Escolha seu provedor de IA (OpenAI, ZhiPu 
ou ZAI)",
+  "ai.chat.config.provider.required": "Por favor, selecione um provedor de IA",
+  "ai.chat.config.reset": "Redefinir para valores padrão",
+  "ai.chat.config.save": "Salvar",
+  "ai.chat.config.title": "Configuração do Provedor de IA",
+  "ai.chat.input.hint": "Pressione Enter para enviar, Shift+Enter para nova 
linha",
+  "ai.chat.input.placeholder": "Pergunte-me qualquer coisa sobre 
monitoramento...",
+  "ai.chat.loading": "Carregando histórico da conversa...",
+  "ai.chat.modify-api-key": "Modificar Chave da API",
+  "ai.chat.new-chat": "Nova Conversa",
+  "ai.chat.thinking": "IA está pensando...",
+  "ai.chat.title": "HertzBeat AI",
+  "ai.chat.typing": "Digitando...",
+  "ai.chat.user": "Você",
+  "ai.chat.welcome.capabilities.alerts": "Visualizar e analisar alertas com 
filtragem abrangente",
+  "ai.chat.welcome.capabilities.config": "Configurar regras de alerta e 
limites",
+  "ai.chat.welcome.capabilities.manage": "Consultar e gerenciar monitores por 
status, tipo ou rótulos",
+  "ai.chat.welcome.capabilities.metrics": "Acessar dados de métricas em tempo 
real e históricos",
+  "ai.chat.welcome.capabilities.monitor": "Adicionar novos monitores para 
sites, APIs, bancos de dados e serviços",
+  "ai.chat.welcome.capabilities.troubleshoot": "Solucionar problemas de 
desempenho em toda sua infraestrutura",
+  "ai.chat.welcome.description": "Sou seu companheiro inteligente de 
monitoramento, pronto para ajudá-lo a gerenciar e otimizar o monitoramento de 
sua infraestrutura. Você pode me pedir para:",
+  "ai.chat.welcome.question": "Pergunte-me qualquer coisa sobre sua 
configuração de monitoramento!",
+  "ai.chat.welcome.title": "Bem-vindo ao HertzBeat AI!"
 }
diff --git a/web-app/src/assets/i18n/zh-CN.json 
b/web-app/src/assets/i18n/zh-CN.json
index aea4f10c9..4e4e9e859 100644
--- a/web-app/src/assets/i18n/zh-CN.json
+++ b/web-app/src/assets/i18n/zh-CN.json
@@ -843,6 +843,7 @@
   "monitor.holdingRegisterAddresses.tip": "输入寄存器地址",
   "monitor.host": "目标Host",
   "monitor.host.tip": "被监控的对端IP或域名",
+  "monitor.help": "监控管理页面,您可以在此查看指标数据并管理监控任务。正常服务的状态为",
   "monitor.icon.bigdata": "dot-chart",
   "monitor.icon.cache": "group",
   "monitor.icon.center": "laptop",
@@ -1064,5 +1065,37 @@
   "ai.bot.input.placeholder": "请输入问题...",
   "ai.bot.send": "发送",
   "ai.bot.connect-fail": "抱歉,连接AI助手时出现问题,请稍后再试。",
-  "monitor.help": "监控管理页面,您可以在此查看指标数据并管理监控任务。正常服务的状态为"
+  "ai.chat.assistant": "AI 助手",
+  "ai.chat.config.api-key": "API 密钥",
+  "ai.chat.config.api-key.help": "您的提供商 API 密钥。保存时将验证密钥。",
+  "ai.chat.config.api-key.required": "API 密钥是必需的",
+  "ai.chat.config.base-url": "基础 URL",
+  "ai.chat.config.base-url.help": "自定义 API 端点 URL。留空则使用所选提供商的默认值。",
+  "ai.chat.config.cancel": "取消",
+  "ai.chat.config.model": "模型",
+  "ai.chat.config.model.help": "要使用的模型名称。留空则使用所选提供商的默认值。",
+  "ai.chat.config.provider": "AI 提供商",
+  "ai.chat.config.provider.help": "选择您的 AI 提供商(OpenAI、智谱或 ZAI)",
+  "ai.chat.config.provider.required": "请选择 AI 提供商",
+  "ai.chat.config.reset": "重置为默认值",
+  "ai.chat.config.save": "保存",
+  "ai.chat.config.title": "AI 提供商配置",
+  "ai.chat.input.hint": "按 Enter 发送,Shift+Enter 换行",
+  "ai.chat.input.placeholder": "询问任何关于监控的问题...",
+  "ai.chat.loading": "正在加载对话历史...",
+  "ai.chat.modify-api-key": "修改 API 密钥",
+  "ai.chat.new-chat": "新建对话",
+  "ai.chat.thinking": "AI 正在思考...",
+  "ai.chat.title": "HertzBeat AI",
+  "ai.chat.typing": "正在输入...",
+  "ai.chat.user": "您",
+  "ai.chat.welcome.capabilities.alerts": "查看和分析具有全面过滤功能的告警",
+  "ai.chat.welcome.capabilities.config": "配置告警规则和阈值",
+  "ai.chat.welcome.capabilities.manage": "按状态、类型或标签查询和管理监控器",
+  "ai.chat.welcome.capabilities.metrics": "访问实时和历史指标数据",
+  "ai.chat.welcome.capabilities.monitor": "为网站、API、数据库和服务添加新的监控器",
+  "ai.chat.welcome.capabilities.troubleshoot": "排查整个基础设施的性能问题",
+  "ai.chat.welcome.description": "我是您的智能监控伙伴,随时准备帮助您管理和优化基础设施监控。您可以要求我:",
+  "ai.chat.welcome.question": "询问我任何关于您的监控设置的问题!",
+  "ai.chat.welcome.title": "欢迎使用 HertzBeat AI!"
 }
diff --git a/web-app/src/assets/i18n/zh-TW.json 
b/web-app/src/assets/i18n/zh-TW.json
index 9a716351c..04b0d6194 100644
--- a/web-app/src/assets/i18n/zh-TW.json
+++ b/web-app/src/assets/i18n/zh-TW.json
@@ -1050,5 +1050,38 @@
   "ai.bot.greeting": "你好!我是AI助手,有什麽可以幫助你的嗎?",
   "ai.bot.input.placeholder": "請輸入問題...",
   "ai.bot.send": "傳送",
-  "ai.bot.connect-fail": "抱歉,連線至AI助手時出現問題,請稍後再試。"
+  "ai.bot.connect-fail": "抱歉,連線至AI助手時出現問題,請稍後再試。",
+  "ai.chat.assistant": "AI 助手",
+  "ai.chat.config.api-key": "API 金鑰",
+  "ai.chat.config.api-key.help": "您的提供商 API 金鑰。儲存時將驗證金鑰。",
+  "ai.chat.config.api-key.required": "API 金鑰是必需的",
+  "ai.chat.config.base-url": "基礎 URL",
+  "ai.chat.config.base-url.help": "自訂 API 端點 URL。留空則使用所選提供商的預設值。",
+  "ai.chat.config.cancel": "取消",
+  "ai.chat.config.model": "模型",
+  "ai.chat.config.model.help": "要使用的模型名稱。留空則使用所選提供商的預設值。",
+  "ai.chat.config.provider": "AI 提供商",
+  "ai.chat.config.provider.help": "選擇您的 AI 提供商(OpenAI、智譜或 ZAI)",
+  "ai.chat.config.provider.required": "請選擇 AI 提供商",
+  "ai.chat.config.reset": "重設為預設值",
+  "ai.chat.config.save": "儲存",
+  "ai.chat.config.title": "AI 提供商配置",
+  "ai.chat.input.hint": "按 Enter 傳送,Shift+Enter 換行",
+  "ai.chat.input.placeholder": "詢問任何關於監控的問題...",
+  "ai.chat.loading": "正在載入對話歷史...",
+  "ai.chat.modify-api-key": "修改 API 金鑰",
+  "ai.chat.new-chat": "新建對話",
+  "ai.chat.thinking": "AI 正在思考...",
+  "ai.chat.title": "HertzBeat AI",
+  "ai.chat.typing": "正在輸入...",
+  "ai.chat.user": "您",
+  "ai.chat.welcome.capabilities.alerts": "檢視和分析具有全面過濾功能的告警",
+  "ai.chat.welcome.capabilities.config": "配置告警規則和閾值",
+  "ai.chat.welcome.capabilities.manage": "按狀態、類型或標籤查詢和管理監控器",
+  "ai.chat.welcome.capabilities.metrics": "存取即時和歷史指標資料",
+  "ai.chat.welcome.capabilities.monitor": "為網站、API、資料庫和服務新增新的監控器",
+  "ai.chat.welcome.capabilities.troubleshoot": "排查整個基礎設施的效能問題",
+  "ai.chat.welcome.description": "我是您的智慧監控夥伴,隨時準備幫助您管理和最佳化基礎設施監控。您可以要求我:",
+  "ai.chat.welcome.question": "詢問我任何關於您的監控設定的問題!",
+  "ai.chat.welcome.title": "歡迎使用 HertzBeat AI!"
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to