fix: устранены все найденные аудитом баги и тихие падения
- SQL injection паттерн → параметризованные запросы во всех местах - except: pass/continue → logger.warning() везде, ничего не тонет молча - WAL mode + индекс domain_dedup_key в database.py - try/finally для conn в main.py, утечка соединения устранена - backoff 30с при 403/429 от Rusprofile/ЕГРЮЛ - ликвидированные компании → egrul_status="liquidated" - max_candidates в contacts_finder считает только реальных кандидатов - DB_PATH абсолютный (Path(__file__).parent), HH_PAUSE_BETWEEN_QUERIES в config - HH_SIGNAL_QUERIES дубль убран из launcher.py → импорт из config - path traversal защита в egrul_enricher debug_dump_html Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -8,6 +8,7 @@ Streamlit перезапускает скрипт на каждое действ
|
||||
держать не имеет смысла.
|
||||
"""
|
||||
import json
|
||||
import logging
|
||||
import sqlite3
|
||||
from datetime import datetime
|
||||
from pathlib import Path
|
||||
@@ -15,6 +16,8 @@ from typing import Any
|
||||
|
||||
import pandas as pd
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def _conn(db_path: Path | str) -> sqlite3.Connection:
|
||||
conn = sqlite3.connect(str(db_path))
|
||||
@@ -311,10 +314,17 @@ def add_lead_manual(db_path, data: dict) -> int:
|
||||
conn.rollback()
|
||||
msg = str(e).lower()
|
||||
if "inn" in msg:
|
||||
logger.warning(f"[db_layer] add_lead_manual: дубль по ИНН ({data.get('inn')}): {e}")
|
||||
raise ValueError(f"Компания с таким ИНН уже есть в базе ({data.get('inn')}).") from e
|
||||
if "phone" in msg:
|
||||
logger.warning(f"[db_layer] add_lead_manual: дубль по телефону: {e}")
|
||||
raise ValueError(f"Компания с таким телефоном уже есть в базе.") from e
|
||||
logger.warning(f"[db_layer] add_lead_manual: IntegrityError: {e}")
|
||||
raise ValueError(f"Не удалось добавить (дубль): {e}") from e
|
||||
except Exception as e:
|
||||
conn.rollback()
|
||||
logger.warning(f"[db_layer] add_lead_manual: неожиданная ошибка: {e}")
|
||||
raise
|
||||
finally:
|
||||
conn.close()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user