auto-sync: 2026-04-19 14:10:01
This commit is contained in:
@@ -81,7 +81,6 @@
|
||||
|
||||
### Структура workspace
|
||||
- `tasks/{project}/` — каждый проект в своей папке, там же `PROJECT.md` с деталями
|
||||
- `tasks/scripts/` и `tasks/reports/` — общие скрипты и отчёты
|
||||
- `skills/` — готовые AgentSkills с полной документацией
|
||||
- `data/` — выходные данные (`data/{skill-name}/`)
|
||||
- `memory/` — дневные записи (`YYYY-MM-DD.md`)
|
||||
|
||||
@@ -31,6 +31,29 @@
|
||||
- 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.
|
||||
|
||||
16
tasks/flightradar24/compose/.env.example
Normal file
16
tasks/flightradar24/compose/.env.example
Normal file
@@ -0,0 +1,16 @@
|
||||
# FR24 ingest compose environment
|
||||
TZ=UTC
|
||||
APP_ENV=dev
|
||||
|
||||
POSTGRES_DB=fr24
|
||||
POSTGRES_USER=fr24
|
||||
POSTGRES_PASSWORD=change-me
|
||||
POSTGRES_PUBLISHED_PORT=5432
|
||||
POSTGRES_HOST=postgres
|
||||
POSTGRES_PORT=5432
|
||||
|
||||
# Ingest scaffold
|
||||
INGEST_MODE=placeholder
|
||||
RAW_RETENTION_DAYS=3
|
||||
OVERLAP_MINUTES=10
|
||||
CAPTURE_SOURCE=rtl-sdr
|
||||
21
tasks/flightradar24/compose/README.md
Normal file
21
tasks/flightradar24/compose/README.md
Normal file
@@ -0,0 +1,21 @@
|
||||
# Compose scaffold for FR24 ingest
|
||||
|
||||
This directory contains the baseline Docker Compose skeleton for the RTL-SDR ingest contour.
|
||||
|
||||
## Services
|
||||
- `postgres` — PostgreSQL 16 + PostGIS
|
||||
- `ingest` — placeholder for capture/preprocess wiring
|
||||
- `status` — simple heartbeat/status scaffold
|
||||
|
||||
## Layout
|
||||
- `../db/postgres` — PostgreSQL data directory
|
||||
- `../db/init` — init SQL scripts for schema/bootstrap
|
||||
- `../ingest` — ingest service code placeholder
|
||||
- `../logs/ingest` — ingest logs
|
||||
- `../logs/status` — status heartbeat files
|
||||
- `../backup` — backup artifacts
|
||||
|
||||
## Notes
|
||||
- No destructive migrations are included.
|
||||
- The `ingest` service is a placeholder; wire real capture/preprocess logic later.
|
||||
- The stack expects a `.env` file copied from `.env.example` in this directory.
|
||||
88
tasks/flightradar24/compose/docker-compose.yml
Normal file
88
tasks/flightradar24/compose/docker-compose.yml
Normal file
@@ -0,0 +1,88 @@
|
||||
version: "3.9"
|
||||
|
||||
name: fr24-ingest
|
||||
|
||||
x-common-env: &common-env
|
||||
TZ: ${TZ:-UTC}
|
||||
POSTGRES_HOST: ${POSTGRES_HOST:-postgres}
|
||||
POSTGRES_PORT: ${POSTGRES_PORT:-5432}
|
||||
POSTGRES_DB: ${POSTGRES_DB:-fr24}
|
||||
POSTGRES_USER: ${POSTGRES_USER:-fr24}
|
||||
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-change-me}
|
||||
APP_ENV: ${APP_ENV:-dev}
|
||||
|
||||
services:
|
||||
postgres:
|
||||
image: postgis/postgis:16-3.4
|
||||
container_name: fr24-postgres
|
||||
environment:
|
||||
POSTGRES_DB: ${POSTGRES_DB:-fr24}
|
||||
POSTGRES_USER: ${POSTGRES_USER:-fr24}
|
||||
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-change-me}
|
||||
TZ: ${TZ:-UTC}
|
||||
ports:
|
||||
- "${POSTGRES_PUBLISHED_PORT:-5432}:5432"
|
||||
volumes:
|
||||
- ../db/postgres:/var/lib/postgresql/data
|
||||
- ../db/init:/docker-entrypoint-initdb.d:ro
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-fr24} -d ${POSTGRES_DB:-fr24}"]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
start_period: 20s
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- fr24-net
|
||||
|
||||
ingest:
|
||||
image: alpine:3.20
|
||||
container_name: fr24-ingest
|
||||
command: ["sh", "-c", "echo 'ingest placeholder: wire capture/preprocess here'; tail -f /dev/null"]
|
||||
environment:
|
||||
<<: *common-env
|
||||
INGEST_MODE: ${INGEST_MODE:-placeholder}
|
||||
RAW_RETENTION_DAYS: ${RAW_RETENTION_DAYS:-3}
|
||||
OVERLAP_MINUTES: ${OVERLAP_MINUTES:-10}
|
||||
CAPTURE_SOURCE: ${CAPTURE_SOURCE:-rtl-sdr}
|
||||
volumes:
|
||||
- ../ingest:/app
|
||||
- ../logs/ingest:/var/log/fr24
|
||||
- ../backup:/backup
|
||||
depends_on:
|
||||
postgres:
|
||||
condition: service_healthy
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "test -f /tmp/ingest-ready && echo ok || exit 1"]
|
||||
interval: 30s
|
||||
timeout: 5s
|
||||
retries: 3
|
||||
start_period: 10s
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- fr24-net
|
||||
|
||||
status:
|
||||
image: alpine:3.20
|
||||
container_name: fr24-status
|
||||
command: ["sh", "-c", "while true; do date -u +'%Y-%m-%dT%H:%M:%SZ' > /status/heartbeat; sleep 30; done"]
|
||||
volumes:
|
||||
- ../logs/status:/status
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "test -f /status/heartbeat"]
|
||||
interval: 30s
|
||||
timeout: 5s
|
||||
retries: 3
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- fr24-net
|
||||
|
||||
networks:
|
||||
fr24-net:
|
||||
name: fr24-net
|
||||
driver: bridge
|
||||
|
||||
volumes:
|
||||
postgres-data:
|
||||
ingest-logs:
|
||||
backups:
|
||||
7
tasks/flightradar24/db/README.md
Normal file
7
tasks/flightradar24/db/README.md
Normal file
@@ -0,0 +1,7 @@
|
||||
# Database layout
|
||||
|
||||
- `postgres/` — PostgreSQL persistent data volume
|
||||
- `init/` — bootstrap SQL for extensions and initial schema
|
||||
|
||||
Current bootstrap only enables `postgis` and `pgcrypto`.
|
||||
No irreversible migrations are included.
|
||||
2
tasks/flightradar24/db/init/001_extensions.sql
Normal file
2
tasks/flightradar24/db/init/001_extensions.sql
Normal file
@@ -0,0 +1,2 @@
|
||||
CREATE EXTENSION IF NOT EXISTS postgis;
|
||||
CREATE EXTENSION IF NOT EXISTS pgcrypto;
|
||||
36
tasks/flightradar24/docs/COMPOSE_SKELETON.md
Normal file
36
tasks/flightradar24/docs/COMPOSE_SKELETON.md
Normal file
@@ -0,0 +1,36 @@
|
||||
# FR24 ingest compose skeleton
|
||||
|
||||
## Goals
|
||||
- PostgreSQL + PostGIS as the single database
|
||||
- separate ingest placeholder service
|
||||
- healthcheck/status scaffolding
|
||||
- predictable volume layout
|
||||
- environment-driven configuration
|
||||
|
||||
## Proposed runtime layout
|
||||
- `compose/` — Docker Compose manifests and env examples
|
||||
- `db/postgres/` — persistent PostgreSQL data
|
||||
- `db/init/` — bootstrap SQL for extensions and initial schema
|
||||
- `ingest/` — capture/preprocess implementation lives here later
|
||||
- `logs/ingest/` — service logs
|
||||
- `logs/status/` — heartbeat/status artifacts
|
||||
- `backup/` — pg_dump and restore artifacts
|
||||
|
||||
## Environment variables
|
||||
- `POSTGRES_DB`
|
||||
- `POSTGRES_USER`
|
||||
- `POSTGRES_PASSWORD`
|
||||
- `POSTGRES_PUBLISHED_PORT`
|
||||
- `RAW_RETENTION_DAYS`
|
||||
- `OVERLAP_MINUTES`
|
||||
- `CAPTURE_SOURCE`
|
||||
- `TZ`
|
||||
- `APP_ENV`
|
||||
|
||||
## Status scaffolding
|
||||
The current skeleton includes a minimal `status` container that writes a heartbeat file. This is only a placeholder and should be replaced or extended by a real monitoring endpoint later.
|
||||
|
||||
## Open questions
|
||||
- whether capture and preprocess should become separate services immediately
|
||||
- whether API/viewer belongs in the first compose cut or later
|
||||
- whether a dedicated monitoring container is needed before hardware verification
|
||||
Reference in New Issue
Block a user