import asyncio from django.core.management import BaseCommand from vacancies.main.vector_store import search_similarities from vacancies.main.models import CustomerCV, RecommendedVacancy from vacancies.main.bot import application from telegram import InlineKeyboardButton, InlineKeyboardMarkup from qdrant_client.models import Filter, HasIdCondition class Command(BaseCommand): help = "Generates new recommended vacancies" def handle(self, *args, **options): customer_cvs = CustomerCV.objects.all() for customer_cv in customer_cvs: recommended_vacancy_ids = RecommendedVacancy.objects.filter( customer=customer_cv.customer, ).values_list('vacancy_id', flat=True) query_filter = Filter(must_not=[HasIdCondition(has_id=recommended_vacancy_ids)]) search_result_id, vacancy_content = search_similarities(query_filter, customer_cv.id) recommendation = RecommendedVacancy.objects.create( customer=customer_cv.customer, vacancy_id=search_result_id, ) asyncio.run(application.bot.send_message( chat_id=recommendation.customer.chat_id, text=vacancy_content, reply_markup=InlineKeyboardMarkup([[ InlineKeyboardButton("Откликнуться", url=recommendation.vacancy.link), ]]), ))