From ca343c493fe1a6083ff06d5add11dd9d82c54b39 Mon Sep 17 00:00:00 2001 From: sdarbinyan Date: Sun, 26 Jul 2026 00:17:14 +0400 Subject: [PATCH] fix(backoffice): merchant-friendly wording in Monitoring Analytics, Reports, and Diagnostics were already clean (no raw HTTP/queue-worker strings found on audit). Monitoring had three spots speaking developer language by default: - Background queue names ("order-notifications") -> friendly labels ("Order notifications"). - Webhook event keys ("order.created") -> friendly labels ("New order placed"). - Activity log's "api" category showed the raw HTTP line ("GET /api/products responded 200 in 84ms") as the primary message. Now shows a plain-language summary by default ("Product data refreshed successfully"), with the raw string moved to a collapsed "Technical details"
per event (api/error/warning rows). --- .../models/admin-monitoring.model.ts | 2 ++ .../admin-monitoring-page.component.html | 14 +++++++++++--- .../admin-monitoring-page.component.scss | 9 +++++++++ .../pages/admin-monitoring-page.component.ts | 19 +++++++++++++++++++ .../admin-monitoring-local.gateway.ts | 16 +++++++++++++--- src/app/i18n/en.ts | 1 + src/app/i18n/hy.ts | 1 + src/app/i18n/ru.ts | 1 + src/app/i18n/translations.ts | 1 + 9 files changed, 58 insertions(+), 6 deletions(-) diff --git a/src/app/features/admin/monitoring/models/admin-monitoring.model.ts b/src/app/features/admin/monitoring/models/admin-monitoring.model.ts index ce6dfe8..fef48fb 100644 --- a/src/app/features/admin/monitoring/models/admin-monitoring.model.ts +++ b/src/app/features/admin/monitoring/models/admin-monitoring.model.ts @@ -8,6 +8,8 @@ export interface AdminMonitoringEvent { category: AdminMonitoringCategory; level: AdminMonitoringLevel; message: string; + /** Raw technical detail (endpoint, status code, latency, etc.), shown only behind "Technical details". */ + technicalDetail?: string; actor: string; timestamp: string; } diff --git a/src/app/features/admin/monitoring/pages/admin-monitoring-page.component.html b/src/app/features/admin/monitoring/pages/admin-monitoring-page.component.html index ff96129..cfdcff4 100644 --- a/src/app/features/admin/monitoring/pages/admin-monitoring-page.component.html +++ b/src/app/features/admin/monitoring/pages/admin-monitoring-page.component.html @@ -24,7 +24,7 @@
@for (queue of facade.queues(); track queue.name) {
- {{ queue.name }} + {{ queueLabel(queue.name) }} {{ 'adminMonitoring.depth' | translate }}: {{ queue.depth }} {{ ('adminMonitoring.queueStatus.' + queue.status) | translate }}
@@ -47,7 +47,7 @@ @for (delivery of facade.webhooks(); track delivery.id) { {{ delivery.endpoint }} - {{ delivery.event }} + {{ webhookEventLabel(delivery.event) }} {{ ('adminMonitoring.webhookStatus.' + delivery.status) | translate }} {{ delivery.timestamp | date:'short' }} @@ -97,7 +97,15 @@ {{ ('adminMonitoring.categoryValue.' + event.category) | translate }} {{ ('adminMonitoring.levelValue.' + event.level) | translate }} - {{ event.message }} + + {{ event.message }} + @if (event.technicalDetail) { +
+ {{ 'adminMonitoring.technicalDetails' | translate }} + {{ event.technicalDetail }} +
+ } + {{ event.actor }} {{ event.timestamp | date:'short' }} diff --git a/src/app/features/admin/monitoring/pages/admin-monitoring-page.component.scss b/src/app/features/admin/monitoring/pages/admin-monitoring-page.component.scss index 7d731af..ac8562d 100644 --- a/src/app/features/admin/monitoring/pages/admin-monitoring-page.component.scss +++ b/src/app/features/admin/monitoring/pages/admin-monitoring-page.component.scss @@ -13,3 +13,12 @@ select { min-height: 40px; padding: 0 10px; border: 1px solid var(--border-color // to a plain - only the semantics change, not the visuals. tbody th[scope='row'] { font-weight: inherit; color: inherit; text-align: left; vertical-align: middle; } tbody tr:last-child th[scope='row'] { border-bottom: none; } + +.monitoring-technical-detail { + margin-top: 4px; + font-size: var(--font-size-sm, 0.8125rem); + color: var(--text-secondary); + + summary { cursor: pointer; color: var(--text-secondary); } + code { display: block; margin-top: 4px; word-break: break-all; } +} diff --git a/src/app/features/admin/monitoring/pages/admin-monitoring-page.component.ts b/src/app/features/admin/monitoring/pages/admin-monitoring-page.component.ts index 72053d0..a9cbf27 100644 --- a/src/app/features/admin/monitoring/pages/admin-monitoring-page.component.ts +++ b/src/app/features/admin/monitoring/pages/admin-monitoring-page.component.ts @@ -25,7 +25,26 @@ export class AdminMonitoringPageComponent { readonly categories = ['all', 'audit', 'security', 'login', 'failed_login', 'api', 'error', 'warning'] as const; + private readonly queueLabels: Record = { + 'order-notifications': 'Order notifications', + 'media-processing': 'Media processing', + 'webhook-delivery': 'Webhook delivery', + }; + + private readonly webhookEventLabels: Record = { + 'order.created': 'New order placed', + 'inventory.updated': 'Inventory updated', + }; + constructor() { this.facade.loadAll(); } + + queueLabel(name: string): string { + return this.queueLabels[name] ?? name; + } + + webhookEventLabel(event: string): string { + return this.webhookEventLabels[event] ?? event; + } } diff --git a/src/app/features/admin/monitoring/services/admin-monitoring-local.gateway.ts b/src/app/features/admin/monitoring/services/admin-monitoring-local.gateway.ts index 26aea0e..2515fcb 100644 --- a/src/app/features/admin/monitoring/services/admin-monitoring-local.gateway.ts +++ b/src/app/features/admin/monitoring/services/admin-monitoring-local.gateway.ts @@ -62,6 +62,7 @@ export class AdminMonitoringLocalGateway implements AdminMonitoringGateway { category, level, message: this.messageFor(category, index), + technicalDetail: this.technicalDetailFor(category, index), actor: ACTORS[index % ACTORS.length], timestamp: new Date(Date.now() - index * 45 * 60 * 1000).toISOString(), }; @@ -73,10 +74,19 @@ export class AdminMonitoringLocalGateway implements AdminMonitoringGateway { case 'security': return `Security policy check passed (#${index})`; case 'login': return `Successful admin login (#${index})`; case 'failed_login': return `Failed login attempt (#${index})`; - case 'api': return `GET /api/products responded 200 in ${80 + index}ms`; - case 'error': return `Unhandled exception in checkout flow (#${index})`; - case 'warning': return `Slow query detected (#${index})`; + case 'api': return `Product data refreshed successfully`; + case 'error': return `A background task failed unexpectedly`; + case 'warning': return `A data lookup took longer than usual`; default: return `Event #${index}`; } } + + private technicalDetailFor(category: AdminMonitoringCategory, index: number): string | undefined { + switch (category) { + case 'api': return `GET /api/products responded 200 in ${80 + index}ms`; + case 'error': return `Unhandled exception in checkout flow (#${index})`; + case 'warning': return `Slow query detected (#${index})`; + default: return undefined; + } + } } diff --git a/src/app/i18n/en.ts b/src/app/i18n/en.ts index 7b42583..518b016 100644 --- a/src/app/i18n/en.ts +++ b/src/app/i18n/en.ts @@ -1850,6 +1850,7 @@ export const en: Translations = { category: 'Category', level: 'Severity', message: 'Description', + technicalDetails: 'Technical details', categoryValue: { all: 'All categories', audit: 'Admin activity', diff --git a/src/app/i18n/hy.ts b/src/app/i18n/hy.ts index 782e2c2..d76fcd0 100644 --- a/src/app/i18n/hy.ts +++ b/src/app/i18n/hy.ts @@ -1845,6 +1845,7 @@ export const hy: Translations = { category: 'Կատեգորիա', level: 'Կարևորություն', message: 'Նկարագրություն', + technicalDetails: 'Տեխնիկական մանրամասներ', categoryValue: { all: 'Բոլոր կատեգորիաները', audit: 'Ադմինի գործողություններ', diff --git a/src/app/i18n/ru.ts b/src/app/i18n/ru.ts index e299a45..c6c194f 100644 --- a/src/app/i18n/ru.ts +++ b/src/app/i18n/ru.ts @@ -1845,6 +1845,7 @@ export const ru: Translations = { category: 'Категория', level: 'Важность', message: 'Описание', + technicalDetails: 'Технические детали', categoryValue: { all: 'Все категории', audit: 'Действия администраторов', diff --git a/src/app/i18n/translations.ts b/src/app/i18n/translations.ts index 65e06be..2219ca0 100644 --- a/src/app/i18n/translations.ts +++ b/src/app/i18n/translations.ts @@ -1858,6 +1858,7 @@ export interface Translations { category: string; level: string; message: string; + technicalDetails: string; categoryValue: { all: string; audit: string;