Админ-панель и интерфейс разметки ParkTrack. Приложение работает с backend из api-server, управляет пользователями, партнёрами, камерами, зонами, источниками данных и геометрией разметки.
Auth- регистрация
- логин / logout
- проверка текущей сессии через API
- восстановление пароля через отдельную страницу
Dashboard- обзор системы
- health / version
- быстрые переходы по основным ресурсам
- мягкая обработка недоступных необязательных данных
Users- список пользователей
- создание пользователя
- просмотр карточки
- редактирование профиля, роли и активности
- добавление пользователя в партнёра из карточки пользователя
- просмотр партнёрских доступов
- bulk actions: активировать, деактивировать, удалить выбранных пользователей
Partners- список партнёров
- создание / редактирование / удаление
- управление участниками партнёра
- настройка роли и read / write / delete scopes
- bulk actions: активировать, деактивировать, удалить выбранных партнёров
Cameras- список и фильтры
- создание / редактирование / удаление
- автоматическое определение размера изображения при добавлении камеры
- snapshot preview
- fullscreen preview для распознанных автомобилей
- переход в разметку и привязку камеры на карте
- bulk actions: активировать, деактивировать, удалить выбранные камеры
Zones- список и фильтры
- создание через интерфейс разметки
- редактирование атрибутов
- удаление
- переход в image geometry и map geometry
- редактирование точек и линий геометрии на карте
- bulk actions: активировать, деактивировать, удалить выбранные зоны
Sources- реестр источников данных
- список, фильтры, detail panel
- переход к профильной сущности
Labeler- редактирование зон на изображении
- полноэкранный режим рабочей области
- перемещение изображения в рабочей области
- добавление точек поверх существующих зон без случайного выбора старой зоны
- map entrypoint для геометрии
- возврат обратно в админский контекст
Feedback- единый слой уведомлений
- подтверждения опасных действий
- корректные сообщения для API-ошибок 4xx
Приложение использует hash-routing:
#/— dashboard#/login#/register#/password-reset#/profile#/users#/partners#/cameras#/zones#/sources#/labeler
Раздел Разметка не открывается как отдельный главный модуль из sidebar. В нормальном сценарии в него попадают из конкретной камеры или зоны.
React + TypeScript + Vitezustandreact-konvaYandex Maps JS API 2.1
Node.js 18+- запущенный backend из
api-server - доступный ParkTrack API
Для локальной разработки backend обычно доступен по адресу:
http://127.0.0.1:8000/api/v1
npm install
npm run devПо умолчанию dev-сервер поднимается на:
http://localhost:5173
В production и staging адрес API задаётся через переменную окружения на этапе сборки:
VITE_API_BASE_URL=https://api.dev.parktrack.live/api/v1
VITE_YANDEX_MAPS_API_KEY=your-yandex-maps-api-keyЕсли переменная не задана:
- на
localhostприложение используетhttp://127.0.0.1:8000/api/v1 - на остальных доменах приложение использует относительный путь
/api/v1
Ручного поля API Base в интерфейсе нет: конечный пользователь не должен настраивать backend-адрес внутри UI.
Карты камер и геометрии зон работают через Yandex Maps JS API 2.1. Для staging / production нужно передавать ключ на этапе сборки:
VITE_YANDEX_MAPS_API_KEY=your-yandex-maps-api-keyДля совместимости также поддерживается старое имя VITE_YMAPS_API_KEY, но новое значение VITE_YANDEX_MAPS_API_KEY предпочтительнее.
Фронтенд ожидает backend ParkTrack API с ресурсами:
/auth/users/partners/cameras/zones/sources/admin/health/version
Защищённые ручки вызываются с bearer-токеном текущей сессии. Сессия сохраняется в localStorage, переживает обновление страницы и валидируется через API при входе в приложение.
- Запустить backend из
api-server - Запустить frontend
labeler - Зарегистрироваться или войти
- Открыть:
#/cameras#/zones#/sources#/users#/partners#/profile
- Проверить создание и редактирование пользователя
- Проверить создание и редактирование партнёра
- Проверить добавление пользователя в партнёра
- Проверить создание / редактирование камеры
- Проверить snapshot preview и fullscreen
- Перейти в labeler из камеры или зоны
- Отредактировать image geometry зоны
- Отредактировать map geometry зоны
- Проверить bulk actions на списках камер, зон, пользователей и партнёров
- Проверить сброс пароля через
#/password-reset
npm run buildBuild должен проходить без TypeScript и Vite ошибок.