vision-career/vacancies/main/management/commands/generate_recommended_vacancies.py
estromenko d0131ab2a1
All checks were successful
release / docker (push) Successful in 36s
Improve vacancies indexing and exclude more cvs from vacancy list
2025-11-03 18:09:11 +03:00

44 lines
1.6 KiB
Python

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):
asyncio.run(self.ahandle(*args, **options))
async def ahandle(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)])
result = search_similarities(query_filter, customer_cv.id)
if not result:
continue
search_result_id, vacancy_content, link = result
recommendation = RecommendedVacancy.objects.create(
customer=customer_cv.customer,
vacancy_id=search_result_id,
)
await application.bot.send_message(
chat_id=recommendation.customer.chat_id,
text=vacancy_content,
reply_markup=InlineKeyboardMarkup([[
InlineKeyboardButton("Откликнуться", url=link),
]]),
)