Browse Source

docs: Исправлена архитектура ПРОЕКТ 3 - бейджи у рабочих

КРИТИЧЕСКОЕ ИСПРАВЛЕНИЕ архитектуры Construction Crew Tracking:

БЫЛО (неправильно):
- Объект оснащен BLE маяками в разных зонах
- Бригадир и рабочие перемещаются, их позиция определяется по маякам

СТАЛО (правильно):
- РАБОЧИЕ носят бейджи MyBeacon (NFC + iBeacon)
- БРИГАДИР носит смартфон с приложением
- Бейдж = комбинированное устройство:
  * NFC метка - для авторизации утром (tap на смартфон)
  * iBeacon - постоянная трансляция BLE сигнала

Принцип работы:
1. Утро: рабочий прикладывает БЕЙДЖ к смартфону бригадира (NFC)
2. День: бейдж постоянно транслирует iBeacon сигнал
3. Смартфон бригадира сканирует BLE → ловит beacons от бейджей
4. На сервер: GPS бригадира + список обнаруженных beacons (рабочих рядом)

Серверная аналитика:
- Карта: GPS маркеры БРИГАДИРОВ
- Клик на маркер → список рабочих рядом с бригадиром (по BLE)
- RSSI показывает расстояние до каждого рабочего
- Если beacon не ловится → рабочий ушел/бейдж разрядился

Текстовая аналитика:
- Перемещения БРИГАДИРА (GPS timeline)
- Состав бригады в каждый момент (кто был рядом)
- Аномалии: рабочий исчез, чужие бейджи (другая бригада)

Преимущества бейджа MyBeacon:
- Двойная функция (NFC + iBeacon)
- Батарея CR2032/CR2477: 6-12 месяцев
- IP65+, ударопрочный, -20°C..+60°C
- Форм-факторы: карточка, модуль для каски, браслет

Обновлены разделы:
- Архитектура решения
- Рабочий процесс (утро + день)
- Серверная аналитика (карта + отчеты)
- Преимущества + характеристики бейджа
- Итого: ПРОЕКТ 3
root 1 month ago
parent
commit
e54cab96c0
1 changed files with 146 additions and 61 deletions
  1. 146 61
      LEGACY_FEATURES.md

+ 146 - 61
LEGACY_FEATURES.md

@@ -583,8 +583,14 @@ RSSI: -70
 
 
 **Роли:**
 **Роли:**
 1. **Бригадир** - носит смартфон с приложением (Android)
 1. **Бригадир** - носит смартфон с приложением (Android)
-2. **Рабочие** - имеют персональные NFC карты
-3. **Объект** - оснащен BLE маяками (iBeacon) в разных зонах
+2. **Рабочие** - носят персональные бейджи (в каске или на одежде)
+
+**Бейдж рабочего (производство MyBeacon):**
+- **NFC метка** - для авторизации в начале смены
+- **iBeacon** - постоянная трансляция BLE сигнала
+- **UUID/Major/Minor** - уникальная идентификация каждого рабочего
+- **Батарея** - автономная работа несколько месяцев
+- **Форм-фактор** - карточка-бейдж или модуль для каски
 
 
 ### Рабочий процесс
 ### Рабочий процесс
 
 
@@ -592,9 +598,9 @@ RSSI: -70
 
 
 **Сценарий:**
 **Сценарий:**
 1. Рабочий приходит на объект (например, 8:00)
 1. Рабочий приходит на объект (например, 8:00)
-2. Бригадир открывает приложение
-3. Рабочий прикладывает свою NFC карту к смартфону
-4. Приложение читает NFC_ID (уникальный идентификатор карты)
+2. Бригадир открывает приложение на смартфоне
+3. Рабочий прикладывает свой **бейдж** к смартфону (NFC tap)
+4. Приложение читает NFC_ID с бейджа
 5. Отправляет событие на сервер:
 5. Отправляет событие на сервер:
    ```json
    ```json
    {
    {
@@ -604,43 +610,61 @@ RSSI: -70
      "TIME": 1565169600000
      "TIME": 1565169600000
    }
    }
    ```
    ```
