Спроектируй и реализуй универсальный конструктор пользовательских метрик для аналитического дашборда. Цель Пользователь без знания программирования должен иметь возможность собрать собственную метрику из доступных данных, настроить способ расчёта и выбрать её визуальное представление. Конструктор должен подходить как для простых показателей, так и для сложных вычисляемых метрик. Основной сценарий Раздели создание метрики на три логических этапа: 1. Основная информация. 2. Расчёт. 3. Отображение. Пользователь должен свободно перемещаться между этапами, не теряя введённые данные. Основная информация Предусмотри: - название метрики; - необязательное описание; - категорию или смысловую группу; - единицу измерения; - понятное отличие новой метрики от редактирования существующей. Расчёт Поддержи несколько способов создания метрики: - выбор готового показателя; - сумма выбранных значений; - разница между показателями; - отношение или процент; - среднее, минимум и максимум; - накопительный итог; - собственная формула. Источники данных должны определяться динамически. Не используй жёстко заданные категории или показатели. Позволь выбирать: - набор учитываемых данных; - временной период; - режим расчёта; - фильтры; - группировку; - правила обработки отсутствующих значений. Формулы Добавь редактор собственных формул с поддержкой: - арифметических операций; - скобок; - доступных показателей и категорий; - ссылок на другие пользовательские метрики; - функций агрегации; - сравнений с предыдущими периодами; - автодополнения; - описания доступных переменных; - проверки формулы до сохранения. Конструктор должен обнаруживать: - неизвестные переменные; - синтаксические ошибки; - деление на ноль; - циклические зависимости между метриками; - несовместимые единицы измерения; - отсутствующие источники данных. Ошибки показывай рядом с проблемным полем и объясняй понятным языком. Отображение Позволь настроить: - формат числа; - количество знаков после запятой; - денежную единицу или процент; - направление оценки результата; - целевое значение; - предупредительные и критические пороги; - цветовые состояния; - выбранные графики; - отображение на дашборде. Поддержи основные варианты визуализации: - числовая карточка; - прогресс; - сравнение; - динамика; - столбчатый график; - линейный график; - компактный индикатор состояния. Показывай живое превью метрики. Оно должно обновляться при изменении настроек, но не сохранять черновик как готовую метрику. Пользовательский опыт Интерфейс должен постепенно раскрывать сложность: - сначала показывать только обязательные параметры; - дополнительные настройки размещать в раскрывающихся блоках; - скрывать поля, которые не относятся к выбранному типу расчёта; - сохранять незавершённый черновик; - предупреждать при закрытии формы с несохранёнными изменениями; - не перегружать экран вспомогательным текстом. Предусмотри понятные состояния: - пустые данные; - загрузка; - ошибка; - некорректная формула; - успешное сохранение; - редактирование; - дублирование; - удаление и восстановление. Управление метриками Пользователь должен иметь возможность: - создавать метрики; - редактировать; - дублировать; - временно скрывать; - закреплять на дашборде; - менять порядок; - переносить в хранилище; - удалять с возможностью восстановления; - окончательно удалять; - импортировать и экспортировать конфигурации. Совместимость Модель метрики должна быть версионируемой. При развитии конструктора старые сохранённые метрики должны продолжать работать или автоматически мигрировать в новую схему. Изменение или удаление источника данных не должно незаметно ломать метрику. Показывай её состояние и предлагай выбрать замену. Адаптивность и доступность Конструктор должен одинаково хорошо работать на компьютерах и мобильных устройствах: - без горизонтального скролла; - с удобными зонами нажатия; - с поддержкой экранной клавиатуры; - с полной клавиатурной навигацией; - с корректными focus-состояниями; - с доступными названиями элементов; - с достаточным контрастом. Критерии готовности - Простую метрику можно создать за несколько понятных действий. - Сложную формулу можно собрать и проверить до сохранения. - Все параметры влияют на живое превью. - Некорректную конфигурацию невозможно сохранить. - Ошибки объясняют причину и способ исправления. - Старые метрики остаются совместимыми. - Интерфейс корректно работает на мобильных и настольных экранах. - Нет жёсткой зависимости от конкретных категорий, показателей или структуры данных. - Основные пользовательские сценарии покрыты автоматическими тестами.