Перейти к содержанию
VVizorLabsТехнический центрОсновной сайт

Формат списка событий BOX 3.x

Подготовить события для BI

Преобразуйте сохранённые JSON-страницы в CSV, уберите точные дубли и посчитайте события по камерам.

Работает локальноPython · комплект 1.1 · 27.09.2026

Что получится

Четыре уникальных события из двух файлов, CSV для импорта в BI и сводка по камере и типу события.

Запустить пример

  • Python 3.9 или новее; дополнительные библиотеки не нужны.
  • Распакованный ZIP. Все входные данные уже включены. Доступ к BOX не требуется.

Откройте терминал в каталоге распакованного комплекта и выполните:

python3 export_events.py sample-page-1.json sample-page-2.json --config mapping.json --output events.csv
python3 summarize.py events.csv --output summary.csv
python3 check_example.py

Ожидаемый результат

{"duplicates_skipped": 1, "rows": 4}

Последняя команда выполняет автоматические проверки и печатает PASS. Файлы expected в комплекте содержат полный эталон.

Сводка для сравнения с BI

КамераТип событияКоличество
Камера 1no_helmet2
Камера 2no_helmet1
Камера 2vehicle1

Включены все статусы: подтверждённые, непросмотренные и отклонённые. Это число записей, а не число подтверждённых нарушений.

Локальные проверки

  • CSV совпадает с эталоном; сводка содержит ожидаемые количества.
  • Точный дубль пропускается, конфликт двух версий одного события останавливает обработку.
  • Отсутствующее поле обнаруживается до записи CSV; текст, похожий на формулу, экранируется.
  • Клиент API проверен на подменённых HTTPS-ответах: GET, Bearer, настройки TLS, ошибки, таймаут, запрет redirect и перезаписи.

Проверено 27.09.2026 на Python 3.12.0. Только стандартная библиотека.

Применимость и границы

  • Обёртка events подтверждена руководством. Поля demo_* внутри событий — учебные; замените mapping.json по схеме своей установки.
  • Опциональный fetch_events.py получает одну указанную страницу: полнота периода и пагинации не проверяется.
  • Экспорт и API-клиент проверены локально, сетевой транспорт подменён. TLS-соединение с BOX, права пользователя, совместимость вашей сборки и импорт в BI требуют отдельной проверки.

Следующий шаг

  1. Импортируйте events.csv в BI: строки — Камера, столбцы — Тип, значение — количество ID.
  2. Сначала сравните сводку с таблицей в этом примере. Затем добавьте фильтр Статус = confirmed: останется две записи.
  3. Опционально получите одну страницу API: сверьте формат запроса и ответа в Swagger, задайте BOX_ORIGIN и BOX_ACCESS_TOKEN через окружение, выполните python3 fetch_events.py --page 1 --page-size 20 --output raw-page-1.json. HTTPS и проверка сертификата включены. Подробные команды и диагностика — в README.
  4. Настройте копию mapping.json по реальным полям ответа и передайте raw-page-1.json в export_events.py. Учебные demo_* замените по схеме сервера.

Файлы комплекта

  • README.mdЗапуск, импорт в BI, настройка полей и границы примера
  • fetch_events.pyПросмотр исходника · Опциональный GET одной страницы API с проверкой HTTPS
  • export_events.pyПросмотр исходника · JSON → CSV и дедупликация
  • summarize.pyПросмотр исходника · Группировка CSV по камере и типу
  • mapping.jsonНастраиваемое сопоставление полей
  • sample-page-1.jsonПервая учебная страница
  • sample-page-2.jsonВторая страница с одним дублем
  • expected.csvЭталонные четыре события
  • expected-summary.csvЭталонная сводка
  • check_example.pyПросмотр исходника · Автоматические проверки результата и ошибок
  • check_fetch.pyПросмотр исходника · Проверки API-клиента на подменённых ответах без сети

Связанные инструкции