Розробка мобільного додатка для управління завданнями
У Jira є все що потрібно — окрім того, що мобільний додаток Jira незручний для польових робітників: монтажників, виїзних інженерів, будівельників. Вони не відкриватимуть завдання в браузері посередині об'єкта. Потрібна простий додаток: отримав завдання → зробив → підтвердив з фото.
Push-сповіщення як основа робочого процесу
Завдання призначено → виконавець отримує push з деталями. Дедлайн через 2 години → нагадування. Завдання просрочено → сповіщення керівнику. Завдання виконано → сповіщення замовнику або постановнику.
Це базовий event-driven workflow, реалізується через FCM з priority: high для призначень та просрочок. Нагадування про дедлайни — серверний планувальник Bull Queue.
Важливий момент для B2B-додатків: у співробітника може бути заблокований app store або він використовує корпоративний Android (AOSP без Google Services). Тоді FCM не працює. Рішення — підтримка Huawei Push Kit (hms_push_kit) та WebSocket fallback при відкритому додатку, SMS для критичних сповіщень.
Модель даних та ієрархія завдань
Структура завдань залежить від домену. Типова для будівництва або сервісу:
- Проект → Етап → Завдання → Підзавдання
- Завдання має: виконавця, спостерігачів, пріоритет, дедлайн, чеклист, вкладення, коментарі, геолокацію об'єкта
Статусна машина завдання: new → in_progress → review → done | rejected. Переходи — через дії в додатку. Кожен перехід генерує подію → push підписчикам.
На backend — event sourcing для завдань: зберігаємо не тільки поточний стан, але й історію всіх змін. Дає audit-лог та можливість «откатити» помилкову зміну.
Підтвердження виконання з медіа
Виконавець виконав завдання → потрібно додати фото як доказ. Критична функція для будівництва, прибирання, технічного обслуговування.
Завантаження фото прямо з камери: ImagePicker на Flutter, стиснення через flutter_image_compress до 1–2 MB (повний розмір не потрібен для підтвердження), multipart upload на S3.
Геометка обов'язкова — співробітник повинен фізично знаходитись на об'єкті. Перевірка на сервері: distanceBetween(taskLocation, photoLocation) < 500m. Якщо відстань більша — попередження, але не блокуємо (бувають об'єктивні причини).
Відео до 60 секунд — для технічно складних завдань. Завантаження через resumable upload (AWS S3 Multipart Upload) — на мобільній мережа можуть прерватися.
Offline-режим
Польові робітники часто працюють у зонах зі слабким інтернетом: будова, промислові об'єкти, підвали. Додаток повинен працювати offline.
Стратегія: Hive (Flutter) або Room (Android native) для локального зберігання. При втраті мережі — всі дії (зміна статусу, коментарі, фото) пишуться в локальну чергу. При восстановлення з'єднання — синхронізація через фоновий воркер (WorkManager на Android, BGProcessingTask на iOS).
Конфлікти при синхронізації: якщо керівник змінив завдання поки виконавець був offline — LWW (Last Write Wins) за timestamp. Для критичних полів (статус) — серверний merge з сповіщенням обох сторін.
Аналітика та звітність
Керівник видить дашборд: завдання за статусами, відсоток просрочок, навантаження на виконавців, середній час виконання за типами. На Flutter — fl_chart для графіків.
Експорт звітів у Excel/PDF — генерація на сервері (бібліотека exceljs або puppeteer для PDF), посилання приходить push-сповіщенням: «Звіт за квітень готовий, скачати».
Терміни розробки
| Масштаб | Функціональність | Термін |
|---|---|---|
| MVP | Завдання, статусы, push | 6–8 тижнів |
| Стандарт | + Медіа-підтвердження, offline, аналітика | 12–16 тижнів |
| Enterprise | + Інтеграція з 1С, корпоративний SSO, MDM | 20–26 тижнів |
Вартість розраховується індивідуально після деталізації вимог.







