- new page app_stats/index.html (login-gated, same style/nav) - app_stats/app_metrics.json data (year-over-year comparison, NEW badges) - updater/update_app_metrics.py: adaptive SQL (Jan 1 -> yesterday vs prev year) - run both updaters from run_update.bat; refactor shared git push |
||
|---|---|---|
| .. | ||
| config.example.yaml | ||
| README.md | ||
| requirements.txt | ||
| run_update.bat | ||
| update_app_metrics.py | ||
| update_kpi.py | ||
KPI Updater — ежедневное обновление CSV из Impala
Скрипт запускается на рабочем компьютере с доступом к корпоративной сети (VPN):
выгружает свежие KPI из Impala, перезаписывает ../drb_iliyas_kpi_2026.csv
и пушит его в ветку pages. Сайт (Gitea Pages) при открытии делает
fetch('drb_iliyas_kpi_2026.csv'), поэтому из внешней сети видны свежие данные.
updater/
├─ update_kpi.py # основной скрипт
├─ requirements.txt # зависимости (impyla и пр.)
├─ config.example.yaml # шаблон конфига -> скопировать в config.yaml
├─ run_update.bat # обёртка для Планировщика задач
└─ update.log # лог (создаётся при запуске, в git не коммитится)
1. Установка (один раз)
⚠️ Версия Python.
impyla/thrift/thrift-saslстабильно ставятся на Python 3.10–3.12. На системном Python 3.14 колёс может не быть и сборка упадёт. Установите отдельный Python 3.12 и создавайте venv именно им.
В папке updater/:
REM создать виртуальное окружение (укажите путь к python 3.12, если нужно)
python -m venv venv
venv\Scripts\activate
pip install -r requirements.txt
Создать конфиг и заполнить логин/пароль Impala + git-токен:
copy config.example.yaml config.yaml
notepad config.yaml
config.yaml уже в .gitignore — он не попадёт в git.
2. Аутентификация для пуша
Пуш по расписанию должен идти без ручного ввода пароля. Два варианта:
A. Токен (рекомендуется).
В Gitea: Settings → Applications → Generate New Token, право
write:repository. Вставьте его в config.yaml → git.token.
Скрипт использует токен только в команде пуша, в git-конфиг он не сохраняется,
а в логах маскируется.
B. Git Credential Manager.
Оставьте git.token пустым и один раз выполните вручную
git push origin pages, сохранив логин/пароль в системном хранилище Windows.
3. Проверка вручную
Подключитесь к VPN, затем:
cd /d "путь\к\kpi-dashboard\updater"
run_update.bat
Ожидаемо: в update.log появятся строки подключения, число строк, и при
изменении данных — коммит и Пуш выполнен успешно. Если данные не менялись —
Данные не изменились, коммита не будет.
4. Расписание (раз в сутки)
Создать задачу в Планировщике Windows (запуск каждый день в 06:30). Выполнить в PowerShell от администратора, поправив путь:
$bat = "C:\Users\1\Desktop\QC\Vibecode\Project 1\kpi-dashboard\updater\run_update.bat"
schtasks /Create /TN "KPI Dashboard Update" /TR "`"$bat`"" /SC DAILY /ST 06:30 /RL LIMITED /F
Проверить / запустить вручную / удалить:
schtasks /Query /TN "KPI Dashboard Update" /V /FO LIST
schtasks /Run /TN "KPI Dashboard Update"
schtasks /Delete /TN "KPI Dashboard Update" /F
Задача выполнится, только когда компьютер включён и (для успешной выгрузки) поднят VPN. Если в момент запуска VPN не подключён, скрипт залогирует ошибку подключения и завершится с ненулевым кодом — данные останутся прежними.
Логика скрипта (кратко)
- Читает
config.yaml. - Применяет SSL monkey-patch (старые cipher suites сервера, см.
../Impala_connection.md). - Подключается к
host, при ошибке — кfallback_host. - Выполняет SQL (зашит в
update_kpi.py, константаSQL_QUERY). - Формирует CSV в точном формате исходника: разделитель
;, строки в кавычках, точка как десятичный разделитель, CRLF, сортировка по убываниюreport_period_id, затемentry_date. - Если содержимое не изменилось — выходит без коммита.
- Иначе:
git addтолько CSV → commit →fetch + rebase + pushвpages(с авто-rebase и повтором, т.к. веб-приложение тоже пушитai-cache.json).
Пустой результат запроса (0 строк) НЕ перезаписывает CSV — защита от стирания данных.