Browse Source

docs: Реструктуризация LEGACY_FEATURES - 3 отдельных проекта

Изменения:
1. Переструктурировал документ: вместо 3 компонентов → 3 ОТДЕЛЬНЫХ ПРОЕКТА
2. ПРОЕКТ 1: WiFi Analytics (аналитика посетителей)
3. ПРОЕКТ 2: BLE Indoor Tracking (позиционирование в помещениях)
4. ПРОЕКТ 3: Construction Crew Tracking App (отслеживание строительных бригад)

Детали ПРОЕКТ 3 (новое):
- Android приложение для бригадиров
- NFC авторизация рабочих (табель в начале смены)
- GPS трекинг + BLE маяки для определения зоны
- Карта с позициями всех бригад (Geographic View)
- Текстовая аналитика: табель, перемещения, аномалии
- Excel экспорт

WiFi Probe Requests:
- Исправлено: современные устройства рандомизируют MAC
- НО! Подключенные к WiFi устройства шлют probe с честным MAC
- WiFi Analytics ОСТАЕТСЯ АКТУАЛЬНЫМ для локаций с бесплатным WiFi
- Убрано из раздела 'Что УБИРАЕМ', добавлено в 'Что ОСТАВЛЯЕМ'

Итого раздел:
- Обновлен чтобы отразить 3 проекта
- Добавлены технологии для каждого проекта
- Детальное описание Construction Crew Tracking
root 1 month ago
parent
commit
1c3a73a06f
1 changed files with 257 additions and 59 deletions
  1. 257 59
      LEGACY_FEATURES.md

+ 257 - 59
LEGACY_FEATURES.md

@@ -2,17 +2,38 @@
 
 ## Архитектура системы
 
-### Три основных компонента:
+Legacy система включает **3 отдельных независимых проекта** и общую административную панель:
 
-1. **WiFi Analytics** (`/beacon/wifi-radar2/`) - панель аналитики для клиентов
-2. **BLE Tracking** (`/beacon/ble/`) - система indoor позиционирования
-3. **Device Management** (`/my-wifi/panel/`) - админка для управления устройствами
+### ПРОЕКТ 1: WiFi Analytics
+**Назначение:** Аналитика посетителей через WiFi Probe Requests
+**Целевая аудитория:** Торговые центры, магазины, общественные места
+**Техника:** Сбор probe requests от устройств подключенных к WiFi сетям
+**Локация кода:** `/beacon/wifi-radar2/`
+
+### ПРОЕКТ 2: BLE Indoor Tracking
+**Назначение:** Позиционирование внутри помещений с радарами
+**Целевая аудитория:** Склады, торговые центры, больницы
+**Техника:** BLE beacons + радары Luckfox для триангуляции
+**Локация кода:** `/beacon/ble/` (endpoint для радаров)
+
+### ПРОЕКТ 3: Construction Crew Tracking App
+**Назначение:** Отслеживание строительных бригад на объектах
+**Целевая аудитория:** Строительные компании, подрядчики
+**Техника:** Android приложение с NFC авторизацией + BLE маяки + GPS
+**Локация кода:** `/beacon/ble/get4.php` (endpoint для мобильных приложений)
+
+### Общая инфраструктура:
+**Device Management** (`/my-wifi/panel/`) - админка для управления всеми типами устройств (WiFi радары, BLE радары, конфигурация)
 
 ---
 
-## WiFi Analytics - Клиентская панель
+## ПРОЕКТ 1: WiFi Analytics
+
+**Описание:** Система аналитики посетителей через сбор WiFi Probe Requests от устройств. Позволяет клиентам (владельцам торговых точек) видеть статистику посещаемости, конверсию, время пребывания.
 
-### 1. Онлайн мониторинг (index.php)
+### Клиентская панель
+
+#### 1. Онлайн мониторинг (index.php)
 
 **Что видит клиент:**
 - Календарь для выбора даты
@@ -124,7 +145,14 @@
 
 ---
 
-## BLE Tracking - Indoor позиционирование
+## ПРОЕКТ 2: BLE Indoor Tracking
+
+**Описание:** Система позиционирования внутри помещений с использованием BLE beacons и радаров Luckfox. Триангуляция по RSSI от нескольких beacon'ов позволяет определить точное местоположение объектов/людей.
+
+**Целевые сценарии:**
+- Склады: отслеживание сотрудников и оборудования
+- Торговые центры: навигация посетителей, heatmaps
+- Больницы: отслеживание пациентов, контроль доступа
 
 ### Источники данных
 
