"""Fuzz на ФРИЛАНС-БИРЖАХ: гиг «заказ ПРО сферу» (IT/дизайн/маркетинг, лишь
упоминающий венью) НЕ должен матчить профессию этого венью (класс ambient-FP,
фикс dcc0307). При этом легитимный фриланс-гиг профессии — ДОЛЖЕН матчиться."""
import sys; sys.path.insert(0, ".")
from bot.vacancy_filters import matches_vacancy_relevance as mv

FL = "fl.ru"  # источник — фриланс-биржа

# Профили (специальность, навыки как их пишет AI, сфера)
PROFILES = [
    ("Официант", "Работа в ресторанах, обслуживание посетителей", "food"),
    ("Повар", "Работа на кухне, приготовление блюд", "food"),
    ("Бармен", "Приготовление коктейлей, работа с кассой", "food"),
    ("Кондитер", "Выпечка тортов, работа с тестом", "food"),
    ("Продавец", "Работа в торговом зале, выкладка товара", "trade"),
    ("Кассир", "Работа с кассой, обслуживание покупателей", "trade"),
    ("Парикмахер", "Стрижки, окрашивание, работа с клиентами", "beauty"),
    ("Косметолог", "Уходовые процедуры, работа с клиентами", "beauty"),
    ("Массажист", "Лечебный массаж, работа с клиентами", "beauty"),
    ("Автомеханик", "Ремонт двигателей, работа в автосервисе", "auto"),
    ("Сварщик", "Аргонная сварка, работа с металлом", "manual"),
    ("Маляр", "Покраска стен, отделочные работы", "manual"),
    ("Медсестра", "Работа в стационаре, уколы, капельницы", "med"),
    ("Охранник", "Работа сутки через двое, охрана объекта", "sec_clean"),
    ("Водитель", "Работа на личном авто, категория B", "transport"),
    ("Бухгалтер", "1с, работа с первичной документацией", "office_fin"),
    # контроль — фриланс-дружелюбные профессии
    ("Дизайнер интерьера", "Дизайн-проекты, работа с заказчиками", "creative"),
    ("Фотограф", "Съёмка мероприятий, обработка фотографий", "creative"),
    ("Python разработчик", "Telegram бот, aiogram, API", "it"),
]

# GIG_CROSS: реальная работа — IT/дизайн/маркетинг/копирайтинг, но в заголовке
# упомянута ЧУЖАЯ сфера. Профессия этой сферы матчить НЕ должна.
GIG_CROSS = [
    ("Разработка сайта для ресторана", "верстка, 1С-Битрикс", "it", {"Официант", "Повар", "Бармен"}),
    ("Дизайн меню для кафе", "векторная графика, фото блюд", "design", {"Официант", "Повар"}),
    ("Создание лендинга для магазина одежды", "адаптив, js", "it", {"Продавец", "Кассир"}),
    ("SMM для салона красоты", "контент, таргет, reels", "marketing", {"Парикмахер", "Косметолог"}),
    ("Настройка Яндекс.Директа для автосервиса", "контекстная реклама", "marketing", {"Автомеханик"}),
    ("Копирайтинг для строительной компании", "тексты на сайт", "content", {"Сварщик", "Маляр"}),
    ("Логотип для медицинской клиники", "брендинг, иллюстрация", "design", {"Медсестра"}),
    ("Обслуживание сайта на 1С-Битрикс", "поддержка, доработки", "it", {"Официант"}),
    ("Мобильное приложение для доставки еды", "flutter, api", "it", {"Повар", "Водитель", "Курьер"}),
    ("Дизайн интерьера для парикмахерской", "3д-визуализация", "design", {"Парикмахер"}),
    ("Настройка CRM для клининговой компании", "amoCRM, интеграции", "it", {"Охранник"}),
    ("Видеомонтаж рекламы для автомойки", "after effects", "video", {"Автомеханик"}),
    ("Бот для приёма заказов в кафе", "telegram, python", "it", {"Официант", "Повар", "Бармен"}),
    ("Excel-таблица для учёта склада магазина", "макросы vba", "it", {"Продавец", "Кладовщик"}),
]

# GIG_OWN: легитимный фриланс-заказ для самой профессии — ДОЛЖЕН матчиться.
GIG_OWN = [
    ("Дизайн-проект интерьера квартиры", "планировка, 3д", "Дизайнер интерьера"),
    ("Фотосъёмка свадьбы", "репортаж, обработка", "Фотограф"),
    ("Разработка Telegram-бота на Python", "aiogram", "Python разработчик"),
    ("Приготовление тортов на заказ", "кондитерские изделия", "Кондитер"),
]

hard = []   # профессия матчит чужой гиг про её венью — БАГ (ambient-класс)
own = []    # своя профессия не взяла легитимный фриланс-гиг

for title, desc, gsph, must_not in GIG_CROSS:
    for sp, sk, psph in PROFILES:
        v = {"title": title, "description": desc, "source": FL}
        if mv(sp, sk, v) and sp in must_not:
            hard.append(f"{sp} × «{title}» ({gsph}-гиг)")

for title, desc, prof in GIG_OWN:
    sk = next((s for p, s, _ in PROFILES if p == prof), "")
    v = {"title": title, "description": desc, "source": FL}
    if not mv(prof, sk, v):
        own.append(f"{prof} ✗ «{title}»")

checks = len(GIG_CROSS) * len(PROFILES) + len(GIG_OWN)
print(f"Профилей: {len(PROFILES)}, cross-гигов: {len(GIG_CROSS)}, own-гигов: {len(GIG_OWN)}, проверок: {checks}")
print(f"\n🟥 HARD (профессия матчит чужой гиг про её венью): {len(hard)}")
for f in hard: print("   ", f)
print(f"\n🟦 OWN (свой фриланс-гиг не взяла): {len(own)}")
for f in own: print("   ", f)
print("\n" + ("✅ ЧИСТО" if not hard and not own else "❌ ЕСТЬ ПРОБЛЕМЫ"))
