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)
-2. **Рабочие** - имеют персональные NFC карты
-3. **Объект** - оснащен BLE маяками (iBeacon) в разных зонах
+2. **Рабочие** - носят персональные бейджи (в каске или на одежде)
+
+**Бейдж рабочего (производство MyBeacon):**
+- **NFC метка** - для авторизации в начале смены
+- **iBeacon** - постоянная трансляция BLE сигнала
+- **UUID/Major/Minor** - уникальная идентификация каждого рабочего
+- **Батарея** - автономная работа несколько месяцев
+- **Форм-фактор** - карточка-бейдж или модуль для каски
 
 ### Рабочий процесс
 
@@ -592,9 +598,9 @@ RSSI: -70
 
 **Сценарий:**
 1. Рабочий приходит на объект (например, 8:00)
-2. Бригадир открывает приложение
-3. Рабочий прикладывает свою NFC карту к смартфону
-4. Приложение читает NFC_ID (уникальный идентификатор карты)
+2. Бригадир открывает приложение на смартфоне
+3. Рабочий прикладывает свой **бейдж** к смартфону (NFC tap)
+4. Приложение читает NFC_ID с бейджа
 5. Отправляет событие на сервер:
    ```json
    {
@@ -604,43 +610,61 @@ RSSI: -70
      "TIME": 1565169600000
    }
    ```
-6. Сервер региструет: "Рабочий #12345 начал смену в 8:00"
+6. Сервер регистрирует: "Рабочий #12345 начал смену в 8:00"
 
 **Польза:**
 - Учет рабочего времени (кто когда пришел)
 - Автоматическая табельная
 - Замена бумажных журналов
+- Бейдж невозможно передать другому (привязан к человеку)
 
 #### День: Отслеживание перемещений (BLE + GPS)
 
+**Принцип работы:**
+
+1. **Рабочие носят бейджи** - каждый бейдж постоянно транслирует iBeacon сигнал
+2. **Смартфон бригадира** сканирует BLE → ловит beacons от бейджей рабочих
+3. **Смартфон также собирает** свою GPS позицию
+4. **Отправка на сервер** - GPS бригадира + список обнаруженных beacons
+
 **Что собирает приложение:**
 
-**1. GPS координаты (continuous)**
+**1. GPS координаты бригадира (continuous)**
 - Latitude, Longitude, Altitude
 - Accuracy (HDOP)
 - Provider (GPS/Network/Fused)
 - Частота: каждые 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. Системная информация**
 - Разрешения приложения (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`**
@@ -706,24 +730,36 @@ Content-Encoding: gzip  (опционально)
 
 **Что видит менеджер:**
 - Карта объекта (Google Maps / OpenStreetMap)
-- GPS-маркеры с позициями бригад в реальном времени
+- GPS-маркеры с позициями **бригадиров** в реальном времени
 - Иконки бригадиров разного цвета (каждый PHONE_UUID свой цвет)
+- Размер иконки зависит от количества рабочих рядом
 - Последнее обновление локации (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:**
-- Менеджер видит что бригада №3 находится в "Западном крыле, 2 этаж"
-- Координаты GPS подтверждают что они на объекте
-- BLE маяк показывает точную зону
-- Можно позвонить бригадиру если нужно
+- Менеджер видит что бригадир №1 находится по GPS на объекте
+- Рядом с ним (по BLE) 3 рабочих из 4
+- Один рабочий (Смирнов) не виден → возможно ушел
+- Можно позвонить бригадиру или проверить в табеле когда Смирнов в последний раз сканировался
+
+**Логика определения "рядом":**
+- GPS показывает где **бригадир**
+- BLE beacons показывают каких **рабочих** бригадир "видит"
+- Все рабочие носят бейджи с iBeacon
+- Смартфон бригадира сканирует beacons → шлет на сервер список
+- На карте видим: "Бригадир здесь (GPS), рядом с ним эти рабочие (BLE)"
 
 #### 2. Текстовая аналитика (Reports)
 
@@ -745,23 +781,41 @@ Content-Encoding: gzip  (опционально)
 └──────────────┴───────────┴───────────┴────────┘
 ```
 
-**Перемещения по зонам:**
+**Перемещения бригадира и состав бригады:**
 ```
-Бригадир: Иван Иванов
+Бригадир: Иван Иванов (foreman_001)
 Дата: 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-экспорт:**
@@ -776,15 +830,39 @@ Content-Encoding: gzip  (опционально)
 1. Бригадир вручную пишет кто пришел
 2. Может подделать (вписать за отсутствующего)
 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
 **Функционал:**
-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
 **Админская панель (3 страницы):**