diff --git a/PROJECT_MAP.md b/PROJECT_MAP.md index b672f03..423a9ae 100644 --- a/PROJECT_MAP.md +++ b/PROJECT_MAP.md @@ -21,16 +21,18 @@ | Файл | Строк | Назначение | |------|-------|------------| -| `js/main.js` | ~5000 | Экраны, навигация (winStack), модалки, графики, нутриенты, HR UI | -| `js/db.js` | ~1400 | SQLite через Tauri IPC. Миграции, CRUD, 41 поле добавок, water_pct, reserves | -| `js/gps.js` | ~1100 | GPS запись, физика ккал (power model), altitude filter, BLE HR polling | +| `js/main.js` | ~5500 | Экраны, навигация, модалки, графики, нутриенты, HR UI, компас, ландшафт | +| `js/db.js` | ~1500 | SQLite через Tauri IPC. Миграции, CRUD, 41 поле добавок, water_pct, reserves, sync | +| `js/gps.js` | ~1200 | GPS запись, физика ккал (power model), altitude filter, BLE HR polling, dead reckoning | +| `js/sync.js` | ~300 | Синхронизация между устройствами (LAN, PHP сервер на роутере) | | `js/tilecache.js` | 178 | Оффлайн кэш тайлов карты (IndexedDB) | | `js/bmr.js` | ~70 | BMR (Mifflin-St Jeor), РСП из БД (33 нутриента), полураспад | -| `css/styles.css` | ~2000 | Темная тема, мобильный дизайн, HR зоны | -| `index.html` | 26 | Точка входа, порядок загрузки скриптов | +| `css/styles.css` | ~2100 | Темная тема, мобильный дизайн, HR зоны, ландшафтный режим | +| `index.html` | 28 | Точка входа, порядок загрузки скриптов | +| `img/gps-placeholder.png` | 63KB | Пиксельарт заглушка при поиске GPS | | `data/products_seed.db` | 8.2MB | 13481 продукт (magnit 8627, 5ka 3103, ION 1078, kdv 672, manual 1) | -**Библиотеки** (`lib/`): leaflet.js, chart.min.js, chartjs-plugin-zoom.min.js, hammer.min.js, jszip.min.js +**Библиотеки** (`lib/`): leaflet.js (1.9.4), leaflet-rotate.js (компас), chart.min.js, chartjs-plugin-zoom.min.js, hammer.min.js, jszip.min.js ### Бэкенд Rust (`src-tauri/`) @@ -47,7 +49,7 @@ | Файл | Строк | Назначение | |------|-------|------------| | `MainActivity.kt` | ~300 | FileObserver IPC, seed DB, safe insets, SAF, BLE commands, OTA check | -| `GpsRecorderService.kt` | 205 | Foreground service GPS, WakeLock, JSONL батчевая запись | +| `GpsRecorderService.kt` | ~500 | Foreground service GPS, WakeLock, JSONL, 50Hz акселерометр/гироскоп, dead reckoning, raw sensor files | | `BleHrService.kt` | ~340 | Foreground service BLE HR, FitPro protocol, GATT queue, scan/connect | | `generated/*.kt` | ~1100 | Tauri-сгенерированные: WebView, IPC, permissions | @@ -123,7 +125,7 @@ ### Экраны - **Сегодня** — баланс ккал, еда (продукты + блюда), GPS тренировки, активность, вес, сон, добавки, прогресс-бар жидкости, нутриенты (приход + запасы) - **Продукты** — подтабы [Продукты | Рецепты], поиск, карточки с КБЖУ, добавление в дневник -- **Трек** — GPS тренировки (запись с HR), карта, графики скорости/высоты/ЧСС, импорт GPX/FTB +- **Трек** — GPS тренировки (запись с HR), карта с компасом (leaflet-rotate), ландшафтный режим (CSS rotation), графики скорости/высоты/ЧСС, импорт GPX/FTB, dead reckoning, placeholder до GPS - **Добавки** — 41 нутриент (витамины, минералы, жирные кислоты, женьшень, ресвератрол, CoQ10) - **Настройки** — профиль, образ жизни, нормы ЧСС/давления, BLE пульсометр, велосипеды, GPS конфиг, OTA обновления diff --git a/README.md b/README.md index b225b43..980eb18 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ ## Возможности - **Дневник питания** — 13480 продуктов из магазинов (Магнит, 5ка, KDV) + база ИОН с микронутриентами. Рецепты с учётом термообработки (потери витаминов при варке/жарке). Единицы измерения (штуки, ложки, стаканы). Ввод количества формулами (4*30, 300+50). -- **GPS трекинг** — запись маршрутов на велосипеде/пешком в фоне. Оффлайн карты (Leaflet + IndexedDB кэш). Импорт GPX/FTB (FitoTrack). Экспорт GPX. Фильтр altitude outlier'ов и GPS-залипаний. +- **GPS трекинг** — запись маршрутов на велосипеде/пешком в фоне. Оффлайн карты (Leaflet + IndexedDB кэш). Импорт GPX/FTB (FitoTrack). Экспорт GPX. Фильтр altitude outlier'ов и GPS-залипаний. Вращение карты по компасу (leaflet-rotate). Ландшафтный режим (CSS rotation + панель справа). Dead reckoning при потере GPS (гироскоп + акселерометр). Placeholder до GPS (пиксельарт). - **BLE пульсометр** — подключение к FitPro браслетам и стандартным HR датчикам (0x180D). ЧСС, SpO2, давление в реальном времени при записи трека. - **Расчёт ккал** — физическая модель для велосипеда (мощность из gradient + Crr + CdA). MET-таблица для ходьбы/бега. Профили велосипедов. BMR по Mifflin-St Jeor с коэффициентом активности. - **Нутриенты** — 37 микронутриентов (витамины, минералы, жирные кислоты, женьшень, ресвератрол, CoQ10). Нормы РСП/АУП (РФ/ЕС/США). Фармакокинетика — запасы в организме по полураспаду. @@ -21,7 +21,7 @@ - **Frontend**: чистый JavaScript, HTML, CSS. Без React/Vue/bundler. - **Backend**: Rust (Tauri 2) — SQLite, IPC, seed import, BLE (btleplug на десктопе). - **Android**: Kotlin — foreground GPS service, BLE HR service, WakeLock, SAF. -- **Библиотеки**: Leaflet (карты), Chart.js (графики), Hammer.js (жесты), JSZip. +- **Библиотеки**: Leaflet 1.9.4 (карты), leaflet-rotate (компас), Chart.js (графики), Hammer.js (жесты), JSZip. ## Сборка @@ -40,12 +40,14 @@ ``` frontend/ - js/main.js — UI, навигация, модалки (~5000 строк) - js/db.js — БД, миграции, CRUD (~1400) - js/gps.js — GPS, физика ккал, BLE HR polling (~1100) + js/main.js — UI, навигация, модалки, компас, ландшафт (~5500 строк) + js/db.js — БД, миграции, CRUD (~1500) + js/gps.js — GPS, физика ккал, BLE HR polling (~1200) js/bmr.js — BMR формула, РСП, полураспад нутриентов + js/sync.js — синхронизация между устройствами (LAN) js/tilecache.js — оффлайн тайлы (IndexedDB) - css/styles.css — стили, тёмная тема + css/styles.css — стили, тёмная тема, ландшафтный режим + img/gps-placeholder.png — пиксельарт заглушка до GPS data/products_seed.db — 13480 продуктов src-tauri/ src/lib.rs — Rust бэкенд, seed import