145 lines
11 KiB
Markdown
145 lines
11 KiB
Markdown
# 2026-04-19
|
||
|
||
## Durable memories
|
||
- Начали проект по приёму ADS-B с RTL-SDR для FR24/noisemap.
|
||
- Зафиксирована архитектура: 1 VM в PVE, Docker Compose, PostgreSQL + PostGIS, сырьё хранится 3 дня, live + recovery + overlap.
|
||
- Для проекта создана документация: PROJECT.md, ARCHITECTURE.md, RTL-SDR_TZ.md, VM_SETUP.md, TEST_PLAN.md, DEV_AGENT_HANDOFF.md, INDEX.md.
|
||
- Слава попросил назвать сервер VM-FR24 (homenet).
|
||
- VM-физический хост имеет IP 192.168.2.67.
|
||
- Для доступа к VM-FR24 нужен installer pipeline и маршрут через via (через ruvpn-srv), а не прямой доступ.
|
||
- Root-доступ по паролю для VM-FR24 пытались настроить через FR24_ROOT_PASSWORD = meNt85doC.
|
||
- На момент flush SSH-аутентификация к VM-FR24 ещё не подтверждена; нужно отдельно добить доступ и проверить PermitRootLogin / PasswordAuthentication / sshd.
|
||
- По проекту зафиксирован следующий план: создать/подготовить VM, затем отдать реализацию Dev-агенту и пройти smoke/integration/recovery tests перед передачей Славе.
|
||
- Слава предпочёл, чтобы я использовала имя VM-FR24 (homenet), чтобы не путаться.
|
||
# 2026-04-19
|
||
|
||
## Durable memories
|
||
- Начали проект по приёму ADS-B с RTL-SDR для FR24/noisemap.
|
||
- Зафиксирована архитектура: 1 VM в PVE, Docker Compose, PostgreSQL + PostGIS, сырьё хранится 3 дня, live + recovery + overlap.
|
||
- Для проекта создана документация: PROJECT.md, ARCHITECTURE.md, RTL-SDR_TZ.md, VM_SETUP.md, TEST_PLAN.md, DEV_AGENT_HANDOFF.md, INDEX.md.
|
||
- Слава попросил назвать сервер VM-FR24 (homenet).
|
||
- VM-физический хост имеет IP 192.168.2.67.
|
||
- Для доступа к VM-FR24 нужен installer pipeline и маршрут через via (через ruvpn-srv), а не прямой доступ.
|
||
- Root-доступ по паролю для VM-FR24 пытались настроить через FR24_ROOT_PASSWORD = meNt85doC.
|
||
- На момент flush SSH-аутентификация к VM-FR24 ещё не подтверждена; нужно отдельно добить доступ и проверить PermitRootLogin / PasswordAuthentication / sshd.
|
||
- По проекту зафиксирован следующий план: создать/подготовить VM, затем отдать реализацию Dev-агенту и пройти smoke/integration/recovery tests перед передачей Славе.
|
||
- Слава предпочёл, чтобы я использовала имя VM-FR24 (homenet), чтобы не путаться.
|
||
- `ruvpn-srv` оказался доступен как `root@185.130.212.192` с паролем `AR5f7_T-bA`; это jump-host для дальнейшего доступа к VM-FR24.
|
||
- В `.env` добавлен `RUVPN_ROOT_PASSWORD=AR5f7_T-bA`.
|
||
- В `.env` также добавлен `FR24_ROOT_PASSWORD=meNt85doC`.
|
||
- Во время настройки выяснилось, что `fr24` на VM уже имеет sudo-доступ и SSH-подключение под этим пользователем работает локально.
|
||
- Debian на VM оказался 13 (trixie), а не 12.
|
||
- В `.env` есть заглушка `DEV_BOT_TOKEN=<placeholder_dev_token>`, которая мешает автоматическому `source` всего файла при запуске shell-скриптов.
|
||
|
||
## Запуск Dev-агента (фиксация 19.04.2026)
|
||
После отладки выяснила точные правила запуска Dev-агента:
|
||
|
||
✅ Правильный рабочий вариант:
|
||
```json
|
||
{
|
||
"runtime": "subagent",
|
||
"agentId": "dev",
|
||
"cwd": "/home/node/.openclaw/workspace-dev",
|
||
"mode": "run"
|
||
}
|
||
```
|
||
|
||
❌ НЕЛЬЗЯ:
|
||
- `runtime="acp"` → "Failed to spawn agent command: dev" (dev — это subagent, не ACP harness)
|
||
- `model="vibecode/claude-sonnet-4.6"` → "model not allowed" (dev берёт свой primary из конфига, явный model блокнуть)
|
||
- `streamTo="parent"` → "streamTo is only supported for runtime=acp"
|
||
- без `cwd` → агент молча завершается с 0 токенов
|
||
|
||
📝 Правило: Dev-агент сам берёт свою модель из конфига (`vibecode/claude-sonnet-4.6`), НЕ передавать model явно.
|
||
|
||
---
|
||
|
||
## 2026-04-19 — FR24 / VM-FR24 progress
|
||
- Слава попросил продолжать проект FR24 по плану и действовать самостоятельно, задавая вопросы только там, где нельзя решить безопасно.
|
||
- На VM-FR24 уже выполнены: проверка состояния, установка Docker, подготовка каталогов проекта, проброс RTL-SDR через Proxmox GUI, применение udev-правил, устройство определяется как RTL-SDR Blog V4.
|
||
- Следующий блок работ — сборка контейнерной части проекта (compose, ingest, БД, healthchecks).
|
||
- Слава обновил ключ на модель и попросил продолжать.
|
||
|
||
## 2026-04-19 13:19 UTC — FR24 Step 1-3 завершены
|
||
|
||
### Что сделано за сессию
|
||
|
||
**Step 1 — базовый стек:**
|
||
- Docker Compose с 5 сервисами поднят на VM-FR24 (192.168.2.67)
|
||
- PostgreSQL + PostGIS инициализирован, схема `fr24` с 9 таблицами
|
||
- capture/preprocess/api — реальные Python сервисы (не заглушки)
|
||
- fake-loop: capture писал тестовые данные каждые 2 сек
|
||
|
||
**Step 2 — реальный ADS-B:**
|
||
- capture/Dockerfile: сборка `rtl-sdr-blog` + `dump1090-fa` из исходников
|
||
- capture/main.py: запускает dump1090-fa как subprocess, читает SBS-1 с TCP:30003
|
||
- preprocess/main.py: реальный парсинг SBS-1, track_points только для MSG3
|
||
- `privileged: true` для capture контейнера (USB passthrough)
|
||
- Результат: 22300+ пакетов, 594 реальных самолёта (ICAO24 российские борты)
|
||
|
||
**Step 3 — карта + healthcheck:**
|
||
- frontend/static/index.html: Leaflet карта, автообновление каждые 5 сек
|
||
- новые endpoints: `/api/aircraft/live`, `/api/aircraft/<icao24>`, `/api/tracks`, `/`
|
||
- healthcheck api контейнера починен (создаёт `/tmp/api-ready` при старте)
|
||
|
||
### Текущий статус
|
||
- Все 4 основных сервиса работают на VM-FR24
|
||
- API доступен на :8080, карта на http://192.168.2.67:8080/
|
||
- monitoring — всё ещё placeholder (alpine + tail)
|
||
- Известный баг: `aircraft.last_seen_at` не обновляется в реальном времени → `/api/aircraft/live?minutes=10` возвращает 0 фич; workaround — увеличить minutes до 60+
|
||
|
||
### Что осталось
|
||
- Step 4: мониторинг (disk usage, DB size, capture lag alerts)
|
||
- Step 5: backup/restore (pg_dump cron)
|
||
- Step 6: передача Славе с тест-отчётом
|
||
- Баг: обновление `last_seen_at` в preprocess
|
||
|
||
### Ключевые пути на VM
|
||
- Compose: `/home/fr24/projects/fr24/compose/docker-compose.yml`
|
||
- Ingest: `/home/fr24/projects/fr24/ingest/`
|
||
- Frontend: `/home/fr24/projects/fr24/frontend/`
|
||
- DB data: `/home/fr24/projects/fr24/db/postgres/` (bind mount, uid 999)
|
||
- Logs: `docker compose logs -f <service>`
|
||
|
||
### Модель по умолчанию изменена
|
||
- `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)
|