Files
wiki/memory/2026-04-19.md
2026-04-19 23:20:01 +03:00

11 KiB
Raw Permalink Blame History

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-агента:

Правильный рабочий вариант:

{
  "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)