Контракт данных: 132 полей
Всё, что бэкенд ns-analytics передаёт главной странице (контекст build._ctx + шаблоны dashboard.html.j2, dashboard_ux.html.j2 из релиза ns-r5-20261023). Каждый из 25 концептов выводит ВСЕ эти поля (кроме трёх допустимо свёрнутых списков — таблица графика, события, расшифровка ночного прогноза, как и в проде); полнота проверяется автоматически. Значения в колонке «Пример» — мок-снимок, совпадающий со скриншотами 23.10.26 14:25 МСК.
snapshot · 9config · 5flags · 5current · 9insulin · 16devices · 7ages · 15today · 16weeks · 22timeline · 5chart · 5predictor · 17links · 1
| Путь в макете | Что это | Ключ / источник в бэкенде | Тип | Пример |
|---|---|---|---|---|
snapshot.iso | Время снимка (МСК) | snapshot_iso | str | 23.10.26 14:25 |
snapshot.ms | Время снимка, unix ms | snapshot_ms | int | 1792754700000 |
snapshot.note | Пометка «снимок, не мониторинг» | dashboard-snapshot | str | Снимок: 23.10.26 14:25 МСК · не непрерывный мониторинг |
snapshot.version | Версия данных, sha256 | data-dashboard-version | str | 79e00acea51062200667c77baefe6decedff60116cfb4b5c90cf0e0a2cbe3697 |
snapshot.refresh_every_s | Интервал проверки обновлений, с | setInterval(check,30000) | int | 30 |
snapshot.update_pending | Есть новая версия данных | pending | bool | да |
snapshot.refresh_status | Статус проверки обновлений | dashboard-refresh-status | str | Доступно обновление. Примените его, когда закончите чтение. |
snapshot.update_button | Кнопка «Обновить данные, сохранив место» | dashboard-update | str | Обновить данные, сохранив место |
snapshot.footer | Подвал: обновлено + дисклеймер | footer | str | Обновлено: 23.10.26 14:25 · NS-Analytics · Не является медицинской рекомендацией |
config.hypo_mmol | Нижняя граница цели, ммоль/л | config.targets.hypo_mmol | str | 3,9 |
config.hyper_mmol | Верхняя граница цели, ммоль/л | config.targets.hyper_mmol | str | 10,0 |
config.stale_after_sec | Порог устаревания CGM, с | config.stale_after_sec | int | 900 |
config.tz | Часовой пояс отчёта | tzutil.MSK | str | Europe/Moscow (UTC+3) |
config.metric_profile.line | Метрический профиль (TIR-цель) | metric_profile | str | standard · 3,9–10,0 · TIR > 70% |
flags.stale | Флаг: данные устарели | stale | bool | нет |
flags.current_stale | Флаг: измерение устарело | current_stale | bool | нет |
flags.night_enabled | Флаг: ночной прогноз включён | night_enabled | bool | да |
flags.has_reports_page | Флаг: есть страница отчётов | has_reports_page | bool | да |
flags.timeline_incomplete | Флаг: события неполные | timeline_incomplete | bool | нет |
current.mmol | Сахар, ммоль/л | current.sgv | str | 8,2 |
current.mgdl | Сахар, мг/дл | current.sgv | int | 148 |
current.direction | Направление сенсора | current.direction | str | SingleUp |
current.cls | Класс зоны (ok/warn/bad) | current.cls | str | ok |
current.delta_mmol | Дельта, ммоль/л | current.delta_mmol | str | +0,2 |
current.delta_interval_ms | Интервал дельты, мс | current.delta_interval_ms | int | 118200 |
current.delta_text | Подпись дельты | current.delta_text | str | +0,2 ммоль/л за 1,97 мин |
current.age_min | Возраст измерения, мин | current.age_min | int | 4 |
current.date | Время измерения, unix ms | current.date | int | 1792754460000 |
insulin.iob.value | IOB, U | openaps.iob.iob | str | 3,92 |
insulin.iob.status | IOB: расчёт / устарел | openaps_display.iob.fresh | str | расчёт |
insulin.iob.age_min | IOB: возраст, мин | openaps_display.iob.age_min | int | 4 |
insulin.iob.conflict | IOB: конфликт расчётов | openaps_conflicts.iob | str | нет |
insulin.cob.value | COB, г | openaps.suggested.COB | str | 9,3 |
insulin.cob.status | COB: расчёт / устарел | openaps_display.cob.fresh | str | расчёт |
insulin.cob.age_min | COB: возраст, мин | openaps_display.cob.age_min | int | 4 |
insulin.cob.conflict | COB: конфликт расчётов | openaps_conflicts.cob | str | нет |
insulin.basal.value | Basal сейчас, U/h | basal_display | str | 0,81 U/h |
insulin.basal.kind | Basal: temp или профиль | basal_display.temp|base | str | temp |
insulin.basal.temp_remaining_min | Temp basal: осталось, мин | TempBasalRemaining | int | 26 |
insulin.basal.base_rate | Базовая ставка профиля | BaseBasalRate | str | 0,75 U/h |
insulin.basal.age_min | Basal: возраст данных, мин | basal.ts | int | 3 |
insulin.profile.pct | Профиль, % | profile_display.value | str | 110% |
insulin.profile.name | Имя профиля | ActiveProfile | str | Kirill |
insulin.profile.age_min | Профиль: возраст, мин | profile_display.ts | int | 3 |
devices.phone.value | Батарея телефона | uploaderBattery | str | 61% |
devices.phone.charging | Телефон заряжается | isCharging | bool | нет |
devices.phone.age_min | Телефон: возраст, мин | phone_ts | int | 3 |
devices.pump.value | Батарея помпы | pump.battery.percent | str | 100% |
devices.pump.age_min | Помпа: возраст, мин | pump_field_age_min.battery | int | 3 |
devices.reservoir.value | Резервуар, U | pump.reservoir | str | 143 U |
devices.reservoir.age_min | Резервуар: возраст, мин | pump_field_age_min.reservoir | int | 3 |
ages.sensor.value | Возраст сенсора | ages.sensor | str | 2д19ч |
ages.sensor.days | Возраст сенсора, суток | ages.sensor | float | 2.79 |
ages.sensor.since | Сенсор установлен | ages.sensor_ts | str | 20.10.26 19:25 |
ages.sensor.warn_d | Сенсор: порог «внимание», сут | age_cls.warn_d | int | 13 |
ages.sensor.bad_d | Сенсор: порог «критично», сут | age_cls.bad_d | int | 14 |
ages.site.value | Возраст катетера | ages.site | str | 39ч |
ages.site.days | Возраст катетера, суток | ages.site | float | 1.62 |
ages.site.since | Катетер установлен | ages.site_ts | str | 21.10.26 23:25 |
ages.site.warn_d | Катетер: порог «внимание», сут | age_cls.warn_d | int | 4 |
ages.site.bad_d | Катетер: порог «критично», сут | age_cls.bad_d | int | 5 |
ages.insulin.value | Возраст инсулина в резервуаре | ages.insulin | str | 39ч |
ages.insulin.days | Возраст инсулина, суток | ages.insulin | float | 1.62 |
ages.insulin.since | Инсулин заменён | ages.insulin_ts | str | 21.10.26 23:25 |
ages.insulin.warn_d | Инсулин: порог «внимание», сут | age_cls.warn_d | int | 4 |
ages.insulin.bad_d | Инсулин: порог «критично», сут | age_cls.bad_d | int | 5 |
today.tir.value | TIR сегодня | today.tir_pct | str | 90% |
today.tir.range | Диапазон TIR | tir_range | str | 3,9–10,0 |
today.tir.cls | Класс TIR (ok/warn/muted) | tir_cls | str | ok |
today.avg.value | Средний сахар сегодня, ммоль/л | today.avg_mmol | str | 5,9 |
today.hba1c.value | Расчётный HbA1c (ADAG) | today.hba1c_adag | str | 5,3% |
today.hba1c.note | Пояснение к HbA1c | hba1c note | str | HbA1c по обратной ADAG: (средний CGM в мг/дл + 46,7) / 28,7; не лабораторный анализ. За ко |
today.coverage.value | Покрытие данными с начала суток | today.coverage_pct | str | 97,3% |
today.counts.total | Отсчётов всего | today.total | int | 168 |
today.counts.below | Отсчётов ниже цели | today.below | int | 13 |
today.counts.in_range | Отсчётов в цели | today.in_range | int | 151 |
today.counts.above | Отсчётов выше цели | today.above | int | 4 |
today.bar.legend | Легенда полосы гипо/норма/гипер | bar_legend_pct | str | ГИПО 7,7% · НОРМА 89,9% · ГИПЕР 2,4% |
today.bar.capture_line | Строка «данных за сутки» | capture_v | str | ДАННЫХ ЗА СУТКИ 97,3% |
today.reliable | Достаточно данных (покрытие ≥ 70%) | reliable | bool | да |
today.quality_note | Примечание о качестве | quality_note | str | (пусто → «нет») |
today.observed_low | Наблюдалось ниже цели | observed_low | str | (пусто → «нет») |
weeks.cur.avg | Средний сахар, эта неделя | weeks.cur.avg | str | 7,1 |
weeks.cur.avg_trend | Тренд среднего, эта неделя | _trend | str | ▲ |
weeks.cur.tir | TIR, эта неделя | weeks.cur.tir | str | TIR 81% |
weeks.cur.tir_trend | Тренд TIR, эта неделя | _trend | str | ▲ |
weeks.cur.ins | Инсулин, эта неделя | weeks.cur.ins_u | str | 97 U |
weeks.cur.ins_trend | Тренд инсулина, эта неделя | _trend | str | ▼ |
weeks.cur.coverage_pct | Покрытие, эта неделя | weeks.cur.coverage_pct | str | 96,8% |
weeks.cur.n | Отсчётов, эта неделя | weeks.cur.n | int | 1291 |
weeks.cur.insulin_method.calculation_version | Метод инсулина: версия, эта неделя | insulin_method_card.calculation_version | str | effective-profile-v2 |
weeks.cur.insulin_method.status | Метод инсулина: статус, эта неделя | insulin_method_card.status | str | available |
weeks.cur.insulin_method.variant | Метод инсулина: вариант A/B, эта неделя | insulin_method_card.variant | str | A |
weeks.prev.avg | Средний сахар, прошлая неделя | weeks.prev.avg | str | 7,0 |
weeks.prev.avg_trend | Тренд среднего, прошлая неделя | _trend | str | (пусто → «нет») |
weeks.prev.tir | TIR, прошлая неделя | weeks.prev.tir | str | TIR 70% |
weeks.prev.tir_trend | Тренд TIR, прошлая неделя | _trend | str | (пусто → «нет») |
weeks.prev.ins | Инсулин, прошлая неделя | weeks.prev.ins_u | str | 99 U |
weeks.prev.ins_trend | Тренд инсулина, прошлая неделя | _trend | str | (пусто → «нет») |
weeks.prev.coverage_pct | Покрытие, прошлая неделя | weeks.prev.coverage_pct | str | 99,2% |
weeks.prev.n | Отсчётов, прошлая неделя | weeks.prev.n | int | 2000 |
weeks.prev.insulin_method.calculation_version | Метод инсулина: версия, прошлая неделя | insulin_method_card.calculation_version | str | effective-profile-v2 |
weeks.prev.insulin_method.status | Метод инсулина: статус, прошлая неделя | insulin_method_card.status | str | available |
weeks.prev.insulin_method.variant | Метод инсулина: вариант A/B, прошлая неделя | insulin_method_card.variant | str | A |
timeline.summary | Итог за 24 ч | timeline_summary | str | 5 приёмов · 288 г · 81,5 U |
timeline.count | Событий за 24 ч | timeline_count | int | 86 |
timeline.rows | Список событий за 24 ч | timeline_rows | list | список, 86 шт. |
timeline.rejected | Отброшено повреждённых событий | timeline_rejected | int | 0 |
timeline.notice | Предупреждение о неполных событиях | timeline_notice | str | нет |
chart.plot | График сахара и IOB за 24 ч | render_chart | svg | — |
chart.description | Описание графика (мин/макс/последнее) | chart aria-label | str | последнее 8,2, минимум 2,9, максимум 11,4 ммоль/л, ось в ммоль/л |
chart.legend | Легенда графика | legend | str | Сахар (ммоль/л, левая ось) · Активный инсулин (U, правая ось) |
chart.table | Таблица данных графика (время · сахар · IOB) | chart-data | list | список, 288 шт. |
chart.slots_count | Точек сахара в окне | sgv_slots | int | 276 |
predictor.verdict | Ночной прогноз: вердикт | predictor.verdict | str | Повышенный риск гипо |
predictor.level | Ночной прогноз: уровень | predictor.level | str | medium |
predictor.score_label | Ночной прогноз: баллы | predictor.score | str | 58 / 100 баллов |
predictor.explain | Ночной прогноз: что учтено | predictor.explain | str | активного инсулина вечером 2,4 U · углеводов 12 г |
predictor.night_label | Ночь расчёта | predictor.night_label | str | ночь 22.10 → 23.10 (22:00–07:00) |
predictor.night_expired | Ночь завершилась (прошлый прогноз) | predictor.night_expired | bool | да |
predictor.updated | Расчёт прогноза, МСК | predictor.updated_iso | str | 22.10.26 22:10 |
predictor.text | Цифры расчёта (текст) | predictor.text | str | Расчёт 22:10 · IOB 2,4 U · COB 12 г Минимум по прогнозу: 3,6 ммоль/л около 06:30 Базал по |
predictor.degraded | Неполные входы расчёта | predictor.degraded | str | нет |
predictor.inputs.iob_u | Вход: IOB вечером, U | predictor.inputs.iob_u | str | 2,4 |
predictor.inputs.cob_u | Вход: COB вечером, г | predictor.inputs.cob_u | str | 12 |
predictor.trust.sentence | Проверка прогноза за 30 ночей (фраза) | trust_sentence | str | За 30 ночей: подтверждённых предупреждений до начала события — 7, из них с эпизодом 3 (43% |
predictor.trust.n_nights | Ночей проверено | trust.n_nights | int | 30 |
predictor.trust.warned_nights | Ночей с предупреждением | trust.warned_nights | int | 7 |
predictor.trust.hit | Предупреждений подтвердилось | trust.hit | int | 3 |
predictor.trust.missed | Гипо мимо прогноза | trust.missed | int | 1 |
predictor.notice | Предупреждение прогноза | predictor_notice | str | нет |
links.0.title | Ссылка «Отчёты и качество данных» | links[0].title | str | Отчёты и качество данных |
Режимы проверки состояний: гипо · гипер · устарело · износ расходников (параметр ?state= работает на любой странице).