@@ -545,38 +573,74 @@ RSSI: -70
 
 ---
 
-## Мобильное приложение - Функционал
+## ПРОЕКТ 3: Construction Crew Tracking App
+
+**Описание:** Мобильное приложение (Android) для отслеживания строительных бригад на объектах. Решает задачу контроля присутствия рабочих, их локации и перемещений в течение рабочего дня.
+
+**Целевая аудитория:** Строительные компании, подрядчики, управляющие объектами
+
+### Архитектура решения
+
+**Роли:**
+1. **Бригадир** - носит смартфон с приложением (Android)
+2. **Рабочие** - имеют персональные NFC карты
+3. **Объект** - оснащен BLE маяками (iBeacon) в разных зонах
+
+### Рабочий процесс
+
+#### Утро: Авторизация рабочих (NFC)
 
-### Что собирает приложение:
+**Сценарий:**
+1. Рабочий приходит на объект (например, 8:00)
+2. Бригадир открывает приложение
+3. Рабочий прикладывает свою NFC карту к смартфону
+4. Приложение читает NFC_ID (уникальный идентификатор карты)
+5. Отправляет событие на сервер:
+   ```json
+   {
+     "TYPE": "nfc",
+     "PHONE_UUID": "foreman_001",
+     "NFC_ID": "worker_12345",
+     "TIME": 1565169600000
+   }
+   ```
+6. Сервер региструет: "Рабочий #12345 начал смену в 8:00"
+
+**Польза:**
+- Учет рабочего времени (кто когда пришел)
+- Автоматическая табельная
+- Замена бумажных журналов
+
+#### День: Отслеживание перемещений (BLE + GPS)
 
-**1. GPS (continuous)**
+**Что собирает приложение:**
+
+**1. GPS координаты (continuous)**
 - Latitude, Longitude, Altitude
 - Accuracy (HDOP)
 - Provider (GPS/Network/Fused)
-- Частота: каждые N секунд (настраиваемо)
+- Частота: каждые 30-60 секунд
 
-**2. BLE Scanning (continuous)**
-- Сканирование iBeacon форматов
-- UUID, Major, Minor
-- RSSI измерение
-- Частота: каждые N секунд
-
-**3. Акселерометр (on change)**
-- X, Y, Z значения
-- Температура сенсора
-- Батарея устройства (если метка)
-- Событие: при движении
-
-**4. NFC (on tap)**
-- Чтение NFC меток
-- NFC_ID (уникальный идентификатор)
-- Событие: при поднесении телефона
-
-**5. Системная информация**
-- Разрешения приложения (location, bluetooth, etc)
+**2. BLE маяки (continuous scanning)**
+- Сканирование iBeacon форматов в зоне видимости
+- UUID, Major, Minor (идентификация зоны)
+- RSSI измерение (расстояние до маяка)
+- Частота: каждые 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 → "Кровля"
+```
+
 ### Формат отправки:
 
 **HTTP POST на `/beacon/ble/get4.php`**
@@ -634,25 +698,119 @@ Content-Encoding: gzip  (опционально)
 ]
 ```
 
