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


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="Системный администратор (Middle)",
        department="IT Infrastructure",

        description="""
Администрирование серверной инфраструктуры;
Поддержка Windows и Linux серверов;
Настройка сетевого оборудования;
Мониторинг доступности сервисов;
Резервное копирование данных;
Управление учетными записями пользователей;
Диагностика и устранение инцидентов.
""".strip(),

        requirements="""
Опыт работы системным администратором от 2 лет;
Знание Windows Server и Linux;
Опыт настройки сетевого оборудования;
Понимание TCP/IP;
Навыки работы с Active Directory;
Опыт резервного копирования;
Базовые знания виртуализации будут преимуществом.
""".strip(),

        skills=[
            "Linux",
            "Windows Server",
            "Active Directory",
            "TCP/IP",
            "Networking",
            "VMware",
            "Docker",
            "Bash",
            "Backup",
            "Monitoring"
        ],

        is_active=True,
    )

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

    resumes_data = [

        {
            "vk_user_id": "700001",
            "full_name": "Федоров Андрей Сергеевич",
            "level": "Middle",
            "match_level": "high",
            "experience_years": 4,

            "skills": [
                "Linux",
                "Windows Server",
                "TCP/IP",
                "Active Directory",
                "Backup"
            ],

            "raw_text": """
Федоров Андрей Сергеевич
Системный администратор

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

Администрировал Windows и Linux серверы, настраивал резервное копирование и Active Directory, поддерживал сетевую инфраструктуру компании.

Навыки: Linux, Windows Server, TCP/IP, Active Directory, Backup.
"""
        },

        {
            "vk_user_id": "700002",
            "full_name": "Мельникова Ирина Павловна",
            "level": "Junior",
            "match_level": "medium",
            "experience_years": 1,

            "skills": [
                "Windows Server",
                "Networking",
                "TCP/IP"
            ],

            "raw_text": """
Мельникова Ирина Павловна
Junior System Administrator

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

Поддерживала офисную инфраструктуру и рабочие станции пользователей, работала с Windows Server и базовой сетевой настройкой.

Навыки: Windows Server, Networking, TCP/IP.
"""
        },

        {
            "vk_user_id": "700003",
            "full_name": "Калинин Максим Игоревич",
            "level": "Senior",
            "match_level": "high",
            "experience_years": 8,

            "skills": [
                "Linux",
                "VMware",
                "Docker",
                "Monitoring",
                "Bash"
            ],

            "raw_text": """
Калинин Максим Игоревич
Senior System Administrator

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

Проектировал серверную инфраструктуру, администрировал Linux-системы, внедрял виртуализацию VMware и мониторинг сервисов.

Навыки: Linux, VMware, Docker, Monitoring, Bash.
"""
        },

        {
            "vk_user_id": "700004",
            "full_name": "Ершова Дарья Алексеевна",
            "level": "Middle",
            "match_level": "high",
            "experience_years": 3,

            "skills": [
                "Active Directory",
                "Windows Server",
                "Backup",
                "Networking"
            ],

            "raw_text": """
Ершова Дарья Алексеевна
Системный администратор

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

Работала с Active Directory, настраивала резервное копирование и поддерживала сетевую инфраструктуру компании.

Навыки: Active Directory, Windows Server, Backup, Networking.
"""
        },

        {
            "vk_user_id": "700005",
            "full_name": "Лапшин Денис Викторович",
            "level": "Low",
            "match_level": "low",
            "experience_years": 2,

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

            "raw_text": """
Лапшин Денис Викторович
Frontend-разработчик

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

Разрабатывал пользовательские интерфейсы на React и JavaScript.

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

        {
            "vk_user_id": "700006",
            "full_name": "Кузнецова Алина Сергеевна",
            "level": "Middle",
            "match_level": "high",
            "experience_years": 5,

            "skills": [
                "Linux",
                "Docker",
                "Monitoring",
                "TCP/IP"
            ],

            "raw_text": """
Кузнецова Алина Сергеевна
System Administrator

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

Поддерживала Linux-инфраструктуру, настраивала Docker-контейнеры и систему мониторинга сервисов.

Навыки: Linux, Docker, Monitoring, TCP/IP.
"""
        },

        {
            "vk_user_id": "700007",
            "full_name": "Павлов Кирилл Евгеньевич",
            "level": "Trainee",
            "match_level": "medium",
            "experience_years": 0.5,

            "skills": [
                "Linux",
                "Windows",
                "TCP/IP"
            ],

            "raw_text": """
Павлов Кирилл Евгеньевич
Стажер системного администратора

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

Проходил стажировку в IT-отделе, занимался настройкой рабочих станций и базовой поддержкой пользователей.

Навыки: Linux, Windows, TCP/IP.
"""
        },

        {
            "vk_user_id": "700008",
            "full_name": "Николаева Мария Олеговна",
            "level": "Middle",
            "match_level": "high",
            "experience_years": 4,

            "skills": [
                "Windows Server",
                "Active Directory",
                "VMware",
                "Backup"
            ],

            "raw_text": """
Николаева Мария Олеговна
Системный администратор

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

Администрировала Windows Server, Active Directory и VMware-инфраструктуру компании.

Навыки: Windows Server, Active Directory, VMware, Backup.
"""
        },

        {
            "vk_user_id": "700009",
            "full_name": "Титов Артем Андреевич",
            "level": "Low",
            "match_level": "low",
            "experience_years": 1,

            "skills": [
                "Sales",
                "Excel",
                "CRM"
            ],

            "raw_text": """
Титов Артем Андреевич
Менеджер по продажам

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

Работал с CRM и клиентской базой, занимался продажами IT-услуг.

Навыки: Sales, Excel, CRM.
"""
        },

        {
            "vk_user_id": "700010",
            "full_name": "Сорокин Владислав Дмитриевич",
            "level": "Middle",
            "match_level": "high",
            "experience_years": 6,

            "skills": [
                "Linux",
                "Bash",
                "Networking",
                "Monitoring",
                "Docker"
            ],

            "raw_text": """
Сорокин Владислав Дмитриевич
Senior System Administrator

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

Поддерживал серверную инфраструктуру, автоматизировал задачи с помощью Bash-скриптов и занимался мониторингом сервисов.

Навыки: Linux, Bash, Networking, Monitoring, Docker.
"""
        },
    ]

    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("✅ System Administrator 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])