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

wu-sheng pushed a commit to branch feat/explore
in repository https://gitbox.apache.org/repos/asf/skywalking-horizon-ui.git

commit f602ea2a9316fb588d606eac14a8ed5d6f6d8157
Author: Wu Sheng <[email protected]>
AuthorDate: Tue Jun 23 20:58:47 2026 +0800

    refactor(inspect): remove the MQE-target panel from the Inspect page
    
    Drop the read-only "where execExpression fires" base-URL panel and the
    GET /api/inspect/mqe-target route that fed it (UI query, api method,
    response type, RBAC entry, i18n keys). The MqeTargetCache resolver
    stays — exec/server-time still use it to know where execExpression
    fires; only the operator-facing display surface is gone.
---
 apps/bff/src/http/admin/inspect.ts                 | 27 ----------
 apps/bff/src/rbac/route-policy.ts                  |  1 -
 apps/ui/src/api/client.ts                          |  7 ---
 apps/ui/src/api/scopes/inspect.ts                  |  6 ---
 .../src/features/operate/inspect/InspectView.vue   | 57 +++-------------------
 apps/ui/src/i18n/locales/de.json                   |  5 --
 apps/ui/src/i18n/locales/en.json                   |  6 ---
 apps/ui/src/i18n/locales/es.json                   |  5 --
 apps/ui/src/i18n/locales/fr.json                   |  5 --
 apps/ui/src/i18n/locales/ja.json                   |  5 --
 apps/ui/src/i18n/locales/ko.json                   |  5 --
 apps/ui/src/i18n/locales/pt.json                   |  5 --
 apps/ui/src/i18n/locales/zh-CN.json                |  5 --
 13 files changed, 6 insertions(+), 133 deletions(-)

diff --git a/apps/bff/src/http/admin/inspect.ts 
b/apps/bff/src/http/admin/inspect.ts
index 44d1455..adbd587 100644
--- a/apps/bff/src/http/admin/inspect.ts
+++ b/apps/bff/src/http/admin/inspect.ts
@@ -165,33 +165,6 @@ export function registerInspectRoutes(app: 
FastifyInstance, deps: InspectRouteDe
     },
   );
 
-  // ── /api/inspect/mqe-target ──────────────────────────────────────
-  // Resolves the GraphQL base URL for MQE `execExpression` calls.
-  // The result is cached for ~60s; `?refresh=true` busts the cache
-  // so the operator can re-pull after reconfiguring OAP.
-
-  app.get(
-    '/api/inspect/mqe-target',
-    { preHandler: auth },
-    async (req: FastifyRequest, reply: FastifyReply) => {
-      if (!ensureVerb(req, reply, deps, 'inspect:read')) return;
-      const q = req.query as Record<string, string | undefined>;
-      if (q.refresh === 'true' || q.refresh === '1') mqeTarget.invalidate();
-      try {
-        const target = await mqeTarget.resolve({
-          config: () => deps.config.current,
-          fetch: deps.fetch ?? globalThis.fetch.bind(globalThis),
-        });
-        return reply.send(target);
-      } catch (err) {
-        return reply.code(502).send({
-          error: 'mqe_target_unresolved',
-          message: err instanceof Error ? err.message : String(err),
-        });
-      }
-    },
-  );
-
   // ── /api/inspect/server-time ─────────────────────────────────────
   // Caches OAP's `getTimeInfo` so the SPA can display dates in browser
   // local TZ while sending server-TZ strings to OAP.