-6. Сервер региструет: "Рабочий #12345 начал смену в 8:00"
+6. Сервер регистрирует: "Рабочий #12345 начал смену в 8:00"
 
 
 **Польза:**
 **Польза:**
 - Учет рабочего времени (кто когда пришел)
 - Учет рабочего времени (кто когда пришел)
 - Автоматическая табельная
 - Автоматическая табельная
 - Замена бумажных журналов
 - Замена бумажных журналов
+- Бейдж невозможно передать другому (привязан к человеку)
 
 
 #### День: Отслеживание перемещений (BLE + GPS)
 #### День: Отслеживание перемещений (BLE + GPS)
 
 
+**Принцип работы:**
+
+1. **Рабочие носят бейджи** - каждый бейдж постоянно транслирует iBeacon сигнал
+2. **Смартфон бригадира** сканирует BLE → ловит beacons от бейджей рабочих
+3. **Смартфон также собирает** свою GPS позицию
+4. **Отправка на сервер** - GPS бригадира + список обнаруженных beacons
+
 **Что собирает приложение:**
 **Что собирает приложение:**
 
 
-**1. GPS координаты (continuous)**
+**1. GPS координаты бригадира (continuous)**
 - Latitude, Longitude, Altitude
 - Latitude, Longitude, Altitude
 - Accuracy (HDOP)
 - Accuracy (HDOP)
 - Provider (GPS/Network/Fused)
 - Provider (GPS/Network/Fused)
 - Частота: каждые 30-60 секунд
 - Частота: каждые 30-60 секунд
 
 
-**2. BLE маяки (continuous scanning)**
-- Сканирование iBeacon форматов в зоне видимости
-- UUID, Major, Minor (идентификация зоны)
-- RSSI измерение (расстояние до маяка)
-- Частота: каждые 10-30 секунд
+**2. BLE beacons от рабочих (continuous scanning)**
+- Сканирование iBeacon от бейджей рабочих в зоне видимости
+- UUID (общий для всех MyBeacon бейджей)
+- Major (ID объекта/бригады)
+- Minor (ID конкретного рабочего)
+- RSSI (расстояние до рабочего: -40 = очень близко, -80 = далеко)
+- Частота сканирования: каждые 10-30 секунд
 
 
 **3. Системная информация**
 **3. Системная информация**
 - Разрешения приложения (location, bluetooth)
 - Разрешения приложения (location, bluetooth)
 - Уровень батареи телефона
 - Уровень батареи телефона
 - Настройки энергосбережения
 - Настройки энергосбережения
 
 
-**Пример BLE маяков на объекте:**
+**Пример бейджей рабочих на объекте:**
 ```
 ```
-Beacon #1: UUID=xxx, Major=1, Minor=1 → "Западное крыло, 1 этаж"
-Beacon #2: UUID=xxx, Major=1, Minor=2 → "Восточное крыло, 1 этаж"
-Beacon #3: UUID=xxx, Major=2, Minor=1 → "Западное крыло, 2 этаж"
-Beacon #4: UUID=xxx, Major=3, Minor=1 → "Подвал"
-Beacon #5: UUID=xxx, Major=4, Minor=1 → "Кровля"
+Бейдж #1: UUID=FDA50693-A4E2-4FB1-AFCF-C6EB07647825, Major=1 (бригада), Minor=1 (Иванов И.И.)
+Бейдж #2: UUID=FDA50693-A4E2-4FB1-AFCF-C6EB07647825, Major=1 (бригада), Minor=2 (Петров П.П.)
+Бейдж #3: UUID=FDA50693-A4E2-4FB1-AFCF-C6EB07647825, Major=1 (бригада), Minor=3 (Сидоров С.С.)
+Бейдж #4: UUID=FDA50693-A4E2-4FB1-AFCF-C6EB07647825, Major=1 (бригада), Minor=4 (Козлов К.К.)
+Бейдж #5: UUID=FDA50693-A4E2-4FB1-AFCF-C6EB07647825, Major=1 (бригада), Minor=5 (Смирнов А.А.)
 ```
 ```
 
 