+**Сохранение:** ClickHouse таблица `phones2`
+
+### Серверная аналитика
+
+#### 1. Аналитика на карте (Geographic View)
+
+**Что видит менеджер:**
+- Карта объекта (Google Maps / OpenStreetMap)
+- 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)
+
+**Use case:**
+- Менеджер видит что бригада №3 находится в "Западном крыле, 2 этаж"
+- Координаты GPS подтверждают что они на объекте
+- BLE маяк показывает точную зону
+- Можно позвонить бригадиру если нужно
+
+#### 2. Текстовая аналитика (Reports)
+
+**Табель рабочего времени:**
+```
+Дата: 2025-12-28
+Объект: ЖК "Новый город"
+Бригадир: Иван Иванов (foreman_001)
+
+Рабочие:
+┌──────────────┬───────────┬───────────┬────────┐
+│ NFC_ID       │ Пришел    │ Ушел      │ Часы   │
+├──────────────┼───────────┼───────────┼────────┤
+│ worker_12345 │ 08:05     │ 18:12     │ 10:07  │
+│ worker_12346 │ 08:02     │ 18:15     │ 10:13  │
+│ worker_12347 │ 08:45     │ 17:50     │ 09:05  │ ← опоздал
+│ worker_12348 │ 08:00     │ 18:20     │ 10:20  │
+│ worker_12349 │ -         │ -         │ -      │ ← не пришел
+└──────────────┴───────────┴───────────┴────────┘
+```
+
+**Перемещения по зонам:**
+```
+Бригадир: Иван Иванов
+Дата: 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)
+```
+
+**Аномалии:**
+```
+⚠ Бригадир foreman_002 вне объекта 14:20-15:45 (GPS: 55.8000, 37.7000)
+⚠ Бригадир foreman_003 не обновлял локацию 2 часа (батарея?)
+⚠ Рабочий worker_12350 отсканирован в 8:00, но в 14:00 больше нет beacon-событий
+```
+
+**Excel-экспорт:**
+- Табель за месяц (все бригады)
+- Перемещения по зонам
+- Рабочие часы по дням
+- Аномалии и опоздания
+
+### Преимущества перед бумажным журналом
+
+**Было (бумага):**
+1. Бригадир вручную пишет кто пришел
+2. Может подделать (вписать за отсутствующего)
+3. Нет контроля где бригада находится
+4. Нет данных о перемещениях
+5. Сложно сводить статистику
+
+**Стало (приложение):**
+1. NFC карта - невозможно подделать
+2. GPS + BLE - точная локация в реальном времени
+3. Автоматический табель в ClickHouse
+4. Карта с позициями всех бригад
+5. Отчеты одной кнопкой
+
 ---
 
-## WiFi Probe Requests - Техника сбора
+### Техника сбора данных: WiFi Probe Requests
 
-### Что ловят радары:
+**Принцип работы:**
 
-**WiFi устройство постоянно ищет знакомые сети:**
+WiFi устройство постоянно ищет знакомые сети (probe requests):
 ```
 Телефон: "Есть тут 'Home WiFi'?"
 Телефон: "Есть тут 'Office WiFi'?"
 Телефон: "Есть тут 'Starbucks'?"
 ```
 
-**Радар слышит эти запросы:**
+**Что ловят радары:**
 - MAC-адрес телефона (source)
 - SSID который ищет
 - Уровень сигнала (RSSI)
 - Время детекции
 
+**Важно про MAC-адреса:**
+- ✅ Современные устройства (iOS/Android) **рандомизируют MAC** в probe requests
+- ✅ НО! Устройства **подключенные к точке доступа** отправляют probe requests с **честным MAC-адресом**
+- ✅ Поэтому WiFi Analytics **остается актуальным** для локаций с собственными WiFi сетями
+- ✅ Клиенты (магазины, ТЦ) предоставляют бесплатный WiFi → посетители подключаются → получаем честные MAC
+
 **Endpoint для радаров:** `/beacon/wifi_receiver.php`
 
 **Формат данных (текстовый):**
@@ -662,6 +820,13 @@ dev=ac:84:c6:42:17:90&source=d8:0d:17:5e:07:94&ssid=Home_WiFi&rssi=-75&time=1565
 
 **Сохранение:** MySQL таблица `clients`
 
+**Use case:**
+1. Магазин развернул бесплатный WiFi "Shop_Free_WiFi"
+2. Посетители подключаются к сети
+3. Их устройства шлют probe requests с честным MAC
+4. Радары собирают данные
+5. Магазин видит статистику: сколько людей, конверсия, время пребывания
+
 ---
 
 ## Device Configuration API
@@ -789,40 +954,73 @@ GET /beacon/get-vpn.php?mac=ac:84:c6:42:17:90
 1. ❌ **OpenVPN туннели** - не требуется по ТЗ
 2. ❌ **Inline editing** - опасно, заменить на модальные окна
 3. ❌ **Ретаргетинг экспорты** - неактуально (GDPR, устаревшая техника)
-4. ❌ **WiFi Probe Requests** - современные iOS/Android рандомизируют MAC
 
 ### Что ОСТАВЛЯЕМ/УЛУЧШАЕМ:
 
