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


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="Системный аналитик (Junior)",
        department="System Analysis",
        description="""
Участие в сборе и уточнении требований;
Описание пользовательских сценариев;
Подготовка функциональной документации;
Описание интеграционных взаимодействий под руководством старшего аналитика;
Работа с Jira и Confluence;
Участие в обсуждении задач с разработчиками и тестировщиками;
Поддержка документации по проекту.
""".strip(),
        requirements="""
Понимание основ системного анализа;
Базовое знание SDLC;
Навыки описания требований;
Базовое понимание REST API;
Знание UML будет преимуществом;
Опыт работы с Jira и Confluence;
Умение структурировать информацию;
Готовность обучаться и работать в команде.
""".strip(),
        skills=[
            "System Analysis",
            "Requirements Analysis",
            "SDLC",
            "REST API",
            "UML",
            "Jira",
            "Confluence",
            "User Stories",
            "Documentation",
            "Teamwork"
        ],
        is_active=True,
    )

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

    resumes_data = [
        {
            "vk_user_id": "800001",
            "full_name": "Андреева Софья Михайловна",
            "level": "Junior",
            "match_level": "high",
            "experience_years": 1,
            "skills": ["System Analysis", "Requirements Analysis", "Jira", "Confluence", "REST API", "UML"],
            "raw_text": """
Андреева Софья Михайловна
Junior системный аналитик

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

Участвовала в уточнении требований для внутреннего сервиса компании. Описывала пользовательские сценарии, готовила документацию в Confluence, работала с задачами в Jira. Под руководством старшего аналитика участвовала в описании REST API и простых UML-диаграмм.

Навыки: System Analysis, Requirements Analysis, Jira, Confluence, REST API, UML.
"""
        },
        {
            "vk_user_id": "800002",
            "full_name": "Громов Павел Андреевич",
            "level": "Trainee",
            "match_level": "medium",
            "experience_years": 0.4,
            "skills": ["SDLC", "User Stories", "Jira", "Documentation"],
            "raw_text": """
Громов Павел Андреевич
Стажер системного аналитика

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

Проходил стажировку в проектной команде. Помогал фиксировать требования после встреч, оформлял простые user stories и вел документацию в Confluence. REST API и UML изучал на учебных проектах.

Навыки: SDLC, User Stories, Jira, Documentation.
"""
        },
        {
            "vk_user_id": "800003",
            "full_name": "Коваленко Илья Сергеевич",
            "level": "Middle",
            "match_level": "high",
            "experience_years": 2.5,
            "skills": ["System Analysis", "REST API", "UML", "SQL", "Jira", "Confluence"],
            "raw_text": """
Коваленко Илья Сергеевич
Системный аналитик

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

Описывал интеграционные взаимодействия между CRM и внутренними сервисами. Готовил SRS, UML-диаграммы, описывал REST API и участвовал в постановке задач разработчикам. Для junior-позиции имеет запас по опыту.

Навыки: System Analysis, REST API, UML, SQL, Jira, Confluence.
"""
        },
        {
            "vk_user_id": "800004",
            "full_name": "Миронова Алина Олеговна",
            "level": "Junior",
            "match_level": "high",
            "experience_years": 1.2,
            "skills": ["Requirements Analysis", "UML", "Jira", "Confluence", "User Stories"],
            "raw_text": """
Миронова Алина Олеговна
Junior системный аналитик

Опыт работы: 1 год 2 месяца.

Работала на проекте по развитию личного кабинета клиента. Уточняла требования, описывала пользовательские сценарии, поддерживала документацию и участвовала в обсуждениях с разработчиками. Имеет базовое понимание REST API.

Навыки: Requirements Analysis, UML, Jira, Confluence, User Stories.
"""
        },
        {
            "vk_user_id": "800005",
            "full_name": "Тимофеев Денис Максимович",
            "level": "Low",
            "match_level": "low",
            "experience_years": 2,
            "skills": ["Sales", "CRM", "Excel"],
            "raw_text": """
Тимофеев Денис Максимович
Менеджер по продажам

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

Работал с клиентами, вел CRM и готовил коммерческие предложения. Опыта системного анализа, описания требований, REST API и UML нет.

Навыки: Sales, CRM, Excel.
"""
        },
        {
            "vk_user_id": "800006",
            "full_name": "Егорова Дарья Викторовна",
            "level": "Junior",
            "match_level": "high",
            "experience_years": 0.9,
            "skills": ["System Analysis", "SDLC", "REST API", "Jira", "Documentation"],
            "raw_text": """
Егорова Дарья Викторовна
Junior системный аналитик

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

Участвовала в проекте автоматизации заявок пользователей. Описывала требования, фиксировала вопросы к бизнес-заказчику, работала с Jira и Confluence. Помогала старшему аналитику готовить описание API-методов.

Навыки: System Analysis, SDLC, REST API, Jira, Documentation.
"""
        },
        {
            "vk_user_id": "800007",
            "full_name": "Николаев Артем Павлович",
            "level": "Developer",
            "match_level": "medium",
            "experience_years": 1.5,
            "skills": ["Python", "REST API", "SQL", "Git"],
            "raw_text": """
Николаев Артем Павлович
Junior backend-разработчик

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

Разрабатывал backend-сервисы на Python, работал с REST API и SQL. Участвовал в обсуждении требований с аналитиком, но сам системным анализом и документацией занимался редко. Может быть полезен как технически ориентированный junior-аналитик.

Навыки: Python, REST API, SQL, Git.
"""
        },
        {
            "vk_user_id": "800008",
            "full_name": "Савельева Кристина Игоревна",
            "level": "Trainee",
            "match_level": "medium",
            "experience_years": 0.3,
            "skills": ["UML", "SDLC", "Confluence", "User Stories"],
            "raw_text": """
Савельева Кристина Игоревна
Стажер бизнес-/системного аналитика

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

В рамках стажировки помогала описывать user stories и простые UML-диаграммы. Изучала SDLC и правила ведения документации. Коммерческого опыта самостоятельной работы с API пока нет.

Навыки: UML, SDLC, Confluence, User Stories.
"""
        },
        {
            "vk_user_id": "800009",
            "full_name": "Белякова Ольга Романовна",
            "level": "Low",
            "match_level": "low",
            "experience_years": 1,
            "skills": ["HR", "Recruitment", "Communication"],
            "raw_text": """
Белякова Ольга Романовна
HR-специалист

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

Занималась подбором персонала, коммуникацией с кандидатами и ведением HR-документации. Опыта системного анализа и описания технических требований нет.

Навыки: HR, Recruitment, Communication.
"""
        },
        {
            "vk_user_id": "800010",
            "full_name": "Фомин Кирилл Дмитриевич",
            "level": "Junior",
            "match_level": "high",
            "experience_years": 1.1,
            "skills": ["System Analysis", "Requirements Analysis", "REST API", "Jira", "Confluence", "UML"],
            "raw_text": """
Фомин Кирилл Дмитриевич
Junior системный аналитик

Опыт работы: 1 год 1 месяц.

Работал в команде разработки веб-сервиса. Уточнял требования, описывал сценарии использования, готовил документацию в Confluence и ставил задачи в Jira. Имеет базовый опыт описания REST API и построения UML sequence diagram.

Навыки: System Analysis, Requirements Analysis, REST API, Jira, Confluence, UML.
"""
        },
    ]

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