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


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="Python Backend Developer (Middle)",
        department="Backend Development",

        description="""
Разработка backend-сервисов на Python;
Создание REST API;
Работа с PostgreSQL;
Интеграция внешних сервисов;
Оптимизация производительности;
Работа с Docker и Git;
Участие в code review и проектировании архитектуры.
""".strip(),

        requirements="""
Опыт backend-разработки от 2 лет;
Уверенное знание Python;
Опыт работы с FastAPI или Flask;
Понимание REST API;
Опыт работы с SQL и PostgreSQL;
Навыки работы с Git;
Базовые знания Docker;
Понимание принципов OOP и SOLID.
""".strip(),

        skills=[
            "Python",
            "FastAPI",
            "Flask",
            "REST API",
            "PostgreSQL",
            "SQL",
            "Docker",
            "Git",
            "OOP",
            "SOLID"
        ],

        is_active=True,
    )

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

    resumes_data = [

        {
            "vk_user_id": "300001",
            "full_name": "Ковалев Денис Андреевич",
            "level": "Middle",
            "match_level": "high",
            "experience_years": 3,

            "skills": [
                "Python",
                "FastAPI",
                "PostgreSQL",
                "Docker",
                "REST API",
                "Git"
            ],

            "raw_text": """
Ковалев Денис Андреевич
Python Backend Developer

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

Разрабатывал backend-сервисы на FastAPI, проектировал REST API, работал с PostgreSQL и Docker. Участвовал в code review и оптимизации производительности.

Навыки: Python, FastAPI, PostgreSQL, Docker, REST API, Git.
"""
        },

        {
            "vk_user_id": "300002",
            "full_name": "Мельникова Алина Сергеевна",
            "level": "Junior",
            "match_level": "medium",
            "experience_years": 1,

            "skills": [
                "Python",
                "Flask",
                "SQL",
                "Git"
            ],

            "raw_text": """
Мельникова Алина Сергеевна
Junior Python Developer

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

Разрабатывала внутренние сервисы на Flask, писала SQL-запросы и работала с Git. Есть базовое понимание REST API и Docker.

Навыки: Python, Flask, SQL, Git.
"""
        },

        {
            "vk_user_id": "300003",
            "full_name": "Гаврилов Артем Ильич",
            "level": "Senior",
            "match_level": "high",
            "experience_years": 7,

            "skills": [
                "Python",
                "FastAPI",
                "Microservices",
                "Docker",
                "PostgreSQL",
                "SOLID"
            ],

            "raw_text": """
Гаврилов Артем Ильич
Senior Backend Engineer

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

Проектировал микросервисную архитектуру, разрабатывал высоконагруженные backend-системы на FastAPI и Python. Работал с Docker, PostgreSQL и CI/CD.

Навыки: Python, FastAPI, Microservices, Docker, PostgreSQL, SOLID.
"""
        },

        {
            "vk_user_id": "300004",
            "full_name": "Фомина Екатерина Олеговна",
            "level": "Middle",
            "match_level": "high",
            "experience_years": 4,

            "skills": [
                "Python",
                "Flask",
                "REST API",
                "PostgreSQL",
                "Docker"
            ],

            "raw_text": """
Фомина Екатерина Олеговна
Backend Developer

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

Разрабатывала REST API для внутренних сервисов компании. Работала с Flask, PostgreSQL и Docker. Участвовала в проектировании backend-логики.

Навыки: Python, Flask, REST API, PostgreSQL, Docker.
"""
        },

        {
            "vk_user_id": "300005",
            "full_name": "Сидоров Павел Игоревич",
            "level": "Low",
            "match_level": "low",
            "experience_years": 2,

            "skills": [
                "HTML",
                "CSS",
                "JavaScript"
            ],

            "raw_text": """
Сидоров Павел Игоревич
Frontend Developer

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

Разрабатывал интерфейсы на JavaScript. Backend-разработкой не занимался.

Навыки: HTML, CSS, JavaScript.
"""
        },

        {
            "vk_user_id": "300006",
            "full_name": "Тарасова Мария Дмитриевна",
            "level": "Middle",
            "match_level": "high",
            "experience_years": 3,

            "skills": [
                "Python",
                "FastAPI",
                "SQLAlchemy",
                "PostgreSQL",
                "Git"
            ],

            "raw_text": """
Тарасова Мария Дмитриевна
Python Developer

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

Разрабатывала backend-приложения на FastAPI, использовала SQLAlchemy и PostgreSQL. Работала с Git и Docker.

Навыки: Python, FastAPI, SQLAlchemy, PostgreSQL, Git.
"""
        },

        {
            "vk_user_id": "300007",
            "full_name": "Носов Кирилл Алексеевич",
            "level": "Trainee",
            "match_level": "medium",
            "experience_years": 0.5,

            "skills": [
                "Python",
                "Flask",
                "SQLite"
            ],

            "raw_text": """
Носов Кирилл Алексеевич
Стажер Python Developer

Опыт работы: 6 месяцев.

Разрабатывал учебные backend-проекты на Flask и SQLite. Коммерческий опыт ограничен.

Навыки: Python, Flask, SQLite.
"""
        },

        {
            "vk_user_id": "300008",
            "full_name": "Комаров Илья Евгеньевич",
            "level": "DevOps",
            "match_level": "medium",
            "experience_years": 4,

            "skills": [
                "Docker",
                "Linux",
                "CI/CD",
                "Python"
            ],

            "raw_text": """
Комаров Илья Евгеньевич
DevOps Engineer

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

Настраивал CI/CD и Docker-инфраструктуру. Использовал Python для автоматизации процессов. Опыт backend-разработки ограничен.

Навыки: Docker, Linux, CI/CD, Python.
"""
        },

        {
            "vk_user_id": "300009",
            "full_name": "Баранова Ольга Ильинична",
            "level": "Middle",
            "match_level": "high",
            "experience_years": 5,

            "skills": [
                "Python",
                "FastAPI",
                "REST API",
                "Docker",
                "PostgreSQL",
                "OOP"
            ],

            "raw_text": """
Баранова Ольга Ильинична
Backend Engineer

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

Разрабатывала REST API и backend-сервисы на Python и FastAPI. Работала с Docker, PostgreSQL и архитектурой приложений.

Навыки: Python, FastAPI, REST API, Docker, PostgreSQL, OOP.
"""
        },

        {
            "vk_user_id": "300010",
            "full_name": "Ершов Максим Викторович",
            "level": "Low",
            "match_level": "low",
            "experience_years": 1,

            "skills": [
                "Excel",
                "Support",
                "Communication"
            ],

            "raw_text": """
Ершов Максим Викторович
Специалист поддержки

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

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

Навыки: Excel, Support, Communication.
"""
        },
    ]

    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("✅ Python Backend 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])