diff --git a/memory/2026-04-19.md b/memory/2026-04-19.md index 55a45d7..7cca388 100644 --- a/memory/2026-04-19.md +++ b/memory/2026-04-19.md @@ -104,3 +104,41 @@ ### Модель по умолчанию изменена - `vibecode/claude-sonnet-4.6` — установлена как primary в openclaw.json - Применится при следующем рестарте контейнера OpenClaw + +## 2026-04-19 20:12 UTC — FR24 Step 4-5 финал + UI улучшения + +### Что сделано за вечернюю сессию + +**Мониторинг дашборд:** +- Dev-агент создал `frontend/static/monitoring.html` — тёмная тема, 4 карточки (disk/db/lag/throughput), таблица истории 20 строк, автообновление 30 сек +- API уже имел `/monitoring` и `/api/monitoring/status` endpoints +- Задеплоено на VM, доступно: http://192.168.2.67:8080/monitoring + +**Healthcheck monitoring контейнера:** +- Был `unhealthy` из-за `pgrep: not found` в python:3.11-slim +- Исправлено на `test -f /tmp/monitoring-ready` (без pgrep) +- Обновлён `compose/docker-compose.yml` локально и на VM +- Все 6 контейнеров стали healthy + +**Карта — треки и фильтр:** +- Dev-агент обновил `index.html`: треки weight 1.5→3, opacity 0.4→0.7 +- Добавлен селектор периода в HUD: 1h / 6h / 12h / 1d / 3 days (default) +- API вызовы используют `getMinutes()` вместо hardcoded 180 +- Пересборка образа потребовалась (static файлы копируются при build, не монтируются) + +**Текущее состояние карты:** +- 625 самолётов за 3 дня — слишком много маркеров, карта перегружена +- Следующий шаг: кластеризация через Leaflet.markercluster (Слава подтвердил интерес) + +### Ключевые уроки +- Static файлы в Docker копируются при сборке → после изменений нужен `docker compose build --no-cache api && docker compose up -d api` +- `pgrep` нет в python:3.11-slim → healthcheck только через файлы (`test -f /tmp/ready`) или Python urllib +- Dev-агент запускается без явного `model` параметра — берёт из своего конфига + +### Статус проекта FR24 +- ✅ Step 1: стек + PostgreSQL +- ✅ Step 2: реальный ADS-B через dump1090 +- ✅ Step 3: Leaflet карта +- ✅ Step 4: мониторинг + backup +- ✅ Step 5: мониторинг дашборд (monitoring.html) +- 🔜 Step 6: кластеризация маркеров (Leaflet.markercluster)