"""Острый детектор ЖЁСТКОГО мусора (без шума доменного эвристика):
не-IT/не-office профиль матчит вакансию с ЯВНОЙ IT-ролью в заголовке —
это гарантированно нерелевантно и раздражает юзера."""
import re
import sqlite3
import sys

sys.path.insert(0, ".")
from bot.vacancy_filters import (
    is_freelance_source,
    matches_vacancy_relevance,
    normalize_text,
    profile_domains,
)

con = sqlite3.connect("file:vakhunter.db?mode=ro", uri=True)
con.row_factory = sqlite3.Row
ROWS = [dict(r) for r in con.execute(
    "SELECT title,description,source,skills FROM vacancies "
    "WHERE created_at>datetime('now','-21 days')").fetchall()]

# Жёсткие IT-роль-маркеры в ЗАГОЛОВКЕ (однозначно IT-вакансия)
IT_TITLE = re.compile(
    r"(разработчик|программист|developer|backend|frontend|fullstack|full-stack|"
    r"devops|python|java(?!script-верст)|golang|\bqa\b|тестировщик|"
    r"data scientist|ml-|аналитик данных|системный администратор|1c developer|"
    r"unity|верстальщик|веб-разработ)", re.I)

PROFILES = [
    ("Официант", "работа в ресторане, обслуживание"),
    ("Повар", "кухня, приготовление блюд"),
    ("Продавец-консультант", "торговый зал, выкладка"),
    ("Кассир", "касса, покупатели"),
    ("Водитель", "категория B, авто"),
    ("Курьер", "доставка, подработка"),
    ("Сварщик", "аргонная сварка, металл"),
    ("Электрик", "монтаж проводки"),
    ("Грузчик", "погрузка-разгрузка"),
    ("Автомеханик", "ремонт двигателя, автосервис"),
    ("Парикмахер", "стрижки, окрашивание"),
    ("Медсестра", "уколы, стационар"),
    ("Бухгалтер", "1С, первичка, отчётность"),
    ("Юрист", "договоры, суд"),
    ("Учитель математики", "подготовка к ЕГЭ"),
    ("Охранник", "охрана объекта"),
    ("Уборщица", "уборка помещений"),
    ("Дворник", "уборка территории"),
    ("Швея", "пошив, швейная машина"),
    ("Сантехник", "установка сантехники"),
]

hard = []
for sp, sk in PROFILES:
    doms = set(profile_domains(sp, sk))
    if doms & {"it", "office"}:
        continue
    for v in ROWS:
        if not IT_TITLE.search(v["title"] or ""):
            continue
        if matches_vacancy_relevance(sp, sk, v):
            kind = "🛒" if is_freelance_source(v["source"]) else "💼"
            hard.append(f"  {sp:22} × {kind}{v['source']:13} {v['title'][:50]}")

print(f"Проверено профилей×вакансий; IT-заголовков в БД: "
      f"{sum(1 for v in ROWS if IT_TITLE.search(v['title'] or ''))}")
print(f"\n🟥 ЖЁСТКИЙ МУСОР (не-IT профиль × IT-вакансия): {len(hard)}")
for h in hard:
    print(h)
if not hard:
    print("✅ ЧИСТО")
