from django.db import models from pydantic import BaseModel class Customer(models.Model): telegram_id = models.IntegerField() chat_id = models.IntegerField() username = models.CharField(max_length=64) created_at = models.DateTimeField(auto_now_add=True) objects = models.Manager() def __str__(self): return self.username class Meta: db_table = "customers" class CustomerCV(models.Model): customer = models.OneToOneField(Customer, on_delete=models.CASCADE) content = models.TextField() created_at = models.DateTimeField(auto_now_add=True) objects = models.Manager() def __str__(self): return self.customer.username class Meta: db_table = "customer_vcs" class Vacancy(models.Model): content = models.TextField() link = models.URLField(unique=True) created_at = models.DateTimeField(auto_now_add=True) objects = models.Manager() def __str__(self): return self.content[:100] class Meta: verbose_name_plural = 'Vacancies' db_table = "vacancies" class RecommendedVacancy(models.Model): customer = models.ForeignKey(Customer, on_delete=models.CASCADE) vacancy = models.ForeignKey(Vacancy, on_delete=models.CASCADE) created_at = models.DateTimeField(auto_now_add=True) objects = models.Manager() def __str__(self): return f'{self.customer.username} -> {self.vacancy.content}' class Meta: verbose_name_plural = 'Recommended Vacancies' db_table = "recommended_vacancies" class VacancyFeatures(BaseModel): job_title: str | None = None # Должность employment_type: str | None = None # Тип занятости work_format: str | None = None # Формат работы experience: str | None = None # Опыт работы position_level: str | None = None # Уровень позиции industry: str | None = None # Отрасль / Сфера деятельности tech_stack: list[str] | None = None # Технологический стек / Ключевые навыки location: str | None = None # География salary_range: str | None = None # Зарплатные ожидания / вилка languages: list[str] | None = None # Языки education: str | None = None # Образование schedule: str | None = None # График работы additional_requirements: list[str] | None = None # Дополнительные предпочтения / требования