diff --git a/memory/.dreams/events.jsonl b/memory/.dreams/events.jsonl index ff9695c..e42bdce 100644 --- a/memory/.dreams/events.jsonl +++ b/memory/.dreams/events.jsonl @@ -7,3 +7,5 @@ {"type":"memory.recall.recorded","timestamp":"2026-04-17T04:59:56.267Z","query":"installer skill backup rollback","resultCount":1,"results":[{"path":"memory/2026-04-11.md","startLine":34,"endLine":63,"score":0.5356921090851123}]} {"type":"memory.recall.recorded","timestamp":"2026-04-17T06:32:00.564Z","query":"vpn-srv ssh 3322","resultCount":1,"results":[{"path":"memory/2026-04-05.md","startLine":20,"endLine":23,"score":0.93}]} {"type":"memory.recall.recorded","timestamp":"2026-04-25T05:50:55.453Z","query":"байтик агент","resultCount":1,"results":[{"path":"memory/2026-04-14.md","startLine":1,"endLine":28,"score":0.6130283911988113}]} +{"type":"memory.recall.recorded","timestamp":"2026-04-25T09:55:48.033Z","query":"FR24 flight_time NULL баг фикс Dev задача","resultCount":6,"results":[{"path":"memory/2026-04-24.md","startLine":21,"endLine":43,"score":0.3955423265695572},{"path":"memory/2026-04-24.md","startLine":1,"endLine":25,"score":0.3846299439668655},{"path":"memory/2026-04-20.md","startLine":1,"endLine":30,"score":0.38251920640468595},{"path":"memory/2026-04-20.md","startLine":24,"endLine":41,"score":0.3795589625835418},{"path":"memory/2026-04-21.md","startLine":63,"endLine":93,"score":0.36978600025177},{"path":"memory/2026-04-21.md","startLine":32,"endLine":66,"score":0.36804868578910827}]} +{"type":"memory.recall.recorded","timestamp":"2026-04-25T09:57:24.355Z","query":"fr24 main.py frontend schedule SQL LEFT JOIN flight_actual","resultCount":1,"results":[{"path":"memory/2026-04-24.md","startLine":21,"endLine":43,"score":0.36717946529388423}]} diff --git a/memory/.dreams/short-term-recall.json b/memory/.dreams/short-term-recall.json index 7a13e03..867632d 100644 --- a/memory/.dreams/short-term-recall.json +++ b/memory/.dreams/short-term-recall.json @@ -1,6 +1,6 @@ { "version": 1, - "updatedAt": "2026-04-25T05:50:55.453Z", + "updatedAt": "2026-04-25T09:57:24.355Z", "entries": { "memory:memory/2026-04-05.md:29:55": { "key": "memory:memory/2026-04-05.md:29:55", @@ -309,6 +309,193 @@ "openclaw/workspace-bytik", "soul.md" ] + }, + "memory:memory/2026-04-24.md:21:43": { + "key": "memory:memory/2026-04-24.md:21:43", + "path": "memory/2026-04-24.md", + "startLine": 21, + "endLine": 43, + "source": "memory", + "snippet": "- Фикс `decimal.Decimal / float` → `float(alt_m)` в шумовой модели - Витрина 19.04: 99 рейсов с треком (rtlsdr=92, fa=3, fr24=2) - Создана таблица `fr24_ext.flight_actual` (DDL-миграция на VM) - `FR24_API_KEY=MVM0hi4S7RRh7Dm4EOl1ShpDPc8CrmITXT2LY5y4dd84a62a` добавлен в `.env` на VM - Пагинация flight-summary/full: цикл offset += 20 - UI enrichment: `schedule.html` (13 колонок), `schedule.js`, `main.py` (LEFT JOIN на flight_actual) - DDL-миграция schedule: `fr24_id`, `actual_takeoff`, `actual_landed`, `delay_*`, `flight_category`, `registration` - Задеплоено через `docker cp` → fr24-api, fr24-tracks-fr24, fr24-mart ### In Progress / Pending - Загрузка FR24 flight-summary/full за 2026-04-20 (", + "recallCount": 2, + "dailyCount": 0, + "groundedCount": 0, + "totalScore": 0.7627217918634415, + "maxScore": 0.3955423265695572, + "firstRecalledAt": "2026-04-25T09:55:48.033Z", + "lastRecalledAt": "2026-04-25T09:57:24.355Z", + "queryHashes": [ + "3093ccbb7ccc", + "494104edf81c" + ], + "recallDays": [ + "2026-04-25" + ], + "conceptTags": [ + "decimal.decimal", + "alt-m", + "19.04", + "fr24-ext.flight-actual", + "ddl-миграция", + "fr24-api-key", + "flight-summary/full", + "schedule.html" + ] + }, + "memory:memory/2026-04-24.md:1:25": { + "key": "memory:memory/2026-04-24.md:1:25", + "path": "memory/2026-04-24.md", + "startLine": 1, + "endLine": 25, + "source": "memory", + "snippet": "# 2026-04-24 — Memory Flush (pre-compaction) ## Урок: как я спалила кредиты FR24 (разбор ошибок) Перед запуском FR24 API на боевых кредитах нужно было: 1. **Проверить total** — многие API возвращают `total` или `X-Total-Count`. У FR24 не проверила, не знала сколько записей ожидать 2. **Тест с одним аэропортом** — `departure:SVO` вместо `both:SVO,both:DME,both:VKO,both:ZIA`. Посмотреть сколько страниц, умножить на кредиты 3. **Понять что значит `both:`** — включает коммерческое + частное + грузовое + военное по всем 4 аэропортам. Я предположила ~1500 рейсов как у Яндекса, но не проверила 4. **Посчитать бюджет заранее** — 44 800 ÷ 3 = ~14 900 рейсов максимум. Можно было поставить `MAX_PAGES", + "recallCount": 1, + "dailyCount": 0, + "groundedCount": 0, + "totalScore": 0.3846299439668655, + "maxScore": 0.3846299439668655, + "firstRecalledAt": "2026-04-25T09:55:48.033Z", + "lastRecalledAt": "2026-04-25T09:55:48.033Z", + "queryHashes": [ + "3093ccbb7ccc" + ], + "recallDays": [ + "2026-04-25" + ], + "conceptTags": [ + "pre-compaction", + "x-total-count", + "max-pages", + "flush", + "pre", + "compaction", + "урок", + "как" + ] + }, + "memory:memory/2026-04-20.md:1:30": { + "key": "memory:memory/2026-04-20.md:1:30", + "path": "memory/2026-04-20.md", + "startLine": 1, + "endLine": 30, + "source": "memory", + "snippet": "# 2026-04-20 — Дневник ## Проект: FR24 / Noisemap — Фаза 2, Шаг 2 ### БТ финализировано - Файл: `tasks/flightradar24/docs/PHASE2_STEP2_DATA_MART.md` - FR24 API: `Flight tracks`, 40 кредитов/рейс, только по команде, T-1, SVO/DME/VKO/ZIA - FlightAware AeroAPI: только треки, ключ `7qMijd3b3gVudezng3eVhKtup8iKFr75` сохранён в `.env` как `FLIGHTAWARE_API_KEY` - Витрина `fr24_mart`: приоритет RTL-SDR > FR24 > FlightAware, источник в каждой записи - Шумовая модель: из прототипа, зоны 2/5/7/9 км (граница \"Низкий\" изменена 11→9 км) - Отложено: цена FlightAware Standard, глубина исторической загрузки FR24 ### FlightAware — тестирование ключа - Ключ `7qMijd3b3gVudezng3eVhKtup8iKFr75` протестирован и", + "recallCount": 1, + "dailyCount": 0, + "groundedCount": 0, + "totalScore": 0.38251920640468595, + "maxScore": 0.38251920640468595, + "firstRecalledAt": "2026-04-25T09:55:48.033Z", + "lastRecalledAt": "2026-04-25T09:55:48.033Z", + "queryHashes": [ + "3093ccbb7ccc" + ], + "recallDays": [ + "2026-04-25" + ], + "conceptTags": [ + "кредитов/рейс", + "t-1", + "svo/dme/vko/zia", + "flightaware-api-key", + "fr24-mart", + "rtl-sdr", + "2/5/7/9", + "дневник" + ] + }, + "memory:memory/2026-04-20.md:24:41": { + "key": "memory:memory/2026-04-20.md:24:41", + "path": "memory/2026-04-20.md", + "startLine": 24, + "endLine": 41, + "source": "memory", + "snippet": "- `ingest/tracks_fa/` — воркер FlightAware треков (порт 8002) - `ingest/mart/` — воркер витрины + шумовая модель, noise_grid по round(lat,2) - `frontend/static/data_sources.html` + `data_sources.js` - `docker-compose.yml` — 3 новых сервиса - `frontend/main.py` — `/data-sources` + 5 API эндпоинтов ### Деплой на VM (fr24, 192.168.2.67) - DDL `005_schema_tracks.sql` применён через `docker exec fr24-postgres psql` - Контейнеры `fr24-tracks-fr24` (8001), `fr24-tracks-fa` (8002), `fr24-mart` — собраны и запущены, все healthy - Обнаружена ошибка в `main.py` (frontend): колонка `flight_date` vs `coverage_date` в `fr24_mart.source_coverage` - Фикс задеплоен, api пересобран ### Открытые задачи на за", + "recallCount": 1, + "dailyCount": 0, + "groundedCount": 0, + "totalScore": 0.3795589625835418, + "maxScore": 0.3795589625835418, + "firstRecalledAt": "2026-04-25T09:55:48.033Z", + "lastRecalledAt": "2026-04-25T09:55:48.033Z", + "queryHashes": [ + "3093ccbb7ccc" + ], + "recallDays": [ + "2026-04-25" + ], + "conceptTags": [ + "ingest/tracks-fa", + "ingest/mart", + "noise-grid", + "data-sources.js", + "docker-compose.yml", + "frontend/main.py", + "data-sources", + "192.168.2.67" + ] + }, + "memory:memory/2026-04-21.md:63:93": { + "key": "memory:memory/2026-04-21.md:63:93", + "path": "memory/2026-04-21.md", + "startLine": 63, + "endLine": 93, + "source": "memory", + "snippet": "1. **DDL fix**: `origin_icao`/`destination_icao` VARCHAR(5)→VARCHAR(20) — FA API возвращает координаты (`L 55.61740 39.72253`) вместо ICAO; применена миграция на VM 2. **fa_worker.py**: добавлена функция `_icao_or_none()` — фильтрует нестандартные значения 3. **build_mart.py**: - Добавлен словарь `AIRLINE_IATA_TO_ICAO` + конвертация callsign из flight_number - Добавлен числовой матч по `ident_iata` для FA рейсов - Расширен словарь `ICAO_TO_IATA` аэропортов - Фикс `decimal.Decimal / float` → `float(alt_m)` в шумовой модели ### Результат витрины 19.04.2026: - ✅ **91 рейс с RTL-SDR треком** (было 0) - 9 042 точек трека - 167 ячеек шумовой сетки - Покрытие: **11.7%** от расписания -", + "recallCount": 1, + "dailyCount": 0, + "groundedCount": 0, + "totalScore": 0.36978600025177, + "maxScore": 0.36978600025177, + "firstRecalledAt": "2026-04-25T09:55:48.033Z", + "lastRecalledAt": "2026-04-25T09:55:48.033Z", + "queryHashes": [ + "3093ccbb7ccc" + ], + "recallDays": [ + "2026-04-25" + ], + "conceptTags": [ + "origin-icao", + "destination-icao", + "55.61740", + "39.72253", + "fa-worker.py", + "icao-or-none", + "build-mart.py", + "airline-iata-to-icao" + ] + }, + "memory:memory/2026-04-21.md:32:66": { + "key": "memory:memory/2026-04-21.md:32:66", + "path": "memory/2026-04-21.md", + "startLine": 32, + "endLine": 66, + "source": "memory", + "snippet": "- Остаток: **50 486** из 120 000 (промо Explorer) - Потрачено: ~69 514 за прошлые загрузки - Стоимость загрузки трека: ~2 кредиты за summaries, потом per-track - Хватит на ~1 260 рейсов (40 кредитов/рейс) ## FR24 Track — первый тест загрузки - Рейс: **SU6807 / FV6807 (SDM6807)** от 01.04.2026 - fr24_id: `3f0161d3`, борт SU95 RA-89131 - Маршрут: UUEE (Шереметьево) → ULLI (Пулково) - Взлёт: 31.03 21:16:27 UTC, посадка: 31.03 22:13:01 UTC - **1056 точек трека** загружено (ADSB: 17, MLAT: 1039) - Высоты: 0 – 34 025 ft - Загружено вручную через API + SQL INSERT в `fr24_ext.fr24_tracks` + `fr24_mart.flight_tracks` - Важно: сервис `fr24-tracks-fr24` загружает ВСЕ рейсы за дату через `iter_flight_s", + "recallCount": 1, + "dailyCount": 0, + "groundedCount": 0, + "totalScore": 0.36804868578910827, + "maxScore": 0.36804868578910827, + "firstRecalledAt": "2026-04-25T09:55:48.033Z", + "lastRecalledAt": "2026-04-25T09:55:48.033Z", + "queryHashes": [ + "3093ccbb7ccc" + ], + "recallDays": [ + "2026-04-25" + ], + "conceptTags": [ + "per-track", + "кредитов/рейс", + "01.04.2026", + "fr24-id", + "ra-89131", + "31.03", + "fr24-ext.fr24-tracks", + "fr24-mart.flight-tracks" + ] } } } diff --git a/tasks/flightradar24/frontend/main.py b/tasks/flightradar24/frontend/main.py index 0789b07..0666dcf 100644 --- a/tasks/flightradar24/frontend/main.py +++ b/tasks/flightradar24/frontend/main.py @@ -487,7 +487,7 @@ def schedule_data(): fa.orig_iata AS fa_orig_iata, fa.dest_iata AS fa_dest_iata, -- из mart.flights (тип ВС): - mf.aircraft_type, + COALESCE(mf.aircraft_type, s.aircraft_type) AS aircraft_type, mf.track_source, mf.track_points FROM fr24_ext.schedule s LEFT JOIN fr24_ext.flight_actual fa