feat(project-editor): pre-publish change + validation preview

Milestone 5 of the Configuration Engine sprint.

- Facade: changeSummary computed - per modified field, before/after values
  (schema label + stringified diff vs originalBootstrap), reusing
  modifiedFields from M4.
- preview-section: new "changes since last publish" card ahead of the
  existing export/import/live-preview card - validation issue list
  (warning/error styled) plus a before/after change table. Reuses the
  existing, non-destructive ProjectEditorPreviewService.preview() call.
- i18n: previewChangesTitle/NoIssues/NoChanges/ChangeField/Before/After in
  interface + en/ru/hy.

Gate: tsc --noEmit, npm test (33/33), arch:check, build all green.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
sdarbinyan
2026-07-17 09:00:47 +04:00
parent 1db0d4dfea
commit 96b12a1fbe
8 changed files with 153 additions and 0 deletions

View File

@@ -502,6 +502,12 @@ export const en: Translations = {
searchSuggestions: 'Search Suggestions',
searchHistory: 'Search History',
livePreview: 'Live Preview',
previewChangesTitle: 'Changes since last publish',
previewNoIssues: 'No validation issues.',
previewNoChanges: 'No changes since the last publish.',
previewChangeField: 'Field',
previewChangeBefore: 'Before',
previewChangeAfter: 'After',
languagesTab: 'Languages',
addLanguage: 'Add Language',
removeLanguage: 'Remove',

View File

@@ -502,6 +502,12 @@ export const hy: Translations = {
searchSuggestions: 'Որոնման առաջարկներ',
searchHistory: 'Որոնման պատմություն',
livePreview: 'Կենդանի preview',
previewChangesTitle: 'Փոփոխություններ վերջին հրապարակումից ի վեր',
previewNoIssues: 'Վավերացման խնդիրներ չկան։',
previewNoChanges: 'Փոփոխություններ վերջին հրապարակումից ի վեր չկան։',
previewChangeField: 'Դաշտ',
previewChangeBefore: 'Մինչ',
previewChangeAfter: 'Հետո',
languagesTab: 'Լեզուներ',
addLanguage: 'Ավելացնել լեզու',
removeLanguage: 'Հեռացնել',

View File

@@ -502,6 +502,12 @@ export const ru: Translations = {
searchSuggestions: 'Поисковые подсказки',
searchHistory: 'История поиска',
livePreview: 'Живое превью',
previewChangesTitle: 'Изменения с последней публикации',
previewNoIssues: 'Нет проблем валидации.',
previewNoChanges: 'Нет изменений с последней публикации.',
previewChangeField: 'Поле',
previewChangeBefore: 'До',
previewChangeAfter: 'После',
languagesTab: 'Языки',
addLanguage: 'Добавить язык',
removeLanguage: 'Удалить',

View File

@@ -500,6 +500,12 @@ export interface Translations {
searchSuggestions: string;
searchHistory: string;
livePreview: string;
previewChangesTitle: string;
previewNoIssues: string;
previewNoChanges: string;
previewChangeField: string;
previewChangeBefore: string;
previewChangeAfter: string;
languagesTab: string;
addLanguage: string;
removeLanguage: string;