+**Логика отслеживания:**
+- Смартфон бригадира ловит beacons от рабочих рядом с ним
+- RSSI показывает расстояние:
+  - RSSI > -50 → рабочий очень близко (в пределах 2-5 метров)
+  - RSSI -50..-70 → рабочий рядом (5-15 метров)
+  - RSSI < -70 → рабочий далеко (15+ метров)
+- Если beacon перестал ловиться → рабочий ушел далеко или покинул объект
+
 ### Формат отправки:
 ### Формат отправки:
 
 
 **HTTP POST на `/beacon/ble/get4.php`**
 **HTTP POST на `/beacon/ble/get4.php`**
@@ -706,24 +730,36 @@ Content-Encoding: gzip  (опционально)
 
 
 **Что видит менеджер:**
 **Что видит менеджер:**
 - Карта объекта (Google Maps / OpenStreetMap)
 - Карта объекта (Google Maps / OpenStreetMap)
-- GPS-маркеры с позициями бригад в реальном времени
+- GPS-маркеры с позициями **бригадиров** в реальном времени
 - Иконки бригадиров разного цвета (каждый PHONE_UUID свой цвет)
 - Иконки бригадиров разного цвета (каждый PHONE_UUID свой цвет)
+- Размер иконки зависит от количества рабочих рядом
 - Последнее обновление локации (timestamp)
 - Последнее обновление локации (timestamp)
 
 
 **Интерактив:**
 **Интерактив:**
-- Клик на маркер → показать:
-  - Бригадир: Иван Иванов (PHONE_UUID: foreman_001)
-  - Последняя локация: 55.7558, 37.6173
-  - Время: 14:35:22
-  - Ближайший beacon: "Западное крыло, 1 этаж" (Major=1, Minor=1, RSSI=-55)
-  - Батарея телефона: 67%
-  - Рабочие в бригаде: 5 человек (список NFC_ID)
+- Клик на маркер (бригадир) → показать:
+  - **Бригадир:** Иван Иванов (PHONE_UUID: foreman_001)
+  - **GPS позиция:** 55.7558, 37.6173 (ЖК "Новый город", стройплощадка)
+  - **Время:** 14:35:22
+  - **Батарея телефона:** 67%
+  - **Рабочие рядом с бригадиром (по BLE):**
+    - ✅ Петров П.П. (Minor=2, RSSI=-45, 3м) - очень близко
+    - ✅ Сидоров С.С. (Minor=3, RSSI=-62, 10м) - рядом
+    - ✅ Козлов К.К. (Minor=4, RSSI=-75, 18м) - далеко
+    - ❌ Смирнов А.А. (Minor=5) - НЕ ВИДЕН (ушел?)
+  - **Статус:** 3 из 4 рабочих в зоне видимости
 
 
 **Use case:**
 **Use case:**
-- Менеджер видит что бригада №3 находится в "Западном крыле, 2 этаж"
-- Координаты GPS подтверждают что они на объекте
-- BLE маяк показывает точную зону
-- Можно позвонить бригадиру если нужно
+- Менеджер видит что бригадир №1 находится по GPS на объекте
+- Рядом с ним (по BLE) 3 рабочих из 4
+- Один рабочий (Смирнов) не виден → возможно ушел
+- Можно позвонить бригадиру или проверить в табеле когда Смирнов в последний раз сканировался
+
+**Логика определения "рядом":**
+- GPS показывает где **бригадир**
+- BLE beacons показывают каких **рабочих** бригадир "видит"
+- Все рабочие носят бейджи с iBeacon
+- Смартфон бригадира сканирует beacons → шлет на сервер список
+- На карте видим: "Бригадир здесь (GPS), рядом с ним эти рабочие (BLE)"
 
 
 #### 2. Текстовая аналитика (Reports)
 #### 2. Текстовая аналитика (Reports)
 
 
@@ -745,23 +781,41 @@ Content-Encoding: gzip  (опционально)
 └──────────────┴───────────┴───────────┴────────┘
 └──────────────┴───────────┴───────────┴────────┘
 ```
 ```
 
 
-**Перемещения по зонам:**
+**Перемещения бригадира и состав бригады:**
 ```
 ```
