Загрузка данных
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])