# Таблица оператора спортивного объекта

Версия 1. Камчатское время UTC+12. Шаблон: downloads/operations-template.csv.

Одна строка относится к одному пространству, дате, часу и типу данных. В шаблоне оставлены пустые поля: их надо заполнить перед загрузкой. Сохраните CSV UTF-8 с разделителем `;`. Можно использовать экспортированный JSON со свойством observations. Файл до 2 МБ, до 5000 строк. Импорт сначала проверяет весь файл; при ошибке прежние данные сохраняются. Успешный импорт заменяет всю локальную таблицу.

| Поле | Что заполнять |
|---|---|
| facility_id | ID пилотного объекта: MS-34166 бассейн, MS-34162 «Звёздный», MS-34168 «Спартак» |
| space_id | ID пространства из выпадающего списка на странице; основные: 83491 бассейн 50 м, 69196 универсальный зал, 58392 футбольное поле |
| date | Дата YYYY-MM-DD по Камчатке |
| hour | Час 0–23 по Камчатке |
| kind | actual — измерение; plan — план бронирований на час |
| capacity | Подтверждённая оператором одновременная вместимость пространства, человек. Пусто — неизвестна. Не копировать ЕПС без проверки |
| attendees | Одновременно занимаются в момент измерения, целое число. 0 означает измеренное отсутствие посетителей; пусто — не измеряли. Для plan всегда пусто |
| booked | Занятые места по полному плану на час, целое число; пусто — нет полного расписания. Не число уникальных людей за день |
| open | Доступ для дополнительного занятия: yes / no / unknown |
| trainer | Наличие согласованного тренера: yes / no / unknown |
| staff | Наличие необходимого персонала: yes / no / unknown |
| funding | Финансирование занятия подтверждено: yes / no / unknown |
| measured_at | Только actual: время измерения ISO 8601, например 2026-11-07T10:15:00+12:00. Должно совпадать с date/hour и не быть в будущем |
| updated_at | Время составления/обновления записи с часовым поясом; не раньше измерения, не в будущем |
| source | HTTPS-ссылка на документ или точное название журнала/таблицы с датой |
| operator | Название организации, подтвердившей строку. ФИО посетителей не нужны |

Загрузка = занимаются / вместимость × 100%. Остаток вместимости по факту = max(0, вместимость − занимаются); он не гарантирует возможность записи. Плановый резерв = max(0, вместимость − бронирования), только если доступ открыт. Учитываются именно плановые строки; отсутствие данных не создаёт свободный слот.

Кольцо общей карты: только основное пространство пилота, дата и час выбираются отдельно. При просмотре текущей даты измерение старше 90 минут не показывается как текущее. Прошлые даты являются архивом. Пустые поля остаются «нет данных»; план не превращается в фактическую посещаемость.

Данные сохраняются только в браузере на этом устройстве. Экспортируйте JSON для передачи ответственному за публикацию. Импорт не меняет публичные данные сайта и не отправляет сведения на сервер. Очистка браузера может удалить локальную таблицу.