-Бригадир: Иван Иванов
+Бригадир: Иван Иванов (foreman_001)
 Дата: 2025-12-28
 Дата: 2025-12-28
 
 
-08:00-09:30 → Западное крыло, 1 этаж (beacon Major=1, Minor=1)
-09:30-12:00 → Восточное крыло, 1 этаж (beacon Major=1, Minor=2)
-12:00-13:00 → [Нет beacon] GPS: 55.7558, 37.6173 (обед?)
-13:00-15:30 → Западное крыло, 2 этаж (beacon Major=2, Minor=1)
-15:30-18:00 → Кровля (beacon Major=4, Minor=1)
+08:00-09:30 → GPS: 55.7558, 37.6173 (Корпус А)
+  Рабочие рядом: Петров (RSSI -45), Сидоров (RSSI -50), Козлов (RSSI -55), Смирнов (RSSI -60)
+
+09:30-12:00 → GPS: 55.7560, 37.6180 (Корпус Б)
+  Рабочие рядом: Петров (RSSI -40), Сидоров (RSSI -48), Козлов (RSSI -70)
+  ⚠ Смирнов не виден с 10:15
+
+12:00-13:00 → GPS: 55.7555, 37.6175 (Бытовка)
+  Рабочие рядом: Петров (RSSI -35), Сидоров (RSSI -38) (обед)
+  ⚠ Козлов не виден
+  ⚠ Смирнов не виден
+
+13:00-15:30 → GPS: 55.7562, 37.6185 (Кровля)
+  Рабочие рядом: Петров (RSSI -42), Сидоров (RSSI -55), Козлов (RSSI -58)
+  ⚠ Смирнов не виден (ушел с объекта?)
+
+15:30-18:00 → GPS: 55.7558, 37.6173 (Корпус А)
+  Рабочие рядом: Петров (RSSI -45), Сидоров (RSSI -52), Козлов (RSSI -60)
+  ⚠ Смирнов не виден весь день с 10:15
 ```
 ```
 
 
 **Аномалии:**
 **Аномалии:**
 ```
 ```
-⚠ Бригадир foreman_002 вне объекта 14:20-15:45 (GPS: 55.8000, 37.7000)
-⚠ Бригадир foreman_003 не обновлял локацию 2 часа (батарея?)
-⚠ Рабочий worker_12350 отсканирован в 8:00, но в 14:00 больше нет beacon-событий
+⚠ Бригадир foreman_002 вне объекта 14:20-15:45 (GPS: 55.8000, 37.7000 - 5км от объекта)
+⚠ Бригадир foreman_003 не обновлял локацию 2 часа (батарея разрядилась? приложение закрыто?)
+⚠ Рабочий Смирнов А.А. (Minor=5): NFC сканирован в 8:00, но beacon не виден с 10:15
+  → либо ушел с объекта, либо бейдж разрядился
+⚠ Рабочий Козлов К.К. (Minor=4): не виден с 12:00 до 13:00 (возможно обед отдельно)
+⚠ Бригадир foreman_005: видит 7 рабочих, но по NFC зарегистрировано только 5
+  → возможно чужие бейджи (другая бригада рядом)
 ```
 ```
 
 
 **Excel-экспорт:**
 **Excel-экспорт:**
@@ -776,15 +830,39 @@ Content-Encoding: gzip  (опционально)
 1. Бригадир вручную пишет кто пришел
 1. Бригадир вручную пишет кто пришел
 2. Может подделать (вписать за отсутствующего)
 2. Может подделать (вписать за отсутствующего)
 3. Нет контроля где бригада находится
 3. Нет контроля где бригада находится
