CI-режим: --fail-on, audit-compare, healthcheck
Использовать сервис в pre-deploy CI (GitHub Actions, GitLab CI). Появилось в Этапе E.
Зачем
В Этапе E добавлены три операционные команды для интеграции в CI/CD-пайплайны и системы мониторинга. Раньше сервис работал только как ручной аудит (через UI или CLI с печатью в stdout); теперь его можно встроить в pre-deploy проверки.
1. audit --fail-on=P0 — блокировать деплой на P0-проблемах
# GitHub Actions example
- name: SEO pre-deploy check
run: |
cd /opt/seo-master
./venv/bin/python -m app.cli audit --url=https://staging.example.com/ --fail-on=P0
Команда возвращает exit 1, если на странице после аудита есть хотя бы один finding уровня P0 (или P1/P2 — настраивается). CI-job упадёт, deploy не пройдёт.
Применимо к --url, --all, --all-sites.
2. audit-compare — diff между двумя прогонами
# Сравнить с прошлой неделей
./venv/bin/python -m app.cli --site=1 audit-compare --before=2026-04-25 --after=2026-05-02
Output:
Сравнение прогонов site_id=1:
before: run #42 от 2026-04-25 07:30 (23 стр.)
after: run #43 от 2026-05-02 07:30 (23 стр.)
ЗАКРЫТО (5):
R040 на /services
R040 на /cases
...
ПОЯВИЛОСЬ (2):
[High] R001 на /old-page
[Low] R048 на /blog
РЕГРЕССИЯ (0):
(нет)
Флаг --json для скриптов. Параметры --before / --after принимают либо run_id (число), либо дату YYYY-MM-DD.
3. /audit/healthcheck — JSON для Grafana
$ curl https://tools.hiclick.ru/seo-master/audit/healthcheck?site_id=1
{
"site_id": 1,
"domain": "dev.hiclick.ru",
"site_score": 73,
"last_audit_at": "2026-05-02T07:30:00",
"pages_audited": 23,
"findings": {
"P0": 2, "P1": 8, "P2": 15, "P3": 12,
"total_open": 37
}
}
Эндпоинт без авторизации (для интеграций). Можно скрейпить из Grafana / статус-страницы / алертов на резкое падение SiteScore.
Типичный сценарий
- В CI на pre-deploy:
audit --fail-on=P0на staging. - После деплоя в Telegram:
audit-compare --before=<previous_run> --after=<current_run> --jsonи в Slack постят сводку «закрылось 5, появилось 2». - В Grafana дашборд опрашивает
/audit/healthcheckкаждые 10 мин и алертит приsite_score < 60.