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


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="Архитектор решений",
        department="Architecture Office",
        description="""
Проектирование архитектуры корпоративных ИТ-решений;
Анализ бизнес- и технических требований;
Выбор технологического стека;
Проектирование интеграций между системами;
Подготовка архитектурной документации;
Оценка технических рисков;
Взаимодействие с аналитиками, разработчиками, DevOps и бизнес-заказчиками;
Участие в архитектурных комитетах и согласовании проектных решений.
""".strip(),
        requirements="""
Опыт работы архитектором решений или ведущим системным аналитиком от 3 лет;
Понимание микросервисной архитектуры;
Опыт проектирования REST API и интеграционных сценариев;
Знание баз данных и принципов масштабирования;
Понимание cloud/native подходов будет преимуществом;
Опыт подготовки архитектурной документации;
Навыки оценки технических рисков;
Умение согласовывать решения с бизнесом и техническими командами.
""".strip(),
        skills=[
            "Solution Architecture",
            "Microservices",
            "REST API",
            "System Design",
            "Integration",
            "Cloud",
            "Databases",
            "Scalability",
            "Architecture Documentation",
            "Risk Assessment"
        ],
        is_active=True,
    )

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

    resumes_data = [
        {
            "vk_user_id": "900001",
            "full_name": "Рябов Алексей Викторович",
            "level": "Senior",
            "match_level": "high",
            "experience_years": 7,
            "skills": ["Solution Architecture", "Microservices", "REST API", "Integration", "Cloud", "System Design"],
            "raw_text": """
Рябов Алексей Викторович
Архитектор решений

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

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

Навыки: Solution Architecture, Microservices, REST API, Integration, Cloud, System Design.
"""
        },
        {
            "vk_user_id": "900002",
            "full_name": "Климова Екатерина Андреевна",
            "level": "Middle",
            "match_level": "medium",
            "experience_years": 3,
            "skills": ["System Analysis", "REST API", "UML", "Integration", "Databases"],
            "raw_text": """
Климова Екатерина Андреевна
Системный аналитик

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

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

Навыки: System Analysis, REST API, UML, Integration, Databases.
"""
        },
        {
            "vk_user_id": "900003",
            "full_name": "Маслов Дмитрий Сергеевич",
            "level": "Senior",
            "match_level": "high",
            "experience_years": 9,
            "skills": ["Solution Architecture", "System Design", "Scalability", "Databases", "Microservices", "Risk Assessment"],
            "raw_text": """
Маслов Дмитрий Сергеевич
Solution Architect

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

Проектировал высоконагруженные B2B-системы, отвечал за масштабируемость, отказоустойчивость и интеграции. Работал с микросервисной архитектурой, базами данных и архитектурной документацией. Проводил оценку технических рисков перед запуском крупных изменений.

Навыки: Solution Architecture, System Design, Scalability, Databases, Microservices, Risk Assessment.
"""
        },
        {
            "vk_user_id": "900004",
            "full_name": "Павлова Ирина Олеговна",
            "level": "Senior",
            "match_level": "high",
            "experience_years": 6,
            "skills": ["Architecture Documentation", "Integration", "REST API", "Cloud", "Microservices"],
            "raw_text": """
Павлова Ирина Олеговна
Архитектор решений

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

Участвовала в проектировании цифровой платформы для клиентского обслуживания. Описывала архитектурные решения, интеграции с внешними системами и API-контракты. Работала с cloud-инфраструктурой и микросервисным подходом.

Навыки: Architecture Documentation, Integration, REST API, Cloud, Microservices.
"""
        },
        {
            "vk_user_id": "900005",
            "full_name": "Емельянов Кирилл Павлович",
            "level": "Low",
            "match_level": "low",
            "experience_years": 2,
            "skills": ["HTML", "CSS", "JavaScript"],
            "raw_text": """
Емельянов Кирилл Павлович
Frontend-разработчик

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

Разрабатывал пользовательские интерфейсы на JavaScript, HTML и CSS. Опыта проектирования архитектуры корпоративных систем и интеграционных решений нет.

Навыки: HTML, CSS, JavaScript.
"""
        },
        {
            "vk_user_id": "900006",
            "full_name": "Соколова Марина Игоревна",
            "level": "Senior",
            "match_level": "high",
            "experience_years": 8,
            "skills": ["Solution Architecture", "Cloud", "Microservices", "DevOps", "System Design", "Integration"],
            "raw_text": """
Соколова Марина Игоревна
Cloud Solution Architect

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

Проектировала cloud-native решения, участвовала в миграции монолитных систем в микросервисную архитектуру. Работала с DevOps-командами, описывала архитектурные ограничения и интеграции между сервисами.

Навыки: Solution Architecture, Cloud, Microservices, DevOps, System Design, Integration.
"""
        },
        {
            "vk_user_id": "900007",
            "full_name": "Волков Артем Николаевич",
            "level": "Middle",
            "match_level": "medium",
            "experience_years": 4,
            "skills": ["Backend", "REST API", "Databases", "Docker", "System Design"],
            "raw_text": """
Волков Артем Николаевич
Backend Developer

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

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

Навыки: Backend, REST API, Databases, Docker, System Design.
"""
        },
        {
            "vk_user_id": "900008",
            "full_name": "Лазарева Ольга Дмитриевна",
            "level": "Senior",
            "match_level": "high",
            "experience_years": 10,
            "skills": ["Enterprise Architecture", "Solution Architecture", "Integration", "Risk Assessment", "Architecture Documentation"],
            "raw_text": """
Лазарева Ольга Дмитриевна
Enterprise / Solution Architect

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

Проектировала корпоративные ИТ-ландшафты, отвечала за согласование решений между бизнесом, разработкой и инфраструктурными командами. Подготавливала архитектурную документацию, оценивала риски и участвовала в выборе технологических платформ.

Навыки: Enterprise Architecture, Solution Architecture, Integration, Risk Assessment, Architecture Documentation.
"""
        },
        {
            "vk_user_id": "900009",
            "full_name": "Беляев Никита Романович",
            "level": "Low",
            "match_level": "low",
            "experience_years": 1,
            "skills": ["Support", "Excel", "Communication"],
            "raw_text": """
Беляев Никита Романович
Специалист технической поддержки

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

Обрабатывал обращения пользователей и передавал инциденты в команды разработки и инфраструктуры. Опыта архитектурного проектирования и выбора технологических решений нет.

Навыки: Support, Excel, Communication.
"""
        },
        {
            "vk_user_id": "900010",
            "full_name": "Горбунов Михаил Андреевич",
            "level": "Senior",
            "match_level": "high",
            "experience_years": 7,
            "skills": ["Solution Architecture", "REST API", "Microservices", "Databases", "Scalability", "System Design"],
            "raw_text": """
Горбунов Михаил Андреевич
Архитектор решений

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

Проектировал архитектуру клиентских сервисов и внутренних платформ. Описывал микросервисные взаимодействия, API-контракты, модели данных и требования к масштабируемости. Работал с аналитиками, разработчиками и DevOps.

Навыки: Solution Architecture, REST API, Microservices, Databases, Scalability, System Design.
"""
        },
    ]

    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("✅ Solution Architect 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])