iOS. сделать апп на телефон для логистической компании (Дистанционная работа)

Бюджет: 120 000 руб.

Задание: iOS. сделать апп на телефон для логистической компании (Дистанционная работа)

Ниже — **сжатое ТЗ (до ~5000 символов)**, без воды, но достаточно конкретное для старта разработки. --- ## ТЗ: Мобильное приложение для водителей логистической компании (v1.2) **Платформы:** iOS / Android **Языки:** мультиязычность (RU/EN + расширение) **Авторизация:** SMS-код (OTP) **Рейсы:** 1 адрес → 1 адрес, назначаются диспетчером через TMS **Оплаты:** НЕ входят в scope **Интеграция:** своя TMS через API ### 1) Назначение Приложение для водителей: получение рейсов, GPS-трекинг, контроль отклонений, работа с документами и POD (доказательство доставки), чат с диспетчером, печать накладной. --- ### 2) Основной функционал #### 2.1 Смена (рабочее время) * Водитель вручную включает/выключает: **«Начать смену / Завершить смену»** * Трекинг работает **только во время смены** * Если водитель “под грузом” (статус из TMS), приложение требует активную смену. #### 2.2 Рейсы * Экран «Рейсы»: Активные / Завершенные / Проблемные * Карточка рейса: №, адрес A→B, статус, метка “под грузом” * Экран рейса: карта/маршрут, статусы, документы, POD, чат, печать. #### 2.3 Статусы доставки Статусы: **В пути → Прибыл → Разгрузка → Доставлено / Отказ/Проблема** * **«Прибыл» ставится автоматически по геозоне** (фиксируется событие въезда). * «Доставлено» доступно только при выполненном POD. #### 2.4 GPS-трекинг и контроль * Отправка координат: **каждую 1 минуту** * Фиксировать: координаты, скорость, остановки, отклонение от маршрута, вход/выход из геозон * Отклонение от маршрута: **> 5 км** → событие + уведомление водителю/диспетчеру (не чаще 1 раза в 5 минут). * Если GPS отключён при “под грузом”: предупреждение + событие, запрос включить GPS (через настройки). * Если нет интернета: запись в локальную очередь, отправка при восстановлении. #### 2.5 Геозоны * Геозоны приходят из TMS: координаты + радиус. * События: `GEOFENCE_ENTER/EXIT`, автоматическая установка «Прибыл». #### 2.6 Документы Типы: **ТТН / CMR / накладные / акты / чеки / фото товара** * Загрузка фото из **камеры и галереи** * **Обязательная проверка качества фото** (размытость/читаемость). При провале — просить переснять. * Документы привязываются к рейсу, отображается статус отправки (в очереди/отправлено/ошибка). #### 2.7 POD (Proof of Delivery) Для «Доставлено» обязательно: * **3 фото** * **подпись получателя** * **геолокация (POD proof)** * timestamp Опционально: печать (фото), QR/штрихкод. #### 2.8 Чат и коммуникации * Чат по рейсу (текст/фото) * Шаблоны: «Опаздываю», «Не могу найти точку», «Проблема», «Нужна помощь» * Кнопка звонка диспетчеру * Офлайн: сообщения в очередь. #### 2.9 Уведомления (push) * назначен/изменён рейс * сообщение диспетчера * отклонение >5 км * GPS выключен при “под грузом” * требуется POD/документы #### 2.10 Печать (Bluetooth) * Подключение к Bluetooth-принтеру * Печать **накладной** (PDF приходит с сервера) --- ### 3) Офлайн-режим * Все события/статусы/фото/чат сохраняются локально и синхронизируются при сети. * Очередь должна быть устойчивой к перезапуску приложения. --- ### 4) API (минимальный набор) * `/auth/otp/request`, `/auth/otp/verify`, `/auth/token/refresh` * `GET /driver/trips`, `GET /trips/{id}`, `GET /trips/{id}/route`, `GET /trips/{id}/geofences` * `POST /trips/{id}/status`, `POST /trips/{id}/tracking`, `POST /trips/{id}/events` * `POST /trips/{id}/documents` (multipart), `POST /trips/{id}/pod` (multipart) * `GET/POST /trips/{id}/chat` * `GET /trips/{id}/waybill/pdf` --- ### 5) Критерии приемки * Вход по SMS * Смена ON/OFF вручную * Рейсы приходят из TMS * Трекинг раз/мин и события отклонений/геозон * «Прибыл» автоматически по геозоне * Документы с проверкой качества * POD: 3 фото + подпись + гео * Чат + push уведомления * Офлайн-очередь + синхронизация * Печать накладной по Bluetooth