27 000 UAH
48 ставок
Суть проекта Мы отслеживаем фуры, перевозящие грузы наших клиентов (промышленные заводы). В фуры при загрузке выдаются автономные GPS-маячки TKSTAR TK-905B (передача координат каждые 5 минут). Маячки НЕ закреплены за машинами постоянно — они работают по схеме ротации: менеджер выдаёт маячок водителю при загрузке, после рейса водитель возвращает маячок с документами, и тот же маячок выдаётся на следующий рейс уже с другой машиной. Нужна веб-платформа: маячки шлют данные на наш сервер, клиенты (заводы) заходят на сайт и видят на карте свои машины в реальном времени. Каждый завод видит ТОЛЬКО свои маячки. Часть 1. Бэкенд Развернуть Traccar (open-source) на VPS. VPS покупаем мы, кандидат рекомендует конфигурацию. Настроить приём данных с маячков TK-905B (протокол поддерживается Traccar из коробки). Помочь с перенаправлением маячков с китайского сервера на наш (SMS-команды).Мультитенантность. Роли:Админ (мы): видит все маячки, все компании, все рейсы. Создаёт компании и пользователей, назначает рейсы компаниям.Менеджер/диспетчер (наш сотрудник на месте загрузки): выдаёт и принимает маячки (см. модуль ротации).Клиент (завод): логин/пароль, видит только свои активные рейсы и свою историю. Не видит чужие маячки, свободный пул и служебную информацию. Часть 2. Модуль ротации маячков (ключевая логика) Каждый маячок имеет короткий номер в системе (№1, №2, №3...), совпадающий с наклейкой на корпусе. Поиск маячка по этому номеру.Выдача: менеджер выбирает маячок из пула → вводит номер машины (обязательное поле) + опционально: ФИО/телефон водителя, направление/пункт выгрузки, компания-заказчик. Операция должна занимать секунды: одно окно, минимум полей. С момента выдачи на карте точка подписана номером машины и рейсом (например «АХ1234ВХ → Киев»), а не ID устройства.Повторная выдача = закрытие старого рейса + открытие нового. Для менеджера это выглядит как «просто вписал новый номер машины», но система обязана сохранять историю привязок: каждый период работы маячка привязан к номеру машины, который был активен в тот момент. Перезапись номера с потерей истории — недопустима (иначе старые треки будут подписаны чужими машинами).Завершение рейса и возврат маячка на склад — два отдельных действия: рейс закрывается при выгрузке (обратный путь маячка с почтой клиенту не показывается), возврат переводит маячок в статус «в пуле, свободен». Свободные маячки (в пуле / на зарядке / едут назад почтой) на клиентской карте не отображаются. Админ их видит со статусами. История: по каждому маячку — все его прошлые рейсы; по каждой компании — все её рейсы. Часть 3. Фронтенд (веб-сайт) Макет страницы:По центру — живая карта с машинами в реальном времени (обновление без перезагрузки страницы, WebSocket/поллинг). Иконки машин; клик по машине → карточка: номер машины, водитель, направление, скорость, время последней отметки, статус (в движении / стоит / нет связи).Справа — панель профиля залогиненного пользователя: название компании, список её активных рейсов со статусами онлайн/офлайн, быстрый переход к машине на карте.Сверху — поиск по своим маячкам/машинам (по номеру машины, номеру маячка, направлению). Страница логина. Адаптив под мобильные (менеджеры и клиенты будут открывать с телефона). Функции:История маршрута за выбранный период (проигрывание трека на карте).Отчёт по стоянкам: где стояла машина, с какого по какое время, сколько часов (пример: «Киев, вт 08:00 — чт 09:00, 49 ч»).Геозоны: админ обводит на карте зоны (завод, пункты выгрузки). Отчёт по времени в зонах + уведомления о въезде/выезде (в интерфейсе; e-mail/Telegram — плюсом, обсуждаемо). Экспорт отчётов в Excel/PDF — плюсом. Часть 4. Технические требования Бэкенд: Traccar API (REST + WebSocket). Кастомная логика ротации — отдельным слоем поверх Traccar (свой сервис + БД) либо через атрибуты Traccar, на усмотрение исполнителя, но с обоснованием. Фронтенд: React или Vue. Карта: Leaflet + OpenStreetMap (или Google Maps, если обоснуете).
Настроить автоочистку истории координат старше 6 месяцев (retention policy в Traccar / по согласованию), чтобы база не разрасталась бесконечно. Отчёты и итоги рейсов за старые периоды при этом должны сохраняться.
Язык интерфейса: украинский (русский — плюсом, переключатель не обязателен на старте). Данные и сервер полностью наши: никаких привязок к сторонним закрытым сервисам. Часть 5. Сдача проекта Рабочая платформа на нашем домене. Все доступы: VPS, Traccar, база, репозиторий с кодом. Краткая инструкция (текст или видео): как добавить новый маячок, как создать компанию/пользователя, как менеджеру выдавать и принимать маячки. 2–4 недели поддержки после сдачи на исправление багов (обсуждаемо). Вопросы кандидату (обязательно ответить в отклике) Разворачивали ли вы Traccar? Делали ли кастомный фронтенд поверх Traccar API? Ссылки/скрины примеров. Как предлагаете реализовать мультитенантность и модуль ротации (кратко, 3–5 предложений)? Срок и цена: (а) MVP — карта, логины, ротация, стоянки; (б) полная версия с геозонами и отчётами. Рекомендуемая конфигурация VPS под ~20–50 маячков.