feat(admin): implement analytics and monitoring center

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

- Business Dashboard: revenue/orders/customers/AOV/top products/low stock/recent activity/warnings/completion% (Overview tab)
- Marketplace Health: real completion checks (images, SEO, categories, reviews, orders, translations, homepage, backend, performance) with clickable recommendations
- Product Analytics: top selling/most reviewed/worst rated/hidden/archived counts; top-viewed honestly marked Unknown (no view tracking exists)
- Customer Analytics: new/returning customers, average spend, retention - derived from real order data
- Search & Traffic tabs: honest 'Unknown - available after backend integration' placeholders, no fabricated numbers
- Recommendations engine: actionable cards (missing images/SEO/category, empty categories, incomplete homepage, unpublished static pages) linking to the relevant admin page
- System Monitoring: added real draft/publish/sync/backend-connectivity state from AdminDashboardFacade
- CSV export extended to top products and health checks; added print action
- New adminAnalytics.* and adminMarketplaceHealth.* i18n namespaces (en/ru/hy), no raw i18n keys
- Reused existing shared UI (app-table/app-badge/app-skeleton/app-empty-state) and content-health-widget completion-meter pattern - no new backend APIs, no storage changes
This commit is contained in:
sdarbinyan
2026-07-18 22:33:36 +04:00
parent 3c9b425203
commit 6af746c561
10 changed files with 1009 additions and 75 deletions

View File

@@ -1601,10 +1601,100 @@ export interface Translations {
adminMonitoring: {
eventsEmptyTitle: string;
eventsEmptyDescription: string;
systemState: string;
backendConnectivity: string;
connected: string;
loading: string;
draftState: string;
unsavedChanges: string;
noDraft: string;
lastSaved: string;
lastPublished: string;
syncStatus: string;
};
adminAnalytics: {
topProductsEmptyTitle: string;
topProductsEmptyDescription: string;
print: string;
tabsLabel: string;
tab: {
overview: string;
health: string;
products: string;
customers: string;
search: string;
traffic: string;
recommendations: string;
};
revenue: string;
orders: string;
customers: string;
avgOrderValue: string;
conversion: string;
completionPercent: string;
unknown: string;
salesChart: string;
quantitySold: string;
lowStock: string;
lowStockEmptyTitle: string;
quantity: string;
status: string;
recentActivity: string;
recentActivityEmptyTitle: string;
activityDraftSaved: string;
activityPublished: string;
warnings: string;
topViewed: string;
hiddenProducts: string;
archivedProducts: string;
mostReviewed: string;
worstRated: string;
noReviewedProducts: string;
reviewCount: string;
avgRating: string;
newCustomers: string;
returningCustomers: string;
averageSpend: string;
retention: string;
searchAnalytics: string;
trafficAnalytics: string;
availableAfterBackend: string;
pendingBackend: string;
pendingBackendHint: string;
funnelsHeatmaps: string;
visitors: string;
products: string;
categories: string;
};
adminMarketplaceHealth: {
title: string;
complete: string;
recommendationsTitle: string;
recommendNone: string;
checkImages: string;
checkSeo: string;
checkCategories: string;
checkReviews: string;
checkOrders: string;
checkTranslations: string;
checkHomepage: string;
checkBackend: string;
checkPerformance: string;
recommendImages: string;
recommendImagesCount: string;
recommendSeo: string;
recommendSeoCount: string;
recommendCategory: string;
recommendCategoryCount: string;
recommendEmptyCategories: string;
recommendEmptyCategoriesCount: string;
recommendHomepage: string;
recommendStaticPages: string;
severity: {
info: string;
warning: string;
critical: string;
};
};
adminShell: {
skipToContent: string;