v2.0: исправлены критические баги, добавлены 4 новые проверки, 4-фазный cookie-аудит, retry-логика, YAML-словари, LLM-анализ, тесты

Исправлено:
- engine: _calculate_score() при ошибке загрузки (score не 100 для мёртвых сайтов)
- privacy_link: замена page.goto() на aiohttp (гонка данных)
- form_checkbox: 3-уровневый поиск label + dark-pattern detection
- server_location: синхронный urllib → aiohttp
- api/server: перепутанные request/response модели в batch
- main.py: csv --checks флаг
- engine: фазовая модель (cookie_audit отдельно, остальные параллельно)
- engine: retry-логика (3 попытки, exponential backoff)
- PDF: emoji заменены на текст (WeasyPrint)

Добавлено:
- consent_doc: проверка отдельного согласия на обработку ПД
- operator_info: проверка ИНН/ОГРН/DPO (читает главную + политику)
- cookie_audit: 4-фазный аудит (load→detect→reject→compare)
- llm_policy: опциональный LLM-анализ 16 разделов (--deep)
- external_scripts: YAML-словари trackers.yaml (critical/warning/russian)
- logging (output.py), .gitignore, pyproject.toml
- smoke-тесты (16/16)
This commit is contained in:
neo committed 2026-06-10 00:49:07 +05:00
1 parent 7fb417dad5
commit b9db935389
24 files changed
+1725 -286

No files matched your search

+15 -15
View File
@@ -150,7 +150,7 @@
</head>
<body>
<div class="header">
<h1>📋 Аудит соответствия 152-ФЗ</h1>
<h1>Аудит соответствия 152-ФЗ</h1>
<p>Автоматизированный сканер | {{ site_scan.url }}</p>
<p>Дата проверки: {{ scanned_at }}</p>
<p>Версия сканера: {{ scanner_version }}</p>
@@ -159,16 +159,16 @@
<div class="score-card">
<div class="score-number">{{ score }}</div>
<div class="score-label">
{{ '✅ Сайт соответствует 152-ФЗ' if is_compliant else '❌ Сайт НЕ соответствует 152-ФЗ' }}
{{ 'Сайт соответствует 152-ФЗ' if is_compliant else 'Сайт НЕ соответствует 152-ФЗ' }}
</div>
</div>
<div class="summary-box">
<h3>📊 Резюме проверки</h3>
<h3>Резюме проверки</h3>
<p>{{ summary }}</p>
</div>
<h2>📝 Результаты проверок</h2>
<h2>Результаты проверок</h2>
<table class="table">
<thead>
<tr>
@@ -184,24 +184,24 @@
<td><strong>{{ check.title }}</strong></td>
<td>
{% if check.status == 'pass' %}
<span class="status-pass">✅ Пройдено</span>
<span class="status-pass">ПРОЙДЕНО</span>
{% elif check.status == 'fail' %}
<span class="status-fail">❌ Не пройдено</span>
<span class="status-fail">НАРУШЕНИЕ</span>
{% elif check.status == 'skip' %}
<span class="status-skip">⏭ Пропущено</span>
<span class="status-skip">ПРОПУЩЕНО</span>
{% elif check.status == 'error' %}
<span class="status-error">⚠️ Ошибка</span>
<span class="status-error">ОШИБКА</span>
{% endif %}
</td>
<td>
{% if check.risk_level == 'critical' %}
<span class="risk-critical">🔴 Критический</span>
<span class="risk-critical">КРИТИЧЕСКИЙ</span>
{% elif check.risk_level == 'high' %}
<span class="risk-high">🟠 Высокий</span>
<span class="risk-high">ВЫСОКИЙ</span>
{% elif check.risk_level == 'medium' %}
<span class="risk-medium">🟡 Средний</span>
<span class="risk-medium">СРЕДНИЙ</span>
{% else %}
<span class="risk-low">🟢 Низкий</span>
<span class="risk-low">НИЗКИЙ</span>
{% endif %}
</td>
<td>{{ check.message }}</td>
@@ -213,10 +213,10 @@
<div class="cta-section">
<h2>Нужна помощь с приведением сайта в соответствие 152-ФЗ?</h2>
<p>Мы исправим все найденные нарушения, подготовим документы и настроим cookie-баннеры.</p>
<p style="margin-top: 20px; font-size: 18px;">💰 Стоимость: от 7 000 ₽ (зависит от объема нарушений)</p>
<p style="margin-top: 20px; font-size: 18px;">Стоимость: от 7 000 руб. (зависит от объёма нарушений)</p>
<div style="margin-top: 20px;">
<span class="cta-button">📧 Написать на email</span>
<span class="cta-button">💬 Telegram</span>
<span class="cta-button">Написать на email</span>
<span class="cta-button">Telegram</span>
</div>
</div>