-4. Нет данных о перемещениях
-5. Сложно сводить статистику
-
-**Стало (приложение):**
-1. NFC карта - невозможно подделать
-2. GPS + BLE - точная локация в реальном времени
-3. Автоматический табель в ClickHouse
-4. Карта с позициями всех бригад
-5. Отчеты одной кнопкой
+4. Нет данных о перемещениях рабочих
+5. Нет контроля присутствия в течение дня (пришел → ушел незаметно)
+6. Сложно сводить статистику
+
+**Стало (приложение + бейджи):**
+1. **NFC бейдж** - невозможно подделать, физическая привязка к человеку
+2. **GPS бригадира** - точная локация на карте в реальном времени
+3. **BLE beacons от бейджей** - контроль присутствия рабочих рядом с бригадиром
+4. **Автоматический табель** в ClickHouse (кто пришел/ушел/опоздал)
+5. **Контроль в течение дня** - если рабочий ушел, его beacon перестанет ловиться
+6. **Карта с позициями всех бригад** - менеджер видит всю картину
+7. **Отчеты одной кнопкой** - табель, перемещения, аномалии
+
+### Ключевые преимущества бейджа MyBeacon:
+
+**Двойная функция (NFC + iBeacon):**
+1. **NFC** - авторизация утром (tap на смартфон)
+2. **iBeacon** - постоянное отслеживание присутствия (BLE сигнал)
+
+**Автономность:**
+- Батарея CR2032 (или CR2477)
+- Работа 6-12 месяцев без замены
+- Индикация низкого заряда (опционально)
+
+**Надежность:**
+- Защита от воды/пыли (IP65+)
+- Ударопрочный корпус
+- Работа при -20°C до +60°C
+
+**Форм-факторы:**
+- Карточка-бейдж (носится на шнурке)
+- Модуль для каски (крепление на липучке/клипсе)
+- Браслет (для условий где бейдж неудобен)
 
 
 ---
 ---
 
 
@@ -1002,21 +1080,28 @@ GET /beacon/get-vpn.php?mac=ac:84:c6:42:17:90
 
 
 ### ПРОЕКТ 3: Construction Crew Tracking App
 ### ПРОЕКТ 3: Construction Crew Tracking App
 **Функционал:**
 **Функционал:**
-1. NFC авторизация рабочих (табель начала смены)
-2. GPS трекинг бригадиров в реальном времени
-3. BLE маяки для определения зоны на объекте
-4. Карта с позициями всех бригад (Geographic View)
-5. Текстовая аналитика:
+1. **Бейджи MyBeacon** (NFC + iBeacon) для каждого рабочего
+2. **NFC авторизация** рабочих утром (tap бейджа на смартфон бригадира)
+3. **GPS трекинг бригадиров** в реальном времени (позиция на карте)
+4. **BLE сканирование** бейджей рабочих (контроль присутствия рядом с бригадиром)
+5. **Карта с позициями всех бригад** (Geographic View):
+   - GPS маркеры бригадиров
+   - Список рабочих рядом с каждым бригадиром (по BLE)
+   - RSSI-based расстояние до каждого рабочего
+6. **Текстовая аналитика:**
    - Табель рабочего времени (кто пришел/ушел/опоздал)
    - Табель рабочего времени (кто пришел/ушел/опоздал)
-   - Перемещения по зонам (timeline)
-   - Аномалии (вне объекта, нет связи, и т.д.)
-6. Excel экспорт табеля за месяц
+   - Перемещения бригадира (GPS timeline)
+   - Состав бригады в каждый момент (кто был рядом по BLE)
+   - Аномалии (вне объекта, рабочий исчез, чужие бейджи)
+7. **Excel экспорт** табеля за месяц
 
 
 **Технология:**
 **Технология:**
-- Android приложение с NFC reader
-- GPS + BLE hybrid positioning
-- ClickHouse таблица `phones2` для хранения
-- 4 типа событий: status (GPS), beacon (BLE), accel, nfc
+- **Бейджи рабочих:** NFC (NTAG213/215) + iBeacon (Nordic nRF51/nRF52)
+- **Android приложение** бригадира с NFC reader + BLE scanner
+- **GPS позиция** бригадира → видим где бригада
+- **BLE beacons от бейджей** → видим каких рабочих бригадир "видит"
+- **ClickHouse** таблица `phones2` для хранения
+- **4 типа событий:** status (GPS), beacon (BLE от бейджей), accel (если есть), nfc (авторизация)
 
 
 ### Общая инфраструктура: Device Management
 ### Общая инфраструктура: Device Management
 **Админская панель (3 страницы):**
 **Админская панель (3 страницы):**