diff --git a/apps/bff/src/rbac/route-policy.ts 
b/apps/bff/src/rbac/route-policy.ts
index 0b81b4e..b147182 100644
--- a/apps/bff/src/rbac/route-policy.ts
+++ b/apps/bff/src/rbac/route-policy.ts
@@ -142,7 +142,6 @@ export const ROUTE_POLICY: Record<string, RoutePolicy> = {
   'GET /api/cluster/state':                        'cluster:read',
   'GET /api/inspect/metrics':                      'inspect:read',
   'GET /api/inspect/catalog':                      'inspect:read',
-  'GET /api/inspect/mqe-target':                   'inspect:read',
   'GET /api/inspect/server-time':                  'inspect:read',
   'POST /api/inspect/exec':                        'inspect:read',
   'GET /api/inspect/entities':                     'inspect:read',
diff --git a/apps/ui/src/api/client.ts b/apps/ui/src/api/client.ts
index 995b4ac..1652b65 100644
--- a/apps/ui/src/api/client.ts
+++ b/apps/ui/src/api/client.ts
@@ -443,13 +443,6 @@ export interface InspectCatalogResponse {
   attributionFingerprint: string;
 }
 
-/** Discovered (or operator-overridden) MQE base URL. */
-export interface InspectMqeTargetResponse {
-  baseUrl: string;
-  via: string;
-  configured: { host?: string; port?: number };
-}
-
 // ── Alarms wire types (BFF-only) ──────────────────────────────────────
 // Kept inline because every shape is BFF-shaped — getAlarm gets layer-
 // tagged per row, traffic is BFF-aggregated, the config is a BFF file.
diff --git a/apps/ui/src/api/scopes/inspect.ts 
b/apps/ui/src/api/scopes/inspect.ts
index 7eff4d4..ea5d51d 100644
--- a/apps/ui/src/api/scopes/inspect.ts
+++ b/apps/ui/src/api/scopes/inspect.ts
@@ -24,7 +24,6 @@ import type {
 import type {
   BffClient,
   InspectCatalogResponse,
-  InspectMqeTargetResponse,
   InspectServerTimeResponse,
 } from '../client';
 
@@ -57,11 +56,6 @@ export class InspectApi {
     );
   }
 
-  mqeTarget(refresh = false): Promise<InspectMqeTargetResponse> {
-    const path = refresh ? '/api/inspect/mqe-target?refresh=true' : 
'/api/inspect/mqe-target';
-    return this.bff.request<InspectMqeTargetResponse>('GET', path);
-  }
-
   exec(req: InspectExecRequest): Promise<ExpressionResult> {
     return this.bff.request<ExpressionResult>('POST', '/api/inspect/exec', 
req);
   }
diff --git a/apps/ui/src/features/operate/inspect/InspectView.vue 
b/apps/ui/src/features/operate/inspect/InspectView.vue
index 6e396a3..4baa3b0 100644
--- a/apps/ui/src/features/operate/inspect/InspectView.vue
+++ b/apps/ui/src/features/operate/inspect/InspectView.vue
@@ -25,13 +25,12 @@
  *   - `GET /api/inspect/catalog`     — full /inspect/metrics + Studio
  *                                      attribution (source + file).
  *   - `GET /api/inspect/entities`    — per-widget entity enumeration.
- *   - `GET /api/inspect/mqe-target`  — resolved MQE base URL.
  *   - `POST /api/inspect/exec`       — fires `execExpression` and
  *                                      returns the ExpressionResult.
  *
  * Refresh: the header button invalidates every `['inspect', …]`
- * vue-query key AND passes `refresh=true` to the catalog + mqe-target
- * endpoints so the BFF rebuilds its attribution / dump caches.
+ * vue-query key AND passes `refresh=true` to the catalog endpoint so
+ * the BFF rebuilds its attribution cache.
  */
 import { computed, reactive, ref, watch, watchEffect } from 'vue';
 import { useI18n } from 'vue-i18n';
@@ -291,15 +290,6 @@ const inspectNotEnabled = computed(() => {
   return false;
 });
 
-// ─── MQE target query ──────────────────────────────────────────────
-
-const mqeTargetQuery = useQuery({
-  queryKey: ['inspect', 'mqe-target'],
-  queryFn: () => bff.inspect.mqeTarget(),
-  staleTime: 60_000,
-  refetchOnWindowFocus: false,
-});
-
 // ─── Filter state for the drawer ───────────────────────────────────
 
 const drawerOpen = ref(false);
@@ -952,16 +942,15 @@ async function rerunInspectFor(w: Widget) {
 // ─── Refresh ───────────────────────────────────────────────────────
 
 async function refreshEverything() {
-  /* 1. Bust BFF-side caches (attribution + mqe-target + server-time).
-   *    These imperative calls return fresh data; vue-query state is
+  /* 1. Bust BFF-side caches (attribution + server-time). These
+   *    imperative calls return fresh data; vue-query state is
    *    refreshed in step 2. */
   await Promise.all([
     bff.inspect.catalog(true),
-    bff.inspect.mqeTarget(true),
     bff.inspect.serverTime(true),
   ]);
   /* 2. Invalidate every vue-query under the `inspect` prefix —
-   *    catalog / mqe-target / server-time all re-pull. */
+   *    catalog / server-time all re-pull. */
   await queryClient.invalidateQueries({ queryKey: ['inspect'] });
   /* 3. Re-resolve entities AND re-fire MQE for every widget on the
    *    board, in parallel. We don't gate on `resolvedFetched` — a
@@ -1089,26 +1078,6 @@ function scopeShort(scope: InspectScope): string {
       </div>
     </section>
 
-    <!-- MQE target -->
-    <section class="ins__mqe">
-      <header class="ins__sectionhead">
-        {{ t('mqe target') }}
-        <span class="ins__sectionhint">
-          {{ t('where execExpression fires · resolved via 
/debugging/config/dump on the admin server') }}
-        </span>
-      </header>
-      <div class="mqe">
-        <div class="mqe__row">
-          <span class="ins__lbl">{{ t('effective') }}</span>
-          <code v-if="mqeTargetQuery.data.value" class="mqe__url">{{ 
mqeTargetQuery.data.value.baseUrl }}</code>
-          <code v-else-if="mqeTargetQuery.isPending.value" class="mqe__url">{{ 
t('resolving…') }}</code>
-          <code v-else class="mqe__url mqe__url--err">{{ t('unresolved') 
}}</code>
-          <span v-if="mqeTargetQuery.data.value" class="mqe__via">{{ 
mqeTargetQuery.data.value.via }}</span>
-          <span v-else-if="mqeTargetQuery.isError.value" class="mqe__via">{{ 
describeApiError(mqeTargetQuery.error.value) }}</span>
-        </div>
-      </div>
-    </section>
-
     <!-- Board -->
     <section class="ins__board-section">
       <header class="ins__sectionhead">
@@ -1498,7 +1467,7 @@ function scopeShort(scope: InspectScope): string {
   letter-spacing: 0;
 }
 
-.ins__filters, .ins__mqe, .ins__board-section { display: flex; flex-direction: 
column; gap: 6px; }
+.ins__filters, .ins__board-section { display: flex; flex-direction: column; 
gap: 6px; }
 .ins__filters-body {
   display: flex;
   flex-wrap: wrap;
@@ -1583,20 +1552,6 @@ function scopeShort(scope: InspectScope): string {
   color: var(--rr-heading);
 }
 
-.mqe {
-  background: var(--rr-bg2);
-  border: 1px solid var(--rr-border);
-  border-radius: var(--rr-radius-sm);
-  padding: 10px 12px;
-}
-.mqe__row { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 
14px; }
-.mqe__url {
-  font-family: var(--rr-font-mono);
-  font-size: var(--sw-fs-sm);
-  color: var(--rr-heading);
-}
-.mqe__url--err { color: var(--rr-err); }
-.mqe__via { font-family: var(--rr-font-mono); font-size: var(--sw-fs-base); 
color: var(--rr-dim); flex: 1; }
 
 .ins__empty {
   padding: 24px;
diff --git a/apps/ui/src/i18n/locales/de.json b/apps/ui/src/i18n/locales/de.json
index 333e395..98a0799 100644
--- a/apps/ui/src/i18n/locales/de.json
+++ b/apps/ui/src/i18n/locales/de.json
@@ -874,7 +874,6 @@
   "delete this entry (does not stop the OAP session)": "diesen Eintrag löschen 
(stoppt die OAP-Sitzung nicht)",
   "diff": "Diff",
   "disabled": "deaktiviert",
-  "effective": "effektiv",
   "empty family · 0 rows": "leere Familie · 0 Zeilen",
   "ends in": "endet auf",
   "entities · {metric}": "Entitäten · {metric}",
@@ -910,7 +909,6 @@
   "local file": "lokale Datei",
   "log analyzer · per-block + statement": "Log-Analyzer · pro Block + 
Anweisung",
   "meter analyzer · OTEL + log-mal": "Meter-Analyzer · OTEL + log-mal",
-  "mqe target": "MQE-Ziel",
   "mtime": "mtime",
   "multi · edit": "multi · bearbeiten",
   "must be an integer": "muss eine Ganzzahl sein",
@@ -972,7 +970,6 @@
   "resolves group memberships without authenticating": "löst 
Gruppenmitgliedschaften auf, ohne zu authentifizieren",
   "resolving entities…": "Entitäten werden aufgelöst…",
   "resolving server TZ…": "Server-Zeitzone wird aufgelöst…",
-  "resolving…": "wird aufgelöst…",
   "resume →": "fortsetzen →",
   "save failed": "Speichern fehlgeschlagen",
   "save failed: {msg}": "Speichern fehlgeschlagen: {msg}",
@@ -1004,14 +1001,12 @@
   "this node": "dieser Knoten",
   "top {n}": "Top {n}",
   "try a wider range or a coarser step (current: {step})": "versuche einen 
größeren Bereich oder einen gröberen Schritt (aktuell: {step})",
-  "unresolved": "unaufgelöst",
   "unsaved changes": "nicht gespeicherte Änderungen",
   "use for entities /inspect/entities did not surface.": "verwende für 
Entitäten, die /inspect/entities nicht zurückgegeben hat.",
   "username": "Benutzername",
   "value": "Wert",
   "values": "Werte",
   "visible": "sichtbar",
-  "where execExpression fires · resolved via /debugging/config/dump on the 
admin server": "wo execExpression feuert · aufgelöst über 
/debugging/config/dump auf dem Admin-Server",
   "which sidebar items each role sees · gated by the read verb in the last 
column (UI hides; the BFF enforces the same server-side)": "welche 
Sidebar-Einträge jede Rolle sieht · gesteuert durch das Lese-Verb in der 
letzten Spalte (das UI blendet aus; das BFF erzwingt dasselbe serverseitig)",
   "with": "mit",
   "{field} is required for scope {scope}": "{field} ist erforderlich für Scope 
{scope}",
diff --git a/apps/ui/src/i18n/locales/en.json b/apps/ui/src/i18n/locales/en.json
index b34fa73..72e8054 100644
--- a/apps/ui/src/i18n/locales/en.json
+++ b/apps/ui/src/i18n/locales/en.json
@@ -855,7 +855,6 @@
   "delete this entry (does not stop the OAP session)": "delete this entry 
(does not stop the OAP session)",
   "diff": "diff",
   "disabled": "disabled",
-  "effective": "effective",
   "empty family · 0 rows": "empty family · 0 rows",
   "ends in": "ends in",
   "entities · {metric}": "entities · {metric}",
@@ -891,7 +890,6 @@
   "local file": "local file",
   "log analyzer · per-block + statement": "log analyzer · per-block + 
statement",
   "meter analyzer · OTEL + log-mal": "meter analyzer · OTEL + log-mal",
-  "mqe target": "mqe target",
   "mtime": "mtime",
   "multi · edit": "multi · edit",
   "must be an integer": "must be an integer",
@@ -952,7 +950,6 @@
   "resolves group memberships without authenticating": "resolves group 
memberships without authenticating",
   "resolving entities…": "resolving entities…",
   "resolving server TZ…": "resolving server TZ…",
-  "resolving…": "resolving…",
   "resume →": "resume →",
   "save failed": "save failed",
   "save failed: {msg}": "save failed: {msg}",
@@ -984,14 +981,12 @@
   "this node": "this node",
   "top {n}": "top {n}",
   "try a wider range or a coarser step (current: {step})": "try a wider range 
or a coarser step (current: {step})",
-  "unresolved": "unresolved",
   "unsaved changes": "unsaved changes",
   "use for entities /inspect/entities did not surface.": "use for entities 
/inspect/entities did not surface.",
   "username": "username",
   "value": "value",
   "values": "values",
   "visible": "visible",
-  "where execExpression fires · resolved via /debugging/config/dump on the 
admin server": "where execExpression fires · resolved via 
/debugging/config/dump on the admin server",
   "which sidebar items each role sees · gated by the read verb in the last 
column (UI hides; the BFF enforces the same server-side)": "which sidebar items 
each role sees · gated by the read verb in the last column (UI hides; the BFF 
enforces the same server-side)",
   "with": "with",
   "{field} is required for scope {scope}": "{field} is required for scope 
{scope}",
@@ -1456,7 +1451,6 @@
   "Comparing {n} endpoints across services": "Comparing {n} endpoints across 
services",
   "Failed to load": "Failed to load",
   "{n} locked · lock 1 more to compare": "{n} locked · lock 1 more to compare",
-  "All": "All",
   "client send": "client send",
   "client receive": "client receive",
   "server receive": "server receive",
diff --git a/apps/ui/src/i18n/locales/es.json b/apps/ui/src/i18n/locales/es.json
index 6266fe0..3193901 100644
--- a/apps/ui/src/i18n/locales/es.json
+++ b/apps/ui/src/i18n/locales/es.json
@@ -874,7 +874,6 @@
   "delete this entry (does not stop the OAP session)": "eliminar esta entrada 
(no detiene la sesión de OAP)",
   "diff": "diff",
   "disabled": "deshabilitado",
-  "effective": "efectivo",
   "empty family · 0 rows": "familia vacía · 0 filas",
   "ends in": "termina en",
   "entities · {metric}": "entidades · {metric}",
@@ -910,7 +909,6 @@
   "local file": "archivo local",
   "log analyzer · per-block + statement": "analizador de logs · por bloque + 
sentencia",
   "meter analyzer · OTEL + log-mal": "analizador de meters · OTEL + log-mal",
-  "mqe target": "objetivo de mqe",
   "mtime": "mtime",
   "multi · edit": "múltiple · editar",
   "must be an integer": "debe ser un entero",
@@ -972,7 +970,6 @@
   "resolves group memberships without authenticating": "resuelve membresías de 
grupo sin autenticar",
   "resolving entities…": "resolviendo entidades…",
   "resolving server TZ…": "resolviendo TZ del servidor…",
-  "resolving…": "resolviendo…",
   "resume →": "reanudar →",
   "save failed": "fallo al guardar",
   "save failed: {msg}": "fallo al guardar: {msg}",
@@ -1004,14 +1001,12 @@
   "this node": "este nodo",
   "top {n}": "top {n}",
   "try a wider range or a coarser step (current: {step})": "prueba un rango 
más amplio o un step más grueso (actual: {step})",
-  "unresolved": "no resuelta",
   "unsaved changes": "cambios sin guardar",
   "use for entities /inspect/entities did not surface.": "úsalo para entidades 
que /inspect/entities no expuso.",
   "username": "usuario",
   "value": "valor",
   "values": "valores",
   "visible": "visible",
-  "where execExpression fires · resolved via /debugging/config/dump on the 
admin server": "donde se dispara execExpression · resuelto vía 
/debugging/config/dump en el admin server",
   "which sidebar items each role sees · gated by the read verb in the last 
column (UI hides; the BFF enforces the same server-side)": "qué elementos del 
menú lateral ve cada rol · controlado por el verbo de lectura en la última 
columna (la UI oculta; el BFF aplica lo mismo del lado del servidor)",
   "with": "con",
   "{field} is required for scope {scope}": "{field} es obligatorio para el 
scope {scope}",
diff --git a/apps/ui/src/i18n/locales/fr.json b/apps/ui/src/i18n/locales/fr.json
index 218d6e8..030b322 100644
--- a/apps/ui/src/i18n/locales/fr.json
+++ b/apps/ui/src/i18n/locales/fr.json
@@ -874,7 +874,6 @@
   "delete this entry (does not stop the OAP session)": "supprimer cette entrée 
(n'arrête pas la session OAP)",
   "diff": "diff",
   "disabled": "désactivé",
-  "effective": "effectif",
   "empty family · 0 rows": "famille vide · 0 ligne",
   "ends in": "se termine dans",
   "entities · {metric}": "entités · {metric}",
@@ -910,7 +909,6 @@
   "local file": "fichier local",
   "log analyzer · per-block + statement": "analyseur de logs · par bloc + 
instruction",
   "meter analyzer · OTEL + log-mal": "analyseur de meter · OTEL + log-mal",
-  "mqe target": "cible mqe",
   "mtime": "mtime",
   "multi · edit": "multi · éditer",
   "must be an integer": "doit être un entier",
@@ -972,7 +970,6 @@
   "resolves group memberships without authenticating": "résout les 
appartenances aux groupes sans authentifier",
   "resolving entities…": "résolution des entités…",
   "resolving server TZ…": "résolution du TZ serveur…",
-  "resolving…": "résolution…",
   "resume →": "reprendre →",
   "save failed": "échec de l'enregistrement",
   "save failed: {msg}": "échec de l'enregistrement : {msg}",
@@ -1004,14 +1001,12 @@
   "this node": "ce nœud",
   "top {n}": "top {n}",
   "try a wider range or a coarser step (current: {step})": "essayez une plage 
plus large ou un pas plus grossier (actuel : {step})",
-  "unresolved": "non résolu",
   "unsaved changes": "modifications non enregistrées",
   "use for entities /inspect/entities did not surface.": "à utiliser pour les 
entités que /inspect/entities n'a pas fait remonter.",
   "username": "nom d'utilisateur",
   "value": "valeur",
   "values": "valeurs",
   "visible": "visible",
-  "where execExpression fires · resolved via /debugging/config/dump on the 
admin server": "où execExpression se déclenche · résolu via 
/debugging/config/dump sur le serveur d'administration",
   "which sidebar items each role sees · gated by the read verb in the last 
column (UI hides; the BFF enforces the same server-side)": "quels éléments de 
la barre latérale chaque rôle voit · contrôlé par le verbe de lecture dans la 
dernière colonne (l'UI masque ; le BFF applique la même règle côté serveur)",
   "with": "avec",
   "{field} is required for scope {scope}": "{field} est requis pour la portée 
{scope}",
diff --git a/apps/ui/src/i18n/locales/ja.json b/apps/ui/src/i18n/locales/ja.json
index 4daa0ca..7bb58cb 100644
--- a/apps/ui/src/i18n/locales/ja.json
+++ b/apps/ui/src/i18n/locales/ja.json
@@ -874,7 +874,6 @@
   "delete this entry (does not stop the OAP session)": "このエントリを削除(OAP 
セッションは停止しません)",
   "diff": "差分",
   "disabled": "無効",
-  "effective": "実効",
   "empty family · 0 rows": "空のファミリー · 0 行",
   "ends in": "終了まで",
   "entities · {metric}": "エンティティ · {metric}",
@@ -910,7 +909,6 @@
   "local file": "ローカルファイル",
   "log analyzer · per-block + statement": "ログアナライザ · ブロック単位 + ステートメント",
   "meter analyzer · OTEL + log-mal": "メーターアナライザ · OTEL + log-mal",
-  "mqe target": "MQE ターゲット",
   "mtime": "mtime",
   "multi · edit": "複数 · 編集",
   "must be an integer": "整数である必要があります",
@@ -972,7 +970,6 @@
   "resolves group memberships without authenticating": 
"認証せずにグループメンバーシップを解決します",
   "resolving entities…": "エンティティを解決しています…",
   "resolving server TZ…": "サーバーの TZ を解決しています…",
-  "resolving…": "解決しています…",
   "resume →": "再開 →",
   "save failed": "保存に失敗しました",
   "save failed: {msg}": "保存に失敗しました: {msg}",
@@ -1004,14 +1001,12 @@
   "this node": "このノード",
   "top {n}": "上位 {n}",
   "try a wider range or a coarser step (current: {step})": 
"より広い範囲か、より粗いステップを試してください(現在: {step})",
-  "unresolved": "未解決",
   "unsaved changes": "未保存の変更",
   "use for entities /inspect/entities did not surface.": "/inspect/entities 
が表示しなかったエンティティに使用します。",
   "username": "ユーザー名",
   "value": "値",
   "values": "値",
   "visible": "表示",
-  "where execExpression fires · resolved via /debugging/config/dump on the 
admin server": "execExpression が発火する場所 · admin サーバーの /debugging/config/dump 
経由で解決",
   "which sidebar items each role sees · gated by the read verb in the last 
column (UI hides; the BFF enforces the same server-side)": "各ロールが参照できるサイドバー項目 · 
最終列の read 動詞でゲートされます(UI は非表示にし、BFF がサーバー側で同じ制御を強制します)",
   "with": "with",
   "{field} is required for scope {scope}": "スコープ {scope} には {field} が必須です",
diff --git a/apps/ui/src/i18n/locales/ko.json b/apps/ui/src/i18n/locales/ko.json
index 1c04fa7..dc67187 100644
--- a/apps/ui/src/i18n/locales/ko.json
+++ b/apps/ui/src/i18n/locales/ko.json
@@ -874,7 +874,6 @@
   "delete this entry (does not stop the OAP session)": "이 항목 삭제 (OAP 세션은 중지하지 
않음)",
   "diff": "diff",
   "disabled": "비활성",
-  "effective": "유효",
   "empty family · 0 rows": "빈 패밀리 · 0행",
   "ends in": "종료까지",
   "entities · {metric}": "엔터티 · {metric}",
@@ -910,7 +909,6 @@
   "local file": "로컬 파일",
   "log analyzer · per-block + statement": "log analyzer · 블록 + 구문 단위",
   "meter analyzer · OTEL + log-mal": "meter analyzer · OTEL + log-mal",
-  "mqe target": "mqe 대상",
   "mtime": "mtime",
   "multi · edit": "다중 · 편집",
   "must be an integer": "정수여야 합니다",
@@ -972,7 +970,6 @@
   "resolves group memberships without authenticating": "인증 없이 그룹 멤버십을 해석합니다",
   "resolving entities…": "엔터티 해석 중…",
   "resolving server TZ…": "서버 TZ 해석 중…",
-  "resolving…": "해석 중…",
   "resume →": "재개 →",
   "save failed": "저장하지 못했습니다",
   "save failed: {msg}": "저장하지 못했습니다: {msg}",
@@ -1004,14 +1001,12 @@
   "this node": "이 노드",
   "top {n}": "상위 {n}",
   "try a wider range or a coarser step (current: {step})": "더 넓은 범위 또는 거친 단계를 
시도하세요 (현재: {step})",
-  "unresolved": "해석되지 않음",
   "unsaved changes": "저장되지 않은 변경 사항",
   "use for entities /inspect/entities did not surface.": "/inspect/entities가 
노출하지 않은 엔터티에 사용합니다.",
   "username": "사용자 이름",
   "value": "값",
   "values": "값",
   "visible": "표시됨",
-  "where execExpression fires · resolved via /debugging/config/dump on the 
admin server": "execExpression이 실행되는 위치 · admin 서버의 /debugging/config/dump를 통해 
해석",
   "which sidebar items each role sees · gated by the read verb in the last 
column (UI hides; the BFF enforces the same server-side)": "각 역할이 보는 사이드바 항목 · 
마지막 열의 읽기 권한으로 제어됨(UI에서 숨김 처리, BFF가 서버 측에서 동일하게 강제 적용)",
   "with": "with",
   "{field} is required for scope {scope}": "{field}은(는) 범위 {scope}에 필수입니다",
diff --git a/apps/ui/src/i18n/locales/pt.json b/apps/ui/src/i18n/locales/pt.json
index 97e0ce3..7d163eb 100644
--- a/apps/ui/src/i18n/locales/pt.json
+++ b/apps/ui/src/i18n/locales/pt.json
@@ -874,7 +874,6 @@
   "delete this entry (does not stop the OAP session)": "excluir esta entrada 
(não interrompe a sessão do OAP)",
   "diff": "diff",
   "disabled": "desabilitado",
-  "effective": "efetivo",
   "empty family · 0 rows": "família vazia · 0 linhas",
   "ends in": "termina em",
   "entities · {metric}": "entidades · {metric}",
@@ -910,7 +909,6 @@
   "local file": "arquivo local",
   "log analyzer · per-block + statement": "log analyzer · por bloco + 
statement",
   "meter analyzer · OTEL + log-mal": "meter analyzer · OTEL + log-mal",
-  "mqe target": "alvo MQE",
   "mtime": "mtime",
   "multi · edit": "múltiplo · editar",
   "must be an integer": "deve ser um inteiro",
@@ -972,7 +970,6 @@
   "resolves group memberships without authenticating": "resolve associações de 
grupo sem autenticar",
   "resolving entities…": "resolvendo entidades…",
   "resolving server TZ…": "resolvendo TZ do servidor…",
-  "resolving…": "resolvendo…",
   "resume →": "retomar →",
   "save failed": "falha ao salvar",
   "save failed: {msg}": "falha ao salvar: {msg}",
@@ -1004,14 +1001,12 @@
   "this node": "este nó",
   "top {n}": "top {n}",
   "try a wider range or a coarser step (current: {step})": "tente um intervalo 
mais amplo ou um step mais grosso (atual: {step})",
-  "unresolved": "não resolvido",
   "unsaved changes": "alterações não salvas",
   "use for entities /inspect/entities did not surface.": "use para entidades 
que /inspect/entities não retornou.",
   "username": "usuário",
   "value": "valor",
   "values": "valores",
   "visible": "visível",
-  "where execExpression fires · resolved via /debugging/config/dump on the 
admin server": "onde execExpression dispara · resolvido via 
/debugging/config/dump no admin server",
   "which sidebar items each role sees · gated by the read verb in the last 
column (UI hides; the BFF enforces the same server-side)": "quais itens da 
barra lateral cada papel vê · controlado pelo verbo de leitura na última coluna 
(a UI oculta; o BFF impõe o mesmo no servidor)",
   "with": "com",
   "{field} is required for scope {scope}": "{field} é obrigatório para o 
escopo {scope}",
diff --git a/apps/ui/src/i18n/locales/zh-CN.json 
b/apps/ui/src/i18n/locales/zh-CN.json
index e98e124..80fd191 100644
--- a/apps/ui/src/i18n/locales/zh-CN.json
+++ b/apps/ui/src/i18n/locales/zh-CN.json
@@ -874,7 +874,6 @@
   "delete this entry (does not stop the OAP session)": "删除该条目(不会停止 OAP 会话)",
   "diff": "差异",
   "disabled": "已禁用",
-  "effective": "生效",
   "empty family · 0 rows": "空族 · 0 行",
   "ends in": "结束于",
   "entities · {metric}": "实体 · {metric}",
@@ -910,7 +909,6 @@
   "local file": "本地文件",
   "log analyzer · per-block + statement": "日志分析器 · 按区块 + 语句",
   "meter analyzer · OTEL + log-mal": "Meter 分析器 · OTEL + log-mal",
-  "mqe target": "MQE 目标",
   "mtime": "修改时间",
   "multi · edit": "多选 · 编辑",
   "must be an integer": "必须为整数",
@@ -972,7 +970,6 @@
   "resolves group memberships without authenticating": "在不进行身份认证的情况下解析组成员关系",
   "resolving entities…": "解析实体中…",
   "resolving server TZ…": "解析服务器时区中…",
-  "resolving…": "解析中…",
   "resume →": "继续 →",
   "save failed": "保存失败",
   "save failed: {msg}": "保存失败:{msg}",
@@ -1004,14 +1001,12 @@
   "this node": "本节点",
   "top {n}": "前 {n}",
   "try a wider range or a coarser step (current: {step})": "请尝试更宽的时间范围或更粗的 
step(当前:{step})",
-  "unresolved": "未解析",
   "unsaved changes": "未保存的修改",
   "use for entities /inspect/entities did not surface.": "用于 /inspect/entities 
未返回的实体。",
   "username": "用户名",
   "value": "值",
   "values": "值",
   "visible": "可见",
-  "where execExpression fires · resolved via /debugging/config/dump on the 
admin server": "execExpression 触发位置 · 通过管理端的 /debugging/config/dump 解析",
   "which sidebar items each role sees · gated by the read verb in the last 
column (UI hides; the BFF enforces the same server-side)": "每个角色看到的侧边栏条目 · 
由最后一列的读权限控制(UI 隐藏;BFF 在服务端执行同样的限制)",
   "with": "与",
   "{field} is required for scope {scope}": "{field} 在 {scope} 范围下为必填项",

Reply via email to