feat(diagnostics): add health engine

This commit is contained in:
sdarbinyan
2026-07-10 13:34:25 +04:00
parent 7ecb19cb1a
commit 7161a81068
16 changed files with 1274 additions and 1 deletions

View File

@@ -468,4 +468,88 @@ export const ru: Translations = {
compareSize: 'Размер',
compareUnknown: 'неизвестно',
},
diagnostics: {
title: 'Диагностика маркетплейса',
disabledTitle: 'Диагностика недоступна',
disabledDescription: 'Страница диагностики доступна только в режиме разработки.',
generatedAt: 'Сформировано: {{value}}',
healthScore: 'Оценка состояния',
summary: 'Сводка',
passedChecks: '{{count}} успешных проверок',
warnings: '{{count}} предупреждений',
errors: '{{count}} ошибок',
critical: '{{count}} критических',
healthChecks: 'Проверки состояния',
results: 'Подробные результаты',
noIssues: 'Проблем диагностики не найдено.',
ok: 'OK',
failed: 'Ошибка',
affectedComponent: 'Затронутый компонент',
suggestedResolution: 'Рекомендация',
severity: { info: 'Инфо', warning: 'Предупреждение', error: 'Ошибка', critical: 'Критично' },
checks: {
bootstrapLoaded: 'Bootstrap загружен',
tenantResolved: 'Tenant определен',
runtimeInitialized: 'Runtime инициализирован',
themeLoaded: 'Тема загружена',
widgetManifestLoaded: 'Манифест виджетов загружен',
sectionEngineInitialized: 'Section Engine доступен',
configurationEngineInitialized: 'Configuration Engine инициализирован',
translationResourcesAvailable: 'Переводы доступны',
requiredAssetsAvailable: 'Обязательные assets доступны',
},
bootstrapMissingTitle: 'Bootstrap отсутствует',
bootstrapMissingDescription: 'Конфигурация bootstrap не загружена.',
bootstrapMissingResolution: 'Проверьте provider bootstrap и локальный mock.',
requiredPropertyMissingTitle: 'Отсутствует обязательное свойство',
requiredPropertyMissingDescription: 'В bootstrap отсутствует обязательное свойство.',
requiredPropertyMissingResolution: 'Добавьте свойство в bootstrap payload.',
unknownWidgetTypeTitle: 'Неизвестный тип виджета',
unknownWidgetTypeDescription: 'Тип виджета отсутствует в widget manifest.',
unknownWidgetTypeResolution: 'Добавьте виджет в manifest или удалите неверную конфигурацию.',
duplicateIdTitle: 'Дублирующийся идентификатор',
duplicatePageIdDescription: 'Обнаружен дублирующийся id страницы.',
duplicateSectionIdDescription: 'Обнаружен дублирующийся id секции.',
duplicateWidgetIdDescription: 'Обнаружен дублирующийся id виджета.',
duplicateIdResolution: 'Сделайте id уникальными в bootstrap конфигурации.',
unknownLayoutTitle: 'Неизвестный layout',
unknownLayoutDescription: 'Значение layout страницы не распознано.',
unknownLayoutResolution: 'Используйте поддерживаемый layout или расширьте allow-list.',
invalidFeatureFlagTitle: 'Некорректный feature flag',
invalidFeatureFlagDescription: 'Значение feature flag должно быть boolean.',
invalidFeatureFlagResolution: 'Нормализуйте значение к true или false.',
brokenPageDefinitionTitle: 'Некорректное описание страницы',
brokenPageDefinitionDescription: 'Описание страницы неполное.',
brokenPageDefinitionResolution: 'Добавьте route, title, key или sections.',
invalidNavigationTargetTitle: 'Некорректная цель навигации',
invalidNavigationTargetDescription: 'Route навигации не совпадает с известными route.',
invalidNavigationTargetResolution: 'Исправьте target route или добавьте route.',
missingTranslationTitle: 'Отсутствует перевод',
missingTranslationDescription: 'Ключ перевода не разрешается.',
missingTranslationResolution: 'Добавьте ключ в translation resources.',
missingMediaTitle: 'Отсутствует media',
missingMediaDescription: 'Ожидаемый branding media ресурс отсутствует.',
missingMediaResolution: 'Укажите корректные media URL в branding конфиге.',
runtimeNotInitializedTitle: 'Runtime не инициализирован',
runtimeNotInitializedDescription: 'Platform runtime state не помечен как initialized.',
runtimeNotInitializedResolution: 'Проверьте цепочку initialize в PlatformRuntimeService.',
configFallbackUsageTitle: 'Используется fallback конфигурация',
configFallbackUsageDescription: 'Runtime разработки использует fallback или mock конфигурацию.',
configFallbackUsageResolution: 'Смените provider mode, если нужна проверка реального bootstrap.',
missingDatasourceTitle: 'Отсутствует datasource',
missingDatasourceDescription: 'Виджет поддерживает datasource, но он не задан.',
missingDatasourceResolution: 'Укажите source в props виджета или default settings manifest.',
widgetRenderFailureTitle: 'Сбой рендера виджета',
widgetRenderFailureDescription: 'Виджет откатился на unknown widget renderer.',
widgetRenderFailureResolution: 'Зарегистрируйте компонент виджета или исправьте component key.',
brokenRouteTitle: 'Нарушено ожидание route',
brokenRouteDescription: 'Ожидаемый route отсутствует.',
brokenRouteResolution: 'Верните регистрацию route или обновите правило диагностики.',
imageLoadFailedTitle: 'Ошибка загрузки изображения',
imageLoadFailedDescription: 'Отображаемое изображение не загрузилось.',
imageLoadFailedResolution: 'Проверьте asset path, CORS и доступность media.',
optionalDataMissingTitle: 'Отсутствуют необязательные данные',
optionalDataMissingDescription: 'Необязательное конфигурационное значение отсутствует.',
optionalDataMissingResolution: 'Добавьте значение, если оно нужно UX.',
},
};