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

145 lines
11 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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)