Наблюдения¶
Observation — центральная сущность портала. Одно наблюдение связывает станцию,
спутник, передатчик, набор TLE и автора, и покрывает временное окно одного пролёта.
Жизненный цикл¶
Планирование. Наблюдение создаётся вручную или автоматически; рассчитывается окно
start…endпо актуальному TLE. См. Планирование наблюдений.Выдача заданий. Клиент станции запрашивает
/api/jobs/при старте и получает свои будущие наблюдения с частотами и параметрами приёма; изменения расписания портал публикует ему по MQTT.Приём. Клиент наводит антенну, запускает флоуграф, записывает аудио и водопад.
Загрузка результатов. Аудио (
payload) и водопад (waterfall) уходят в/api/observations/, демодулированные кадры — в/api/demoddata/.Оценка. Наблюдению проставляется статус — автоматически или человеком при вычитке. См. Оценка наблюдений.
Постобработка. Декодирование данных, обновление статистики передатчиков, опционально — упаковка и архивация аудио.
Статусы¶
Строковые статусы наблюдения:
Статус |
Значение |
|---|---|
|
Не оценено |
|
Приём успешен |
|
Приём неудачен |
|
Артефактов нет вовсе |
Внутренне статус хранится числом: 100 — good, -1000 — failed, 0 — unknown.
Отдельно ведётся waterfall_status — результат ручной вычитки водопада; именно он
отличает оценку человека от автоматической.
Артефакты¶
Поле |
Содержимое |
|---|---|
|
Аудиозапись пролёта |
|
Изображение-водопад (спектрограмма) |
|
Связанные записи |
Каждый вид артефактов независимо кладётся локально или в S3 — флаги
USE_S3_STORAGE_FOR_AUDIO, USE_S3_STORAGE_FOR_WATERFALL, USE_S3_STORAGE_FOR_DATA.
Длительность аудио сверяется с длительностью окна с допуском
OBS_AUDIO_DURATION_TOLERANCE.
Демодулированные данные¶
DemodData — кадры, полученные из наблюдения; связаны со спутником и станцией.
Обрабатываются задачами:
decode_current_frame— декодирование конкретного кадра;decode_recent_data— ежедневное декодирование свежих данных;decode_all_data,decode_all_nondecoded_data— массовое и повторное декодирование.
Экспорт наборов кадров идёт через export_frames → export_frames_batch →
export_frames_finalize; результат хранится в ExportedFramesetProxy
(ExportedFrameset) и удаляется задачей remove_old_exported_framesets по истечении
EXPORTED_FRAMESET_TIME_TO_LIVE.
Архивация аудио¶
Опциональный конвейер для экономии места:
zip_audio_files(каждые 15 минут) пакует аудио поAUDIO_FILES_PER_ZIPфайлов в архив с префиксомZIP_FILE_PREFIX.archive_audio_zip_files(раз в час) выгружает архивы, поZIP_FILES_PER_ITEMв элемент коллекцииARCHIVE_COLLECTION.При включённых
REMOVE_ARCHIVED_AUDIO_FILES/REMOVE_ARCHIVED_ZIP_FILEисходники удаляются.
Наблюдения моложе ARCHIVE_SKIP_TIME (48 ч) не архивируются. Обе задачи регистрируются
только при выключенном USE_S3_STORAGE_FOR_AUDIO.
Просмотр¶
HTML-представления разложены по доменам в network/base/views/:
observation.py — списки и карточки наблюдений, gallery.py — галерея снимков,
statistics.py — сводная статистика.
Карточка наблюдения и её копия в проверке (includes/observation_detail.html) берут из
observation_stages_context() строку панели «Этапы приёма» — первый этап с ошибкой из
client_metadata.stages. Вкладка «Метаданные» над сырым деревом показывает таблицу
этапов с частями декодера; станция со старым клиентом этого блока не шлёт, и страница
выглядит как раньше.
Программный доступ — /api/observations/, /api/demoddata/, см. Обзор эндпоинтов.