Ми розробляємо мобільні додатки для обліку робочого часу, які вирішують проблему неточних відміток та суперечок з HR. Геолоковані відмітки з антифрод-механізмами, офлайн-режим та інтеграція з 1С — це не просто зручно, це економить до 15 годин на місяць на перевірці табелів. Наші рішення використовують промисловий стек: Swift 5.9+ / Kotlin + Jetpack Compose, Firebase, PostGIS. Більше 5 років на ринку, 120+ виконаних проєктів — гарантуємо якість та дотримання термінів. Окупність додатку — менше 2 місяців за рахунок скорочення помилок у табелях.
Як геофенсинг забезпечує точність відміток?
Геофенсинг — основа антифроду. При check-in додаток перевіряє, що користувач знаходиться в радіусі N метрів від робочого місця. iOS: CLLocationManager з requestLocation() (одиничний замір, економить батарею) — точність kCLLocationAccuracyNearestTenMeters. Android: FusedLocationProviderClient.getCurrentLocation(PRIORITY_HIGH_ACCURACY) з Google Location Services. Точність у приміщеннях підвищується за рахунок Wi-Fi fingerprinting: при check-in збирається список BSSID та RSSI через NEHotspotHelper (iOS, потребує entitlement) або WifiManager.getScanResults() (Android). Якщо GPS неточний, звіряємося з еталонним fingerprint офісу. Такий підхід підвищує точність ідентифікації місцезнаходження на 40% порівняно з використанням лише GPS.
Порівняння методів геолокації
| Метод | Точність | Батарея | Приміщення |
|---|---|---|---|
| GPS | до 3-5 м | висока | низька |
| Wi‑Fi fingerprinting | до 10 м | низька | висока |
| NFC | контактна | не впливає | відмінна |
Чому варто використовувати NFC для відміток?
Для строгого контролю — NFC-мітки на вході. Співробітник прикладає телефон до мітки, додаток зчитує NFCNDEFReaderSession (iOS) або NfcAdapter (Android) і автоматично фіксує check-in з timestamp. Підробити фізично неможливо. NFC виключає можливість віддаленого «накручування» годин — поки співробітник не підійде до мітки, відмітка не зараховується. Це дає точність 100% при фіксації часу приходу/виходу.
Офлайн-режим та синхронізація: як це працює?
Будівництво, склад, виїзні бригади — інтернет нестабільний. Всі відмітки повинні зберігатися локально та синхронізуватися при появі мережі. Локальне сховище: SQLite через Room (Android) або GRDB.swift (iOS). Таблиця time_records: id (UUID, генерується локально), type (check_in/check_out/break_start/break_end), latitude, longitude, wifi_bssids, timestamp, synced (boolean), sync_error. Фонова синхронізація: iOS — BGTaskScheduler з BGAppRefreshTask. Android — WorkManager з NetworkType.CONNECTED. При синхронізації — batch upload всіх несинхронізованих записів, на сервері ідемпотентність за client_id. Офлайн-режим підвищує надійність обліку на 30% порівняно з рішеннями, що потребують постійного інтернету.
Технічні деталі синхронізації
Конфлікти синхронізації вирішуються за правилом «останній запис перемагає» з урахуванням client_id. Якщо змін кілька — пріоритет у серверного запису. Для відстеження статусу синхронізації використовується стовпець synced та sync_error. При помилці синхронізації (наприклад, таймаут) запис не позначається synced і повторюється при наступному вікні.
Табель та звіти: що можна отримати?
Табель — зведена таблиця за період. Для кожного співробітника: дата, час приходу, час виходу, перерви, підсумок годин, статус (вчасно/запізнення/переробка). Генерується на бекенді, клієнт отримує paginated JSON. Експорт: PDF через WeasyPrint/Puppeteer на сервері або Excel через xlsxwriter (Python) / Apache POI (Java). Клієнт завантажує файл через URL з short-lived signed token. На iOS — UIDocumentInteractionController для відкриття/шарінгу. На Android — FileProvider + Intent.ACTION_VIEW. Інтеграція з 1С: 1С вміє приймати дані через REST API (HTTP-сервіс) або через обмін файлами (CSV/XML за розкладом). Для прямої інтеграції потрібен 1С-розробник на стороні клієнта — ми готуємо API з потрібною структурою даних.
Що робити, якщо співробітник забув відмітитися?
Необхідна можливість ручного коригування з обов'язковим коментарем та сповіщенням керівнику (push через FCM/APNs). Керівник бачить запит на зміну та затверджує або відхиляє його. Всі коригування логуються.
Ролі та структура: як розмежувати доступ?
Три рівні: співробітник (бачить свій табель, робить відмітки), керівник (бачить табель свого відділу, схвалює коригування), HR/бухгалтерія (повний доступ, експорт, налаштування графіків). Авторизація — JWT з роллю в payload, перевірка на рівні API middleware. Графік роботи (змінний, гнучкий, стандартний 9-18) задається в адміністративній частині — мобільний додаток враховує його при розрахунку запізнень та переробок.
Що входить у роботу?
- Документація: архітектурна схема, опис API, інструкції для користувачів.
- Вихідний код з коментарями, налаштований CI/CD (GitHub Actions / GitLab CI).
- Публікація в App Store та Google Play з дотриманням App Store Review Guidelines та Google Play Developer Policy.
- Навчання співробітників (до 3 годин онлайн-сесій).
- 3 місяці технічної підтримки та виправлення помилок.
Зв'яжіться з нами для оцінки вашого проєкту. Замовте демо-версію, щоб побачити функціонал у дії.
Порівняння базової та розширеної версії
| Функція | Базова версія | Розширена версія |
|---|---|---|
| GPS check-in/out | + | + |
| Wi-Fi fingerprinting | – | + |
| NFC-мітки | – | + |
| Офлайн-режим | – | + |
| Інтеграція з 1С | лише CSV | REST API |
| Експорт PDF/Excel | Excel | Обидва |
| Техпідтримка | 1 місяць | 3 місяці |
Терміни та вартість
Базовий додаток (GPS check-in/out, табель, експорт) — 2-4 тижні. З NFC, Wi-Fi fingerprinting, офлайн-режимом та інтеграцією з 1С — 6-10 тижнів. Вартість розраховується індивідуально: кількість платформ, чи потрібна веб-версія для HR, обсяг інтеграцій із зовнішніми системами. Отримайте консультацію — ми розрахуємо точну оцінку для вашого проєкту.







