Files
specs/openspec/specs/frontend-ui-catalog/spec.md
T

10 KiB

frontend-ui-catalog Specification

Purpose

Предоставляет участникам разработки воспроизводимый обзор ограниченного набора реальных UI-компонентов и композиций WealthLedger для выбора решений на общей визуальной основе приложения.

Requirements

Requirement: Каталог предоставляет определённый набор реальных компонентов

Участники разработки SHALL иметь один доступный каталог с явно определённым ограниченным набором реальных компонентов и UI-композиций WealthLedger, их назначением, поддерживаемыми вариантами, применимыми состояниями и правилами использования. Основное содержание SHALL показывать решения, используемые приложением. Библиотечные примитивы MAY быть вспомогательными примерами принятых конфигураций, но MUST NOT подменять продуктовые компоненты и композиции. Каталог MUST демонстрировать реальное поведение компонентов на общей визуальной основе приложения, а не независимые имитации. Отсутствие компонента в каталоге MUST NOT означать его отсутствие в приложении или запрет использования.

Scenario: Участник выбирает готовое решение

  • WHEN участник просматривает включённый в каталог компонент
  • THEN он видит его назначение, доступные варианты и состояния и может сопоставить их с потребностью интерфейса на визуальной основе WealthLedger

Scenario: Участник изучает принятый UI-паттерн

  • WHEN участник выбирает композицию или компонент из основного набора
  • THEN он видит реальное решение WealthLedger, его назначение, состояния и ограничения применения, а не только стандартный пример UI-библиотеки

Scenario: Компонент не входит в начальный набор

  • WHEN участник ищет компонент за пределами объявленного набора
  • THEN граница покрытия каталога остаётся явной, без заявления о полноте каталогизации приложения

Requirement: Примеры воспроизводят состояния и взаимодействия изолированно

Каталог SHALL позволять воспроизводимо просматривать объявленные варианты и состояния без прохождения полного пользовательского сценария приложения. Интерактивные примеры SHALL позволять наблюдать поддерживаемые взаимодействия. Примеры MUST сохранять применимые правила доступности и UI-состояний приложения и MUST NOT вводить конкурирующую модель их поведения. Состояния, неприменимые к компоненту, MUST NOT требоваться только ради заполнения каталога.

Scenario: Участник повторно открывает пример

  • WHEN участник повторно выбирает тот же объявленный вариант и состояние
  • THEN каталог воспроизводит соответствующий пример без предварительного прохождения инвестиционного сценария

Scenario: Участник взаимодействует с компонентом

  • WHEN участник использует поддерживаемое взаимодействие интерактивного примера, включая клавиатурное управление там, где оно применимо
  • THEN доступное поведение, focus и ограничения состояния соответствуют реальному компоненту приложения

Scenario: Представлено запросное состояние

  • WHEN пример показывает применимое loading, error, empty или loaded состояние либо отображение ранее полученных данных при refetch
  • THEN пример сохраняет действующую семантику соответствующего состояния приложения и не подменяет её новой каталоговой договорённостью

Requirement: Каталог сохраняет достоверность и границы демонстрации

Каталог SHALL отражать фактические поддерживаемые возможности включённых компонентов и общие визуальные правила приложения. Демонстрационные данные MUST NOT требовать доступа к реальным финансовым данным или секретам пользователя; действия в примерах MUST NOT изменять реальные пользовательские данные. Известное ограничение воспроизведения MUST быть явно обозначено и MUST NOT представляться как подтверждённое продуктовое поведение.

Scenario: Возможность компонента изменилась

  • WHEN изменённая возможность включённого компонента поставляется
  • THEN каталог показывает соответствующее фактическое поведение и не представляет устаревший вариант как поддерживаемый

Scenario: Участник выполняет демонстрационное действие

  • WHEN участник открывает пример или выполняет в нём действие
  • THEN для демонстрации не требуются реальные пользовательские финансовые данные или секреты и реальные пользовательские данные остаются неизменными

Scenario: Изолированный пример имеет ограничение

  • WHEN пример не воспроизводит некоторый аспект полного пользовательского сценария
  • THEN участник видит это ограничение и не получает заявления о проверке полного сценария на основании примера

Requirement: Каталог разделяет Design System и Product

Каталог SHALL иметь два явно различимых содержательных блока: Design System и Product. Design System SHALL показывать foundations из действующей общей темы, семантические роли, используемые шкалы и общие компоненты, их варианты, состояния, доступность и правила применения. Product SHALL содержать реальные бизнес-компоненты и композиции приложения с полезными существующими историями, классифицированными по ответственности без перемещения бизнес-реализаций в общий слой. Оба блока MUST сохранять общую тему и изоляцию от application API, auth и данных пользователя.

Scenario: Участник открывает Design System

  • WHEN выбран блок Design System
  • THEN доступны наглядные foundations с актуальными значениями токенов, общие empty/error и loading компоненты, а также принятые конфигурации примитивов с правилами использования и применимыми интерактивными состояниями

Scenario: Участник открывает Product

  • WHEN выбран блок Product
  • THEN доступны существующие примеры списка счетов, карточек позиций, событий, обновления сохранённых сумм и skeleton страницы с их вариантами и ограничениями

Scenario: Оценивается готовность каталога

  • WHEN каталог представлен как поставленный результат
  • THEN существуют общий фундамент и оба содержательных блока, проверены отображение и применимые взаимодействия, явно описаны границы покрытия; сборка и наличие stories сами по себе не доказывают полноту или продуктовый пилот