Создать автоматизированный отчет Задача Нужно сделать систему, которая раз в неделю автоматически формирует PDF-отчёт для каждого клиента по шаблону (во вложении), используя данные видеотрекеров из ClickHouse. Отчёт формируется отдельно для каждого клиента, с учётом его точек, камер и набора триггеров. Какие данные есть В ClickHouse хранятся сырые события триггеров: • клиент ? точка ? камера ? триггер; • время начала события; • время срабатывания триггера; • длительность события; • количество людей. Особенности: • часовой пояс может отличаться по точкам и даже по камерам; • большинство триггеров — это факт срабатывания; • есть триггеры по длительности, где одно событие может длиться от секунд до 60+ минут. Период отчёта • всегда неделя с понедельника по воскресенье; • конечная дата и время считаются включительно; • всегда есть сравнение с 3 предыдущими неделями. Что должно быть в отчёте 1. Показатели по триггерам Для каждого триггера, который используется у клиента: • общее значение (например, суммарное время); • количество срабатываний; • % отклонение от целевого значения. 2. Сравнение с предыдущими неделями Для каждого триггера: • сравнение текущей недели с 3 предыдущими; • сравнение выводится в таблице числами и отдельным графиком по каждому триггеру; • сравниваются величины, частота, длительность, % отклонение от цели. 3. Лучшие и худшие точки Для каждого триггера формируются: • топ-10 лучших точек; • топ-10 худших точек. Критерий ранжирования — процент изменения отклонения от целевого значения. Пример: • точка 1: o прошлая неделя — 40 минут опозданий; o текущая — 80 минут; o изменение = (40 ? 80) / 40 ? 100% = ?100%; • точка 2: o прошлая — 30 минут; o текущая — 10 минут; o изменение = (30 ? 10) / 30 ? 100% = +66,6%. Все остальные точки (кроме 10 лучших и худших), если они есть, выводятся в приложении к отчёту. 4. Здоровье камер Отчёт должен показывать: • количество минут нездоровья камеры по каждой причине: o отключена; o заслонена; o плохая видимость и т.п. (причины уже определяются нашей моделью); • сравнение с предыдущими 3 неделями — таблица с означениями линейный график; • рейтинги: o топ-5 точек с наибольшим числом минут нездоровья; o топ-5 точек с увеличением/уменьшением минут; 5. Нетипичные паттерны и аномалии В отчёте должны отображаться аномалии следующих типов: 1. Отклонения в 3+ раз от медианного абсолютного отклонения (для триггеров по длительности и количеству). Примеры: o обычно опоздание < 15 минут ? опоздание 50 минут = аномалия; o обычно гости сидят в зале < 100 минут ? 300 минут = аномалия. 2. Нарушение логики поведения Например: o нормальная логика: Вход ? Витрина ? Касса; o аномалия: Касса ? Витрина 3. Резкая динамика показателя o любое отклонение (в изменении по триггеру неделя к неделе (в 3 раза и более (в плюс или минус) . Список аномалий может расширяться при появлении новых триггеров. Очень важно: • набор триггеров; • формулы расчётов; • графики; • пороги; • блоки отчёта; должны настраиваться через конфигурации, без изменения кода. Эти изменения должен уметь делать даже джун. 6. Результат • PDF; • автоматическая еженедельная генерация; • доставка: email; • точность расчётов — ?99-100%; • допустимое время генерации — до 5 часов. • код + Docker; • схема конфигураций; • документация для внесения изменений без правки кода; • воспроизводимый прогон на тестовых данных. 7. Рекомендации менеджера (делаются человеком, должны автоматически подгружаться в необходимые разделы отчета) • внешний источник (на старте Google Sheets); • сохранение истории по неделям; • привязка к конкретному отчёту. 8. Генерация и доставка • еженедельный запуск; • отправка по списку email; • логи, статусы, аудит. 9. Критерии приёмки • 3 клиента; • ?10 точек; • ?15 триггеров; • ?4 недели данных; • точность ?99%; • генерация ?5 часов. В отклике 1. Как будете хранить и версионировать настройки. 2. Как реализуете поиск аномалий (MAD + правила). 3. Архитектура и оценка сроков.