Browse Source

Add comprehensive legacy features analysis

Documented ALL features from legacy MyBeacon project:

WiFi Analytics:
- Online monitoring with DataTables
- Unique MAC addresses list
- Conversion funnel reports (passed by / entered / stayed 20min)
- Excel export with date range filters
- MAC export for retargeting (Yandex.Audience, myTarget)

BLE Tracking:
- Indoor positioning (UUID/Major/Minor beacons)
- GPS outdoor tracking
- Accelerometer monitoring (fall detection)
- NFC check-ins (room access)
- Battery monitoring for wearables
- Combined events (status+beacon+accel+nfc)

Device Management:
- Inline editable device configs (15 fields)
- Client management with device assignments
- Payment tracking and limits

Infrastructure:
- MySQL for configs + WiFi data
- ClickHouse for BLE events (phones2, blex5 tables)
- OpenVPN tunnels for remote access
- OTA firmware updates
- Device configuration API

Next: Deep dive into all remaining features...
root 1 month ago
parent
commit
a3f38b0622
1 changed files with 852 additions and 0 deletions
  1. 852 0
      LEGACY_FEATURES.md

+ 852 - 0
LEGACY_FEATURES.md

@@ -0,0 +1,852 @@
+# MyBeacon Legacy - Полный функционал
+
+## Архитектура системы
+
+### Три основных компонента:
+
+1. **WiFi Analytics** (`/beacon/wifi-radar2/`) - панель аналитики для клиентов
+2. **BLE Tracking** (`/beacon/ble/`) - система indoor позиционирования
+3. **Device Management** (`/my-wifi/panel/`) - админка для управления устройствами
+
+---
+
+## WiFi Analytics - Клиентская панель
+
+### 1. Онлайн мониторинг (index.php)
+
+**Что видит клиент:**
+- Календарь для выбора даты
+- Список своих WiFi-радаров с last seen временем
+- Таблица детектированных устройств в реальном времени
+
+**Таблица "Онлайн":**
+- **#** - порядковый номер
+- **Радар** - MAC-адрес радара который поймал
+- **Время** - когда засечен
+- **MAC** - MAC-адрес телефона/устройства
+- **Сохраненная сеть** - SSID который искал телефон
+- **Уровень сигнала** - RSSI (dBm)
+
+**Лимит:** Последние 100 записей за выбранный день
+
+**Интерактив:**
+- Клик на дату → фильтр по дате
+- Клик на радар → показать только его данные
+- DataTables поиск по всем полям
+
+---
+
+### 2. Список уникальных MAC-адресов (index2.php)
+
+**Функционал:**
+- Календарь для выбора даты
+- Список WiFi-радаров с last seen
+- Таблица УНИКАЛЬНЫХ устройств (без дубликатов)
+
+**Таблица "Список MAC":**
+- Те же колонки что в "Онлайн"
+- Но каждый MAC показан **только один раз**
+- Query: `SELECT DISTINCT source, ssid, time, rssi, dev FROM clients`
+
+**Лимит:** Первые 100 уникальных за день
+
+**Use case:** Понять сколько РАЗНЫХ людей прошло, а не общее количество детекций
+
+---
+
+### 3. Отчеты и аналитика (index3.php)
+
+#### Отчет "Конверсия клиентов"
+
+**Метрики:**
+
+1. **Всего клиентов за день**
+   - Уникальные MAC-адреса
+   - Query: `COUNT(DISTINCT source)`
+
+2. **Зашли в магазин**
+   - Фильтр: `rssi > -80` (близко к радару)
+   - Логика: сильный сигнал = внутри помещения
+
+3. **Провели более 20 минут**
+   - Фильтр: `rssi > -90` (очень близко, долго)
+   - Логика: очень сильный сигнал = задержался
+
+**Визуализация:**
+- Круговая диаграмма (Pie chart) с 3 сегментами:
+  - Прошли мимо
+  - Зашли в магазин
+  - Провели более 20 мин
+
+**Математика:**
+```
+Прошли мимо = Всего - Зашли
+Зашли (без долгих) = Зашли - Провели_20мин
+Провели 20 мин = как есть
+```
+
+#### Экспорт в Excel
+
+**Форма:**
+- **Выбор устройств** - мультиселект радаров
+- **Период** - от (datepicker) до (datepicker)
+- **Кнопка** "Скачать"
+
+**Формат:** Excel файл (.xlsx)
+
+**Use case:**
+- Скачать все детекции за месяц
+- Анализ в Excel/Power BI
+- Отчеты руководству
+
+---
+
+### 4. Экспорт MAC для ретаргетинга (goodmac.php)
+
+**Заголовок:** "Выгрузка MAC в системы контекстной рекламы"
+
+**Форма:**
+- **Выбор устройств** - мультиселект радаров
+- **Период** - от (datepicker) до (datepicker)
+- **Кнопка** "Выгрузить mac-адреса"
+
+**Назначение:**
+- Экспорт MAC-адресов для **Яндекс.Аудитории**
+- Экспорт MAC-адресов для **myTarget**
+
+**Use case:**
+1. Радары засекли 1000 человек в магазине
+2. Выгрузить их MAC в Яндекс.Аудиторию
+3. Настроить ретаргетинг рекламу на этих людей
+4. Они увидят рекламу магазина в мобильных приложениях
+
+**Формат выгрузки:** TXT файл с MAC-адресами (по одному на строку)
+
+---
+
+## BLE Tracking - Indoor позиционирование
+
+### Источники данных
+
+#### 1. Мобильные приложения (Android/iOS)
+
+**Endpoint:** `/beacon/ble/get4.php`
+
+**Типы событий:**
+
+**a) Status (статус телефона)**
+- GPS координаты (lat, lon, alt, accuracy)
+- Разрешения приложения (permissions)
+- Уровень батареи телефона
+- GPS provider (GPS/Network/Fused)
+- Разрешения на энергосбережение
+
+**b) Beacon (BLE beacon детекция)**
+- UUID beacon'а
+- Major, Minor (идентификаторы)
+- RSSI (уровень сигнала)
+- MAC-адрес beacon'а
+- Timestamp
+
+**c) Accel (акселерометр)**
+- X, Y, Z (координаты)
+- Температура датчика
+- Батарея датчика
+- BT MAC устройства
+- RSSI
+
+**d) NFC (NFC метки)**
+- NFC ID метки
+- Timestamp чек-ина
+
+**Формат приема:** JSON с gzip сжатием
+
+**Хранение:** ClickHouse таблица `phones2`
+
+**Use cases:**
+- Indoor navigation (по BLE beacons)
+- Outdoor navigation (по GPS)
+- Трекинг активности (акселерометр)
+- Чек-ины в зоны (NFC)
+- Мониторинг батареи устройств
+
+---
+
+#### 2. WiFi/BLE радары (Luckfox устройства)
+
+**Endpoint:** `/beacon/newfilebeacon.php`
+
+**Типы устройств:**
+
+**a) iBeacon (iOS/Android)**
+- UUID, Major, Minor
+- RSSI
+- Timestamp
+
+**b) my-beacon_acc (кастомные устройства с акселерометром)**
+- BT MAC
+- RSSI
+- X, Y, Z (акселерометр)
+- Батарея
+- Timestamp
+
+**c) bracelet_acc (браслеты с акселерометром)**
+- BT MAC
+- RSSI
+- X, Y, Z
+- Timestamp
+
+**d) bracelet_bat (браслеты с батареей)**
+- BT MAC
+- RSSI
+- Батарея
+- Timestamp
+
+**Формат приема:** Текстовый через разделитель `;`
+
+Пример строки:
+```
+ibeacon_android;ac:15:a2:3f:ee:26;FDA50693-A4E2-4FB1-AFCF-C6EB07647825;1565183706;-75;0;1000;10
+```
+
+**Хранение:** ClickHouse таблица `blex5`
+
+**Use cases:**
+- Отслеживание сотрудников (браслеты)
+- Трекинг активов (метки на оборудовании)
+- Мониторинг батареи IoT устройств
+- Детекция падений (акселерометр)
+
+---
+
+## Device Management - Админская панель
+
+### Навигация:
+
+1. **Устройства (index.php)** - список радаров с конфигурацией
+2. **Добавление (adddev.php)** - добавить клиента с устройствами
+3. **Клиенты (clients.php)** - список клиентов
+4. **Инструкция (info.php)** - документация
+5. **VPN** - сканер VPN подключений (внешняя ссылка)
+
+---
+
+### 1. Устройства (index.php)
+
+**Таблица устройств:**
+
+**Колонки (все РЕДАКТИРУЕМЫЕ inline):**
+1. **#** - порядковый номер
+2. **MAC-адрес** - не редактируется
+3. **время** - last seen, не редактируется
+4. **wf_ssid** - WiFi SSID для подключения радара к сети ✏️
+5. **wf_psk** - WiFi пароль ✏️
+6. **ovpn_flag** - OpenVPN включен (0/1) ✏️
+7. **ovpn_addr** - URL для получения VPN конфига ✏️
+8. **wf_flag** - WiFi сбор включен (0/1) ✏️
+9. **wf_addr** - URL для отправки WiFi данных ✏️
+10. **bt_flag** - BLE сбор включен (0/1) ✏️
+11. **bt_addr** - URL для отправки BLE данных ✏️
+12. **fw_flag** - Firmware update включен (0/1) ✏️
+13. **fw_addr** - URL для получения прошивки ✏️
+14. **reboot_flag** - Флаг перезагрузки (0/1) ✏️
+15. **ip** - IP адрес устройства ✏️
+
+**Функционал:**
+
+**Inline Editing (jEditable):**
+- Клик на ячейку → превращается в input
+- Кнопки "Ok" / "Cancel"
+- При "Ok" → AJAX сохранение → обновление в БД
+- Индикатор загрузки (spinner)
+
+**DataTables:**
+- Поиск по всем колонкам (глобальное поле поиска)
+- Сортировка по любой колонке
+- Pagination (если много устройств)
+
+**Use cases:**
+- Настроить WiFi для нового радара
+- Включить/выключить модули (WiFi/BLE/VPN)
+- Обновить URL endpoints
+- Перезагрузить радар (reboot_flag = 1)
+- Проверить IP адрес устройства
+- Найти радар по MAC
+
+---
+
+### 2. Клиенты (clients.php)
+
+**Таблица клиентов:**
+
+**Колонки (только чтение):**
+1. **#** - порядковый номер
+2. **Логин** - email клиента
+3. **Пароль** - plain text (!)
+4. **Устройства** - список MAC через `<br>` (визуально столбиком)
+5. **Оплачено до** - ссылка на редактирование даты
+6. **Информация** - контакты, юрлицо, телефон
+7. **Оплата** - текстовый статус оплаты
+
+**Функционал:**
+- Просмотр всех клиентов
+- Клик на дату → редактирование срока оплаты (`tilledit.php`)
+- DataTables поиск/сортировка
+
+**Use case:**
+- Проверить какие устройства у клиента
+- Посмотреть статус оплаты
+- Продлить срок действия
+
+---
+
+### 3. Добавление устройств (adddev.php)
+
+**Форма создания клиента:**
+
+**Поля:**
+
+1. **Логин** - required, уникальный email
+2. **Пароль** - required, plain text
+3. **Список устройств** - textarea, MAC через `;`
+   ```
+   Пример ввода:
+   d8:0d:17:5e:07:94;ac:84:c6:42:17:90;
+   ```
+4. **Информация о клиенте** - textarea
+   ```
+   Юрлицо, имя, телефон, email
+   ```
+5. **Оплата** - textarea (текст)
+   ```
+   До какого числа оплачены устройства
+   ```
+6. **Оплачен** - checkbox
+   - ✅ Checked → max1000 = 0 (полный доступ)
+   - ❌ Unchecked → max1000 = 1 (лимит 1000)
+
+**Логика создания:**
+
+1. **Валидация:**
+   - Логин, пароль, устройства - обязательны
+   - Проверка: логин уже занят?
+
+2. **Создание пользователя:**
+   - INSERT в таблицу `users`
+   - till = текущая дата
+
+3. **Создание связей устройств:**
+   - Парсинг MAC через `;`
+   - Для каждого MAC → INSERT в `user_devices`
+   - name = MAC (копия)
+   - segment = 0 (для Yandex.Аудитории)
+
+**Use case:**
+- Новый клиент купил 3 радара
+- Админ создает учетную запись
+- Вводит MAC-адреса радаров через `;`
+- Клиент получает доступ к панели аналитики
+
+---
+
+## WiFi Analytics - Детальная логика
+
+### Календарь
+
+**Функционал:**
+- Навигация по месяцам (◀◀◀ / ▶▶▶)
+- Текущая дата подсвечена
+- Клик на дату → фильтр данных
+
+**Параметры URL:**
+```
+?date=2024-12-27   → выбранная дата
+?y=2024&m=12       → месяц/год навигации
+?mac=ac:84:c6...   → выбранный радар
+```
+
+---
+
+### Выбор радара
+
+**Интерфейс:**
+```
+Список WiFi-радаров:
+ac:84:c6:42:17:90  был на связи 2024-12-27 15:30:45
+d8:0d:17:5e:07:94  был на связи 2024-12-27 15:28:12
+```
+
+**Логика:**
+- Для каждого радара клиента → последняя запись в БД
+- Клик на MAC → SESSION['mac'] = выбранный радар
+- Фильтр таблицы по этому радару
+
+**Use case:**
+- У клиента 5 магазинов (5 радаров)
+- Выбирает конкретный магазин
+- Видит только его статистику
+
+---
+
+### RSSI логика (определение локации)
+
+**Градации сигнала:**
+
+| RSSI | Расстояние | Категория |
+|------|-----------|-----------|
+| > -50 | 0-2м | Очень близко |
+| -50 to -80 | 2-10м | В помещении |
+| -80 to -90 | 10-20м | У входа |
+| < -90 | >20м | На улице |
+
+**Применение в отчетах:**
+
+1. **Зашли в магазин:** `rssi > -80`
+   - Телефон близко к радару
+   - Скорее всего внутри помещения
+
+2. **Провели более 20 минут:** `rssi > -90`
+   - Очень близко, долго в радиусе
+   - Не просто прошел, а задержался
+
+**Ограничения:**
+- Время не измеряется напрямую
+- Используется эвристика через силу сигнала
+- Работает только если радар ВНУТРИ магазина
+
+---
+
+## Системы ретаргетинга
+
+### Яндекс.Аудитория
+
+**Как работает:**
+
+1. **Выгрузка MAC:**
+   - Админ выбирает период (например, за месяц)
+   - Система генерирует файл с уникальными MAC
+   - Формат: один MAC на строку
+
+2. **Загрузка в Яндекс.Аудиторию:**
+   - Создание нового сегмента
+   - Upload файла с MAC
+   - Яндекс матчит MAC → GAID/IDFA
+
+3. **Настройка рекламы:**
+   - Создание кампании в Яндекс.Директ
+   - Таргетинг на этот сегмент
+   - Показ рекламы на мобильных устройствах
+
+**Use case:**
+```
+День 1: Радар засек 500 человек в магазине
+День 2: Выгрузить 500 MAC в Яндекс
+День 3: Запустить рекламу "Скидка 20% только сегодня!"
+День 4: Эти 500 человек видят рекламу в Яндекс.Браузере
+```
+
+---
+
+### myTarget
+
+**То же самое, но для:**
+- VK.com
+- Одноклассники
+- Mail.ru приложения
+
+**Формат:** Аналогичный (файл с MAC)
+
+---
+
+## BLE Indoor Positioning - Use Cases
+
+### Торговый центр
+
+**Сценарий:**
+1. Посетитель заходит в ТЦ
+2. Открывает мобильное приложение ТЦ
+3. Приложение сканирует BLE beacons
+4. Система определяет:
+   - Этаж (по UUID beacon'ов)
+   - Зона (по Major: electronics, clothes, food court)
+   - Точная позиция (по Minor + RSSI трилатерация)
+
+**Данные в ClickHouse:**
+```
+PHONE_UUID: abc123...
+BEACON_UUID: FDA50693-A4E2-4FB1-AFCF-C6EB07647825
+BEACON_MAJOR: 1 (electronics)
+BEACON_MINOR: 15 (specific location)
+BEACON_RSSI: -65
+BEACON_TIME: 1565183706000
+```
+
+**Возможности:**
+- Навигация по ТЦ (показать путь до магазина)
+- Push уведомления при входе в зону (geofencing)
+- Аналитика трафика (heatmaps)
+- Время в зонах (dwell time)
+
+---
+
+### Склад / Логистика
+
+**Сценарий:**
+1. Сотрудник носит браслет с акселерометром
+2. Оборудование помечено BLE метками
+3. Радары отслеживают всё в реальном времени
+
+**Данные:**
+```
+Type: bracelet_acc
+BT_MAC: ac:15:a2:3f:ee:26
+RSSI: -55
+ACC_X: 0.5, ACC_Y: -0.3, ACC_Z: 9.8
+ACC_BAT: 85%
+TIME: 1565183706
+```
+
+**Возможности:**
+- Трекинг местоположения сотрудников
+- Детекция падений (акселерометр)
+- Мониторинг батареи браслетов
+- Контроль рабочего времени
+- Поиск оборудования (asset tracking)
+
+---
+
+### Больница / Клиника
+
+**Сценарий:**
+1. Пациенты носят браслеты
+2. NFC метки на дверях палат/процедурных
+3. BLE beacons в коридорах
+
+**События:**
+```
+Type: nfc
+NFC_ID: room_301
+PHONE_UUID: patient_12345
+TIME: 1565183706000
+
+Type: beacon
+BEACON_UUID: ward_A
+BEACON_MAJOR: 3 (floor)
+BEACON_MINOR: 1 (room)
+RSSI: -70
+```
+
+**Возможности:**
+- Чек-ины в палаты/процедурные (NFC)
+- Отслеживание перемещений пациентов
+- Контроль доступа (кто где был)
+- Тревожная кнопка (через приложение → GPS)
+- Маршруты движения персонала
+
+---
+
+## Мобильное приложение - Функционал
+
+### Что собирает приложение:
+
+**1. GPS (continuous)**
+- Latitude, Longitude, Altitude
+- Accuracy (HDOP)
+- Provider (GPS/Network/Fused)
+- Частота: каждые N секунд (настраиваемо)
+
+**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)
+- Уровень батареи телефона
+- Настройки энергосбережения
+
+### Формат отправки:
+
+**HTTP POST на `/beacon/ble/get4.php`**
+
+**Headers:**
+```
+Content-Type: application/json
+Content-Encoding: gzip  (опционально)
+```
+
+**Body (JSON array):**
+```json
+[
+  {
+    "TYPE": "status",
+    "PHONE_UUID": "abc-123-def-456",
+    "LOCATION_LATITUDE": 55.7558,
+    "LOCATION_LONGITUDE": 37.6173,
+    "LOCATION_ALTITUDE": 120.5,
+    "LOCATION_ACCURACY": 15.0,
+    "LOCATION_PROVIDER": "fused",
+    "APP_PERMISSIONS": "location,bluetooth",
+    "APP_POWER_PERMISSIONS": "unrestricted",
+    "PHONE_BAT": 85,
+    "TIME": 1565183706000
+  },
+  {
+    "TYPE": "beacon",
+    "PHONE_UUID": "abc-123-def-456",
+    "BT_MAC": "ac:15:a2:3f:ee:26",
+    "BEACON_UUID": "FDA50693-A4E2-4FB1-AFCF-C6EB07647825",
+    "BEACON_MAJOR": 1,
+    "BEACON_MINOR": 15,
+    "BEACON_RSSI": -65,
+    "BEACON_TIME": 1565183706000
+  },
+  {
+    "TYPE": "accel",
+    "PHONE_UUID": "abc-123-def-456",
+    "BT_MAC": "ac:15:a2:3f:ee:26",
+    "BEACON_RSSI": -60,
+    "ACC_X": 0.5,
+    "ACC_Y": -0.3,
+    "ACC_Z": 9.8,
+    "ACC_TEMP": 28.5,
+    "ACC_BAT": 90,
+    "BEACON_TIME": 1565183706000
+  },
+  {
+    "TYPE": "nfc",
+    "PHONE_UUID": "abc-123-def-456",
+    "NFC_ID": "room_301",
+    "TIME": 1565183706000
+  }
+]
+```
+
+---
+
+## WiFi Probe Requests - Техника сбора
+
+### Что ловят радары:
+
+**WiFi устройство постоянно ищет знакомые сети:**
+```
+Телефон: "Есть тут 'Home WiFi'?"
+Телефон: "Есть тут 'Office WiFi'?"
+Телефон: "Есть тут 'Starbucks'?"
+```
+
+**Радар слышит эти запросы:**
+- MAC-адрес телефона (source)
+- SSID который ищет
+- Уровень сигнала (RSSI)
+- Время детекции
+
+**Endpoint для радаров:** `/beacon/wifi_receiver.php`
+
+**Формат данных (текстовый):**
+```
+dev=ac:84:c6:42:17:90&source=d8:0d:17:5e:07:94&ssid=Home_WiFi&rssi=-75&time=1565183706
+```
+
+**Сохранение:** MySQL таблица `clients`
+
+---
+
+## Device Configuration API
+
+### Получение конфига устройством
+
+**Endpoint:** `/beacon/getfile_v2.php?mac=ac:84:c6:42:17:90`
+
+**Ответ (текстовый):**
+```
+wf_client_ssid=Office_WiFi
+wf_client_psk=password123
+ovpn_flag=1
+ovpn_addr=https://beacon.e-bash.ru/get-vpn.php?mac=
+wf_flag=1
+wf_addr=https://beacon.e-bash.ru/wifi_receiver.php
+bt_flag=1
+bt_addr=https://beacon.e-bash.ru/newfilebeacon.php
+fw_flag=0
+fw_addr=https://beacon.e-bash.ru/fw_update.php?mac=
+reboot_flag=0
+ip=192.168.5.244
+```
+
+**Устройство парсит и применяет конфиг:**
+1. Подключается к WiFi (wf_client_ssid + wf_client_psk)
+2. Если ovpn_flag=1 → скачать VPN конфиг
+3. Если wf_flag=1 → начать отправку WiFi данных на wf_addr
+4. Если bt_flag=1 → начать отправку BLE данных на bt_addr
+5. Если reboot_flag=1 → перезагрузиться
+6. Если fw_flag=1 → скачать firmware с fw_addr
+
+**Частота проверки:** Каждые N минут (например, каждые 5 минут)
+
+---
+
+## VPN Туннели
+
+### Назначение:
+
+**Проблема:**
+- Радар за NAT, нет белого IP
+- Админ не может зайти на устройство напрямую
+- Нужен доступ для отладки/настройки
+
+**Решение: OpenVPN туннель**
+
+**Схема:**
+```
+Радар (192.168.5.244)
+  ↓ VPN Client
+  ↓ Туннель
+  ↓
+VPN Server (beacon.e-bash.ru)
+  ↓ VPN адрес: 10.42.61.115
+  ↓
+Админ может SSH на 10.42.61.115
+```
+
+**Endpoint для получения VPN конфига:**
+```
+GET /beacon/get-vpn.php?mac=ac:84:c6:42:17:90
+
+Ответ: .ovpn файл (конфигурация OpenVPN)
+```
+
+**Сканер VPN подключений:**
+- Страница `/beacon/scanvpn.php`
+- Показывает какие радары сейчас в VPN
+- VPN адреса устройств
+- Статус подключения
+
+---
+
+## Firmware Update
+
+### OTA обновления прошивки
+
+**Endpoint:** `/beacon/fw_update.php?mac=ac:84:c6:42:17:90`
+
+**Логика:**
+1. Устройство проверяет `fw_flag` в конфиге
+2. Если `fw_flag=1` → GET запрос на `fw_addr`
+3. Сервер отдает `.bin` файл (прошивка)
+4. Устройство проверяет MD5
+5. Записывает прошивку в flash
+6. Перезагружается
+
+**Файлы прошивок:**
+```
+/beacon/fw.bin              - текущая версия
+/beacon/fw_rt.bin           - для роутеров
+/beacon/fw_gw_upgrade.bin   - для gateway
+/beacon/cudy_tr1200.bin     - для Cudy TR1200
+```
+
+**Use case:**
+- Админ выкладывает новую прошивку
+- Устанавливает `fw_flag=1` для нужных устройств
+- Радары автоматически обновляются при следующей проверке
+- После обновления `fw_flag=0` (вручную)
+
+---
+
+## Ключевые отличия от нового проекта
+
+### Что БЫЛО в Legacy:
+
+1. ✅ **WiFi Probe Requests аналитика** - основная фича
+2. ✅ **Отчеты с конверсией** (прошли мимо / зашли / задержались)
+3. ✅ **Экспорт для ретаргетинга** (Яндекс, myTarget)
+4. ✅ **BLE indoor positioning** с мобильными приложениями
+5. ✅ **Акселерометр tracking** (падения, активность)
+6. ✅ **NFC чек-ины** (зоны, комнаты)
+7. ✅ **GPS outdoor tracking**
+8. ✅ **OpenVPN туннели** для удаленного доступа
+9. ✅ **OTA firmware updates**
+10. ✅ **Inline editing** конфигов устройств
+11. ✅ **Excel export** детекций
+12. ✅ **ClickHouse** для BLE данных
+13. ✅ **MySQL** для WiFi данных и конфигов
+
+### Что УБИРАЕМ в новом:
+
+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. ✅ **Отчеты и дашборды** - улучшенные визуализации
+
+---
+
+## Итого: Полный список фич Legacy проекта
+
+### WiFi Analytics (4 страницы):
+1. Онлайн мониторинг детекций
+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 полей)
+2. Управление клиентами и оплатой
+3. Добавление клиентов с устройствами
+
+### API для устройств:
+1. Получение конфигурации
+2. Отправка WiFi детекций
+3. Отправка BLE событий
+4. Получение VPN конфига
+5. Скачивание firmware
+6. Heartbeat/статус
+
+### Аналитика:
+1. Календарь для выбора периода
+2. Фильтр по устройствам
+3. Круговые диаграммы (pie charts)
+4. Excel экспорт с фильтрами
+5. Поиск/сортировка DataTables
+6. RSSI-based геолокация (близко/далеко)
+
+### Инфраструктура:
+1. MySQL для конфигов и WiFi данных
+2. ClickHouse для BLE событий (phones2, blex5)
+3. Redis (упоминался, не видел использования)
+4. OpenVPN сервер
+5. Nginx reverse proxy
+6. PHP 7.x backend
+7. jQuery + DataTables + jEditable frontend