vision-career/vacancies/main/management/commands/generate_recommended_vacancies.py

36 lines
1.4 KiB
Python

from django.core.management import BaseCommand
import asyncio
from vacancies.main.vector_store import vector_store
from vacancies.main.models import CustomerCV, RecommendedVacancy
from vacancies.main.bot import application
from telegram import InlineKeyboardButton, InlineKeyboardMarkup
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)
document = vector_store.similarity_search(
customer_cv.content,
k=1,
filter={"vacancy_id": {"$nin": list(recommended_vacancy_ids)}}
)[0]
recommendation, _ = RecommendedVacancy.objects.get_or_create(
customer=customer_cv.customer,
vacancy_id=document.metadata["vacancy_id"],
)
asyncio.run(application.bot.send_message(
chat_id=recommendation.customer.chat_id,
text=recommendation.vacancy.content,
reply_markup=InlineKeyboardMarkup([[
InlineKeyboardButton("Откликнуться", url=recommendation.vacancy.link),
]]),
))