🔌 Интеграции #ci #fail-on #audit-compare #healthcheck #grafana #github-actions

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.

Типичный сценарий

  1. В CI на pre-deploy: audit --fail-on=P0 на staging.
  2. После деплоя в Telegram: audit-compare --before=<previous_run> --after=<current_run> --json и в Slack постят сводку «закрылось 5, появилось 2».
  3. В Grafana дашборд опрашивает /audit/healthcheck каждые 10 мин и алертит при site_score < 60.
🔎 ESC