-1. ✅ **BLE indoor tracking** - актуально
-2. ✅ **GPS + BLE гибрид** - indoor + outdoor
-3. ✅ **Акселерометр** - для wearables
-4. ✅ **NFC чек-ины** - для access control
-5. ✅ **ClickHouse** - для аналитики событий
-6. ✅ **Device management** - с RBAC и multi-tenant
-7. ✅ **OTA updates** - но через защищенный API
-8. ✅ **Отчеты и дашборды** - улучшенные визуализации
+1. ✅ **WiFi Probe Requests** - АКТУАЛЬНО! Устройства подключенные к WiFi сети отправляют probe с честным MAC
+2. ✅ **BLE indoor tracking** - актуально
+3. ✅ **GPS + BLE гибрид** - indoor + outdoor (приложение для бригад)
+4. ✅ **Акселерометр** - для wearables
+5. ✅ **NFC чек-ины** - для access control (авторизация рабочих)
+6. ✅ **ClickHouse** - для аналитики событий
+7. ✅ **Device management** - с RBAC и multi-tenant
+8. ✅ **OTA updates** - но через защищенный API
+9. ✅ **Отчеты и дашборды** - улучшенные визуализации
+10. ✅ **Карта с геолокацией** - для отслеживания бригад
 
 ---
 
 ## Итого: Полный список фич Legacy проекта
 
-### WiFi Analytics (4 страницы):
-1. Онлайн мониторинг детекций
+### ПРОЕКТ 1: WiFi Analytics
+**Клиентская панель (4 страницы):**
+1. Онлайн мониторинг детекций (последние 100)
 2. Список уникальных MAC-адресов
-3. Отчеты с конверсией (воронка клиентов)
-4. Экспорт MAC для ретаргетинга
-
-### BLE Tracking:
-1. Indoor позиционирование (UUID/Major/Minor)
-2. GPS outdoor трекинг
-3. Акселерометр мониторинг
-4. NFC чек-ины
-5. Статус батареи устройств
-6. Разрешения приложений
-7. Комбинированные события (status+beacon+accel+nfc)
-
-### Device Management (3 страницы):
-1. Список устройств с inline редактированием (15 полей)
+3. Отчеты с конверсией (воронка: прошли мимо / зашли / задержались 20+ мин)
+4. Excel экспорт детекций за период
+5. Экспорт MAC для ретаргетинга (Яндекс.Аудитория, myTarget)
+
+**Технология:**
+- WiFi Probe Requests от устройств подключенных к WiFi
+- RSSI-based логика определения "зашли" vs "прошли мимо"
+- MySQL таблица `clients` для хранения
+- ClickHouse `clients2` для дубликатов (долгосрочное хранение)
+
+### ПРОЕКТ 2: BLE Indoor Tracking
+**Функционал:**
+1. Indoor позиционирование (UUID/Major/Minor trilateration)
+2. Мониторинг браслетов с акселерометром (fall detection)
+3. Трекинг активов (asset tracking)
+4. Мониторинг батареи IoT устройств
+5. Отслеживание перемещений в реальном времени
+
+**Технология:**
+- Радары Luckfox собирают BLE beacons
+- ClickHouse таблица `blex5` для хранения
+- iBeacon протокол (UUID/Major/Minor)
+- RSSI для расчета расстояния
+
+### ПРОЕКТ 3: Construction Crew Tracking App
+**Функционал:**
+1. NFC авторизация рабочих (табель начала смены)
+2. GPS трекинг бригадиров в реальном времени
+3. BLE маяки для определения зоны на объекте
+4. Карта с позициями всех бригад (Geographic View)
+5. Текстовая аналитика:
+   - Табель рабочего времени (кто пришел/ушел/опоздал)
+   - Перемещения по зонам (timeline)
+   - Аномалии (вне объекта, нет связи, и т.д.)
+6. Excel экспорт табеля за месяц
+
+**Технология:**
+- Android приложение с NFC reader
+- GPS + BLE hybrid positioning
+- ClickHouse таблица `phones2` для хранения
+- 4 типа событий: status (GPS), beacon (BLE), accel, nfc
+
+### Общая инфраструктура: Device Management
+**Админская панель (3 страницы):**
+1. Список устройств с inline редактированием (15 полей конфигурации)
 2. Управление клиентами и оплатой
 3. Добавление клиентов с устройствами