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

+3 -4
View File
@@ -7,6 +7,7 @@ from scanner.engine import ScannerEngine
from api.schemas import (
HealthResponse,
ScanRequest,
CSVScanRequest,
ScanResultResponse,
BatchScanResultResponse,
)
@@ -55,16 +56,14 @@ async def scan_single(request: ScanRequest):
@app.post("/api/scan/batch", tags=["Scan"])
async def scan_batch(request: BatchScanResultResponse):
async def scan_batch(request: CSVScanRequest):
"""
Просканировать несколько URL.
Запрос: {"urls": ["https://site1.ru", "https://site2.ru"], "checks": [...]}
"""
from scanner.engine import scanner_engine
try:
results = await scanner_engine.scan_urls_batch(request.urls, request.checks)
results = await scanner.scan_urls_batch(request.urls, request.checks)
scan_results = []
for r in results: