Надійність
Ми порівнюємо наші рівні з офіційними попередженнями RCB і RSO: чи SanAlert уже показував щось тривожне у воєводстві до того, як для нього надійшло попередження, і як часто ми підвищували рівень без жодного офіційного повідомлення. Рахуємо це щоночі із запису всього, що подавали джерела.
Числа малі, а період короткий. Запис ми ведемо з 18 вересня 2026 року. Одне попередження більше чи менше змінює тут усе. RCB і RSO теж не єдина істина: офіційне попередження може надійти пізно або не надійти зовсім, а підвищення рівня без нього не доводить, що ми помилилися.
Завантажуємо зведення…
Офіційні попередження
Підвищення без офіційного повідомлення
Скільки часу на кожному рівні
Воєводства, у яких рівень був вищим за «Спокій».
Немає даних
Як ми рахуємо
- Наші рівні
- Ми не записуємо їх у реальному часі, а відтворюємо. Наш реєстратор зберігає кожну відповідь джерел разом із часом, коли ми її отримали. Щоночі ми по черзі пропускаємо ці відповіді через ту саму модель, яка рахує рівні на сайті й у застосунку. Рівень воєводства — це найвищий рівень серед його квадратів. Коли ми змінюємо модель, перераховуємо весь період заново.
- Офіційне попередження
- Оповіщення RCB або повідомлення RSO про загрозу з повітря, яке ми побачили в реальному часі, з точністю до хвилини. Те саме оповіщення на сторінці RCB і в RSO ми рахуємо один раз — від моменту, коли вперше його побачили. Оповіщення, надіслане повторно, поки попереднє ще діє, теж рахуємо один раз. Навчань і скасувань не рахуємо. Оповіщення, видані до початку запису, ми знаємо лише з датою, тому для порівняння вони не придатні.
- Раніше, пізніше, не підвищили
- Для кожного воєводства, охопленого попередженням, ми перевіряємо, чи SanAlert показував там щонайменше «Активність». «Раніше»: рівень уже був підвищений, коли надійшло попередження. «Пізніше»: ми підвищили його протягом години після попередження. «Не підвищили»: протягом цієї години рівень не зріс. «Немає даних»: у момент попередження ми не мали даних. Те саме ми подаємо для рівня «Наближається». Перерву, коротшу за 10 хвилин, ми не вважаємо кінцем підвищеного рівня.
- Підвищення без офіційного повідомлення
- Щонайменше «Наближається» протягом щонайменше 10 хвилин у воєводстві, для якого впродовж години до і години після не було жодного офіційного повідомлення про загрозу з повітря. Коротші підвищення ми подаємо окремо.
- Немає даних
- Час, коли сайт показував би «Немає даних», бо джерело об’єктів не відповідало понад 3 хвилини. Ми рахуємо його із запису, тому сюди входить і перерва в роботі самого реєстратора.
Зміни в моделі та реєстрі
Що ми змінили в тому, як рахуються рівні та цей звіт, від найновішої зміни. Дата — день, коли зміна з’явилася на сайті.
: Модель: без розширення для припущеного курсу в «Близько» за курсом
Коли NEPTUN лише припускає, куди летить об’єкт, ми розширюємо коридор навколо його курсу на 20 км. Для «Наближається» так і залишається. Для «Близько» за курсом — уже ні: у ніч на 1 листопада дрон, який, за NEPTUN, летів на Львів, дав «Близько» у квадраті за 54 км збоку від свого курсу.
Наслідок: «Близько» за курсом тепер з’являється лише тоді, коли об’єкт пролетів би не далі ніж приблизно за 30 км від квадрата. У перерахунку 47 днів від 18 вересня квадратів, у яких хоч раз було «Близько», 92 замість 96, а випередження перед повідомленнями RCB і RSO не змінилося. Реєстр надійності та нічні звіти перераховуємо заново.
API 0.26.5
: Реєстр: два повідомлення, які не були попередженнями
Реєстр зараховував як попередження про загрозу з повітря два повідомлення, які ними не були. Alert RCB про пожежу магазину в Сілезькому воєводстві (7 жовтня) ми сприйняли як повідомлення про загрозу з повітря, бо в назві магазину є слово «dron»; ми також показали його на мапі й опублікували. Alert RCB від 30 вересня ми вперше побачили лише вранці 1 жовтня, коли RCB опублікував його із запізненням після збою сайту; ми рахували його як попередження того ранку.
Наслідок: Обидва вибувають із реєстру: від 18 вересня 45 попереджень замість 47, а «не підвищили» в 1 воєводстві замість 3. Пожежу та подібні повідомлення ми більше не показуємо як загрозу з повітря.
API 0.26.5
: Модель: «Близько» не з далеких застарілих позицій
Коли ми визначаємо «Близько», до радіуса (приблизно 25 км) і до коридору навколо курсу об’єкта ми додаємо невизначеність його позиції, але тепер щонайбільше 10 км. NEPTUN збільшує цю невизначеність, коли позиція застаріває, навіть до понад 60 км. Додана повністю, вона призводила до того, що дрон, остання позиція якого була в Луцьку, понад 80 км від кордону, давав «Близько» в Польщі. Так було в ніч з 19 на 20 жовтня.
Наслідок: «Близько» з’являється рідше: лише коли об’єкт може бути поблизу. Дрон із дуже невизначеною позицією дає нижчий рівень. Реєстр надійності та нічні звіти перераховуємо заново. Випередження перед повідомленнями RCB рахуємо від «Активності»; у перерахунку 32 ночей від 18 вересня воно не змінилося.
API 0.26.0
: Модель: кожен об’єкт показує, який рівень він підвищує
Для кожного дрона й ракети модель записує найвищий рівень, який цей об’єкт зараз підвищує в будь-якому квадраті. Мапа фарбує об’єкти за ним, тож видно, який об’єкт дає який рівень. Об’єкт, що не підвищує в Польщі жодного рівня, сірий або білий, а не в кольорі рівня.
Наслідок: Рівні рахуємо так само, тож жоден не змінився. Змінився відбиток моделі, тому реєстр надійності та нічні звіти перераховуємо заново; їхні результати не змінюються.
API 0.25.0
: Сітка: 72 квадрати поза Польщею вилучено
Запас сітки, призначений для квадратів на кордоні, охопив і 72 квадрати повністю поза Польщею, зокрема на Волині за Бугом. Мапа їх не показувала, а вони могли підвищувати «Найвищий рівень SanAlert зараз». Залишилися лише квадрати, у яких є хоч трохи Польщі.
Наслідок: Жодне місце в Польщі не лежить у цих квадратах, тож рівень для жодного місця не змінився. Рівень воєводства більше не зростає через квадрати поза Польщею. Реєстр надійності та нічні звіти ми перерахували заново.
API 0.20.3
: Модель: рух за останні 15 хвилин, загублені сліди, «Немає даних», коли джерело завмирає
Чи наближається дрон, ми оцінюємо за його позиціями за останні 15 хвилин, а не лише за останнім стрибком: дрон, що летів дрібними кроками, перескакував з «Активності» одразу на «Близько». Об’єкт, що зник із джерела, коли підвищував квадрат до «Наближається» або «Близько», ще 30 хвилин утримує там щонайменше «Активність». Коли NEPTUN відповідає, але його дані стоять на місці або їх не вдається прочитати, ми показуємо «Немає даних». Коли канал тривог з України замовкає, рівні 30 хвилин спираються на останні тривоги, а потім рахуються без них.
Наслідок: Реєстр і нічні звіти ми перерахували заново. Відтоді вони відтворюють рівні за тими самими правилами, що й сайт.
API 0.20.0
: Модель: «Наближається» — це близько 30 хвилин і дрон, що наближається
«Наближається» вимагає, щоб об’єкт міг долетіти приблизно за 30 хвилин, а дрон має бути помічений, як він наближається: сам прогнозований курс дає щонайбільше «Активність». Раніше вистачало курсу, часто лише припущеного, визначеного зі спостережень з точністю до населеного пункту.
Наслідок: Перегляд запису за 18–26.09: жоден із 36 дронів, для яких ми показували «Наближається», не підлетів на 30 км до такого квадрата і не залетів до Польщі. З новим правилом загальний час квадратів на «Наближається» за цей період зменшився з 7519 до 130 хвилин, а кількість дронів, що його спричинили, — з 45 до 3. Реєстр і звіти ми перерахували заново.
API 0.19.0
: Реєстр: відбій, надісланий окремо, завершує попередження
25.09 о 5:25 RSO надіслало кінець ночі окремим повідомленням («Brak zagrożenia na terenie Polski»), а не як зміну тривоги. Реєстр не побачив кінця попередження, тож рахував наші підвищення після 0:43 як підвищення без офіційного повідомлення, хоча тривога ще діяла. Тепер окремо надіслані відбої RCB і RSO теж завершують попередження.
Наслідок: Ніч 24/25.09 у реєстрі та нічному звіті перераховано: підвищення після 0:43 більше не рахуються як без повідомлення.
API 0.16.1
: Реєстр: повторно надіслана тривога — не нове попередження
RCB іноді надсилає ту саму тривогу ще раз, поки вона діє (24.09 о 8:13, через дві години після першої). Ми рахуємо її як те саме попередження, якщо вона не називає нового воєводства і не прийшла після відбою.
Наслідок: Жодне з попередніх попереджень не змінилося.
API 0.14.2
: Публічний реєстр надійності
Щоночі ми відтворюємо наші рівні із запису джерел, який ведемо з 18.09, і порівнюємо їх з офіційними попередженнями RCB і RSO.
Наслідок: Відтоді кожна зміна моделі означає перерахунок усього періоду заново: цифри на цій сторінці завжди походять із моделі, що діє сьогодні.
API 0.6.0
: Безпечніша публікація рівнів
Коли обчислити рівні не вдавалося, сервер публікував старі рівні зі свіжим часом. Відповідь NEPTUN без списку об’єктів виглядала як порожнє небо, тобто «Спокій». Тривоги з каналу, що замовк, і далі впливали на рівні. Тепер у перших двох випадках сайт показує «Немає даних», а тривог із мовчазного каналу ми не використовуємо.
Наслідок: До появи реєстру. Реєстр рахує весь період за сьогоднішніми правилами.
API 0.3.1
: Тривоги в Україні за районами
Ми читали лише список областей із тривогою, тож правило «тривога в районі України до приблизно 100 км звідси» не могло спрацювати. З цієї версії ми читаємо тривоги за районами, з їхнім видом (дрони, ракети). Попередження для всієї області без позиції об’єкта дає щонайбільше «Активність».
Наслідок: До появи реєстру. Реєстр рахує весь період за сьогоднішніми правилами.
API 0.2.0
: Запуск sanalert.pl
Перша публічна версія: рівні для квадратів зі стороною близько 11 км, обчислені з об’єктів, які відстежує NEPTUN, поруч із повідомленнями RCB і RSO.
API 0.1.0
Ніч за ніччю, воєводство за воєводством: Нічні звіти.
Подробиці й документ із числами: api.sanalert.pl/v1/record.