Общая задача
Разработать фронтенд для административной панели системы управления трафиком (Traffic Distribution System). Ключевое требование - создать архитектуру, в которой интерфейс (таблицы и формы) строится на основе метаданных, а не жестко закодирован в компонентах.
Основные требования
- Гибкая система CRUD: возможность создавать, редактировать, удалять и просматривать любые сущности (например, потоки, офферы, правила фильтрации) на основе конфигурации.
- Метаданные управляют интерфейсом: структура таблиц, полей форм и валидация должны определяться не кодом компонент, а внешними данными (JSON/конфигами).
- Расширяемость: система должна легко поддерживать добавление новых сущностей без изменения базовых компонентов - достаточно описать метаданные.
- Изолированная логика: вся бизнес-логика построения интерфейса (работа с колонками, типами полей, событиями) вынесена в отдельный слой, независимый от конкретных реализаций компонентов.
- Переиспользуемые компоненты: таблицы и формы должны быть универсальными, без привязки к конкретным моделям данных.
Что должен включать функционал
- Сборка интерфейса на лету на основе метаданных (поля, теги, типы данных, отображение).
- Допустимость настроек колонок таблицы (скрытие, сортировка, фильтрация).
- Компонент форм с поддержкой различных типов полей (текст, дата, списки, checkbox и т.д.) с динамической валидацией.
- Поддержка пагинации, поиска по таблицам и выборки данных через API.
Пример сущности (для понимания концепции)
Метаданные для сущности 'user' могут содержать список полей: имя (тип 'text'), email (тип 'email'), роль (тип 'select' с вариантами). При этом таблица выведет колонки, а форма создаст соответствующие инпуты - все это без написания отдельного компонента для пользователей.