Загрузка данных


import sys
import os

sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), "..")))

from backend.app import app
from backend.db import db
from backend.models import Candidate, Resume, Vacancy


def create_candidate(vk_user_id, full_name, email, phone):
    candidate = Candidate(
        vk_user_id=vk_user_id,
        full_name=full_name,
        email=email,
        phone=phone,
    )
    db.session.add(candidate)
    db.session.flush()
    return candidate


def create_resume(candidate, vacancy, file_name, raw_text, parsed_json):
    resume = Resume(
        candidate_id=candidate.id,
        vacancy_id=vacancy.id,
        file_name=file_name,
        raw_text=raw_text.strip(),
        parsed_json=parsed_json,
    )
    db.session.add(resume)
    db.session.flush()
    return resume


with app.app_context():

    vacancy = Vacancy(
        title="AI-инженер",
        department="AI Research & Engineering",
        description="""
Разработка AI/ML-решений для внутренних и клиентских сервисов;
Интеграция LLM и NLP-моделей в backend-системы;
Работа с пайплайнами обработки данных;
Разработка сервисов на Python;
Подготовка prompt-инструкций и настройка inference;
Оценка качества ML-моделей;
Участие в проектировании AI-архитектуры;
Взаимодействие с аналитиками и backend-разработчиками.
""".strip(),
        requirements="""
Опыт разработки на Python;
Понимание основ машинного обучения и NLP;
Опыт работы с LLM или Hugging Face;
Навыки работы с REST API;
Опыт работы с Pandas и обработкой данных;
Понимание embeddings, RAG и vector search будет преимуществом;
Опыт работы с Docker и Git;
Навыки проектирования backend-сервисов.
""".strip(),
        skills=[
            "Python",
            "Machine Learning",
            "NLP",
            "LLM",
            "Hugging Face",
            "REST API",
            "Pandas",
            "RAG",
            "Docker",
            "Git"
        ],
        is_active=True,
    )

    db.session.add(vacancy)
    db.session.flush()

    resumes_data = [
        {
            "vk_user_id": "1000001",
            "full_name": "Семенов Артем Игоревич",
            "level": "Senior",
            "match_level": "high",
            "experience_years": 6,
            "skills": ["Python", "LLM", "RAG", "Hugging Face", "Docker", "REST API"],
            "raw_text": """
Семенов Артем Игоревич
AI Engineer

Опыт работы: 6 лет.

Разрабатывал AI-сервисы на Python, интегрировал LLM через Hugging Face API, реализовывал RAG-пайплайны и vector search. Участвовал в разработке интеллектуальных чат-ботов и систем анализа текста.

Навыки: Python, LLM, RAG, Hugging Face, Docker, REST API.
"""
        },
        {
            "vk_user_id": "1000002",
            "full_name": "Кузнецова Мария Андреевна",
            "level": "Middle",
            "match_level": "high",
            "experience_years": 4,
            "skills": ["Python", "Machine Learning", "Pandas", "NLP", "Git"],
            "raw_text": """
Кузнецова Мария Андреевна
ML Engineer

Опыт работы: 4 года.

Работала с NLP-моделями, занималась обработкой текстовых данных и обучением ML-моделей для классификации и анализа документов. Разрабатывала backend-сервисы для ML-приложений.

Навыки: Python, Machine Learning, Pandas, NLP, Git.
"""
        },
        {
            "vk_user_id": "1000003",
            "full_name": "Фролов Никита Сергеевич",
            "level": "Senior",
            "match_level": "high",
            "experience_years": 7,
            "skills": ["LLM", "Transformers", "RAG", "Embeddings", "FastAPI", "Docker"],
            "raw_text": """
Фролов Никита Сергеевич
LLM Engineer

Опыт работы: 7 лет.

Разрабатывал сервисы на основе трансформеров и LLM, занимался embeddings и retrieval-системами. Реализовывал API для генерации текста и анализа документов.

Навыки: LLM, Transformers, RAG, Embeddings, FastAPI, Docker.
"""
        },
        {
            "vk_user_id": "1000004",
            "full_name": "Тарасова Виктория Олеговна",
            "level": "Middle",
            "match_level": "medium",
            "experience_years": 3,
            "skills": ["Python", "Pandas", "SQL", "Data Analysis", "Machine Learning"],
            "raw_text": """
Тарасова Виктория Олеговна
Data Analyst / Junior ML Engineer

Опыт работы: 3 года.

Занималась аналитикой данных, разрабатывала ML-модели прогнозирования и обработки текстов. Имеет базовый опыт интеграции AI-моделей в приложения.

Навыки: Python, Pandas, SQL, Data Analysis, Machine Learning.
"""
        },
        {
            "vk_user_id": "1000005",
            "full_name": "Жуков Денис Владимирович",
            "level": "Low",
            "match_level": "low",
            "experience_years": 1,
            "skills": ["HTML", "CSS", "JavaScript"],
            "raw_text": """
Жуков Денис Владимирович
Frontend-разработчик

Опыт работы: 1 год.

Разрабатывал пользовательские интерфейсы на JavaScript. Опыта работы с AI, NLP или backend-сервисами нет.

Навыки: HTML, CSS, JavaScript.
"""
        },
        {
            "vk_user_id": "1000006",
            "full_name": "Миронова Елена Павловна",
            "level": "Senior",
            "match_level": "high",
            "experience_years": 8,
            "skills": ["Python", "NLP", "Hugging Face", "PyTorch", "RAG", "Docker"],
            "raw_text": """
Миронова Елена Павловна
Senior AI Engineer

Опыт работы: 8 лет.

Разрабатывала NLP-сервисы и conversational AI-системы. Работала с Hugging Face, PyTorch и retrieval-системами. Настраивала inference-пайплайны и интеграции LLM в корпоративные сервисы.

Навыки: Python, NLP, Hugging Face, PyTorch, RAG, Docker.
"""
        },
        {
            "vk_user_id": "1000007",
            "full_name": "Алексеев Максим Ильич",
            "level": "Middle",
            "match_level": "medium",
            "experience_years": 3,
            "skills": ["Python", "FastAPI", "REST API", "Docker", "Git"],
            "raw_text": """
Алексеев Максим Ильич
Backend Developer

Опыт работы: 3 года.

Разрабатывал backend-сервисы на Python и FastAPI. Имеет опыт интеграции внешних AI API и работы с Docker.

Навыки: Python, FastAPI, REST API, Docker, Git.
"""
        },
        {
            "vk_user_id": "1000008",
            "full_name": "Голубева Алина Дмитриевна",
            "level": "Senior",
            "match_level": "high",
            "experience_years": 6,
            "skills": ["Machine Learning", "LLM", "Embeddings", "RAG", "Vector Search", "Python"],
            "raw_text": """
Голубева Алина Дмитриевна
AI/ML Engineer

Опыт работы: 6 лет.

Разрабатывала retrieval-системы и AI-модули для поиска информации. Работала с embeddings, vector search и LLM-интеграциями.

Навыки: Machine Learning, LLM, Embeddings, RAG, Vector Search, Python.
"""
        },
        {
            "vk_user_id": "1000009",
            "full_name": "Лебедев Игорь Романович",
            "level": "Low",
            "match_level": "low",
            "experience_years": 2,
            "skills": ["Excel", "Support", "Communication"],
            "raw_text": """
Лебедев Игорь Романович
Специалист поддержки

Опыт работы: 2 года.

Работал в технической поддержке и сопровождении пользователей. Не имеет опыта разработки AI-систем и backend-сервисов.

Навыки: Excel, Support, Communication.
"""
        },
        {
            "vk_user_id": "1000010",
            "full_name": "Ершов Кирилл Александрович",
            "level": "Senior",
            "match_level": "high",
            "experience_years": 9,
            "skills": ["Python", "LLM", "NLP", "Transformers", "PyTorch", "REST API"],
            "raw_text": """
Ершов Кирилл Александрович
Senior AI Engineer

Опыт работы: 9 лет.

Разрабатывал NLP и LLM-решения для автоматизации клиентских сервисов. Работал с transformers, inference API и AI-архитектурой backend-систем.

Навыки: Python, LLM, NLP, Transformers, PyTorch, REST API.
"""
        },
    ]

    for item in resumes_data:
        candidate = create_candidate(
            vk_user_id=item["vk_user_id"],
            full_name=item["full_name"],
            email=f'{item["vk_user_id"]}@example.com',
            phone="+375290000000",
        )

        create_resume(
            candidate=candidate,
            vacancy=vacancy,
            file_name=f'{item["vk_user_id"]}_resume.txt',
            raw_text=item["raw_text"],
            parsed_json={
                "full_name": item["full_name"],
                "target_vacancy_id": vacancy.id,
                "target_vacancy": vacancy.title,
                "level": item["level"],
                "match_level": item["match_level"],
                "experience_years": item["experience_years"],
                "skills": item["skills"],
            }
        )

    db.session.commit()

    print("✅ AI Engineer dataset added")
    print("Vacancies:", Vacancy.query.count())
    print("Candidates:", Candidate.query.count())
    print("Resumes:", Resume.query.count())

    print("New Vacancy ID:", vacancy.id)
    print("Resume IDs:", [r.id for r in vacancy.resumes])