Загрузка данных
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():
db.drop_all()
db.create_all()
vacancy = Vacancy(
title="Бизнес-аналитик (Middle)",
department="Отдел цифровых продуктов",
description="""
Сбор и анализ бизнес-требований;
Проведение интервью со стейкхолдерами;
Описание бизнес-процессов AS-IS и TO-BE;
Подготовка user stories, BRD и SRS;
Моделирование процессов в BPMN и UML;
Описание интеграционных сценариев и REST API;
Взаимодействие с командами разработки и тестирования.
""".strip(),
requirements="""
Опыт работы бизнес-аналитиком от 2 лет;
Понимание SDLC;
Навыки BPMN и UML;
Опыт работы с Jira и Confluence;
Понимание REST API;
Базовое знание SQL;
Умение проводить интервью со стейкхолдерами;
Навыки фасилитации встреч и командного взаимодействия.
""".strip(),
skills=[
"Business Analysis",
"BPMN",
"UML",
"REST API",
"SQL",
"Jira",
"Confluence",
"SDLC",
"User Stories",
"Stakeholder Interview"
],
is_active=True,
)
db.session.add(vacancy)
db.session.flush()
resumes_data = [
{
"vk_user_id": "100001",
"full_name": "Петров Алексей Сергеевич",
"level": "Middle",
"match_level": "high",
"experience_years": 3.5,
"skills": ["BPMN", "UML", "REST API", "Jira", "Confluence", "SQL", "SDLC"],
"raw_text": """
Петров Алексей Сергеевич
Бизнес-аналитик
Опыт работы: 3 года 6 месяцев.
Работал в проектах автоматизации внутренних процессов и клиентских сервисов. Проводил интервью со стейкхолдерами, собирал и формализовал требования, описывал процессы AS-IS и TO-BE в BPMN. Готовил user stories, SRS и документацию в Confluence. Участвовал в описании REST API и интеграционных сценариев совместно с системным аналитиком.
Навыки: BPMN, UML, REST API, Jira, Confluence, SQL, SDLC, User Stories.
"""
},
{
"vk_user_id": "100002",
"full_name": "Иванова Мария Андреевна",
"level": "Junior",
"match_level": "medium",
"experience_years": 1,
"skills": ["BPMN", "Jira", "Confluence", "User Stories", "SDLC"],
"raw_text": """
Иванова Мария Андреевна
Junior бизнес-аналитик
Опыт работы: 1 год.
Участвовала в сборе требований и подготовке пользовательских сценариев. Описывала простые бизнес-процессы, работала с Jira и Confluence. Есть базовое понимание SDLC. Опыт самостоятельного проведения интервью и описания REST API ограничен.
Навыки: BPMN, Jira, Confluence, User Stories, основы SDLC.
"""
},
{
"vk_user_id": "100003",
"full_name": "Смирнов Дмитрий Олегович",
"level": "Senior",
"match_level": "high",
"experience_years": 6,
"skills": ["BPMN", "UML", "REST API", "SQL", "Jira", "Confluence", "System Analysis", "SDLC"],
"raw_text": """
Смирнов Дмитрий Олегович
Системный аналитик / Бизнес-аналитик
Опыт работы: 6 лет.
Проектировал интеграционные решения, описывал REST API, готовил SRS и техническую документацию. Моделировал процессы в BPMN и UML, работал с командами разработки, тестирования и бизнеса. Участвовал в приоритизации требований и разрешении конфликтов между заказчиками и технической командой.
Навыки: BPMN, UML, REST API, SQL, Jira, Confluence, System Analysis, SDLC.
"""
},
{
"vk_user_id": "100004",
"full_name": "Кузнецова Елена Викторовна",
"level": "Middle",
"match_level": "medium",
"experience_years": 2.2,
"skills": ["Jira", "Confluence", "Testing", "SQL", "SDLC"],
"raw_text": """
Кузнецова Елена Викторовна
QA-инженер / начинающий бизнес-аналитик
Опыт работы: 2 года 2 месяца.
Основной опыт связан с тестированием веб-приложений. Работала с тест-кейсами, баг-репортами, Jira и Confluence. Участвовала в уточнении требований вместе с аналитиками и разработчиками. Есть понимание SDLC и базовые знания SQL, но самостоятельного опыта ведения аналитики немного.
Навыки: Jira, Confluence, Testing, SQL, SDLC.
"""
},
{
"vk_user_id": "100005",
"full_name": "Орлов Максим Игоревич",
"level": "Not relevant",
"match_level": "low",
"experience_years": 4,
"skills": ["SMM", "Digital Marketing", "Excel", "Analytics"],
"raw_text": """
Орлов Максим Игоревич
Digital-маркетолог
Опыт работы: 4 года.
Занимался настройкой рекламных кампаний, анализом трафика, подготовкой контент-планов и отчетов. Работал с Excel, Яндекс Метрикой и Google Analytics. Опыта бизнес-анализа, BPMN, REST API и сбора требований нет.
Навыки: SMM, digital marketing, Excel, аналитика трафика.
"""
},
{
"vk_user_id": "100006",
"full_name": "Васильев Андрей Николаевич",
"level": "Middle",
"match_level": "high",
"experience_years": 3,
"skills": ["BPMN", "REST API", "Jira", "Confluence", "User Stories", "SQL"],
"raw_text": """
Васильев Андрей Николаевич
Бизнес-аналитик
Опыт работы: 3 года.
Собирал требования для CRM-системы и личного кабинета клиента. Проводил интервью с заказчиками, описывал user stories, готовил документацию в Confluence. Участвовал в обсуждении интеграций, описывал REST API совместно с системным аналитиком. Работал с Jira и SQL-запросами для проверки данных.
Навыки: BPMN, REST API, Jira, Confluence, User Stories, SQL.
"""
},
{
"vk_user_id": "100007",
"full_name": "Соколова Анна Павловна",
"level": "Trainee",
"match_level": "medium",
"experience_years": 0.5,
"skills": ["BPMN", "UML", "Jira", "Requirements Analysis"],
"raw_text": """
Соколова Анна Павловна
Стажер бизнес-аналитик
Опыт работы: 6 месяцев.
Помогала старшему аналитику описывать бизнес-процессы и фиксировать требования после встреч. Работала с простыми BPMN-схемами и задачами в Jira. Коммерческого опыта самостоятельного ведения проекта нет, но есть учебные проекты по моделированию процессов.
Навыки: BPMN, UML, Jira, основы анализа требований.
"""
},
{
"vk_user_id": "100008",
"full_name": "Морозов Илья Романович",
"level": "Developer",
"match_level": "medium",
"experience_years": 2.8,
"skills": ["Python", "REST API", "SQL", "Git", "Docker"],
"raw_text": """
Морозов Илья Романович
Backend-разработчик
Опыт работы: 2 года 10 месяцев.
Разрабатывал backend-сервисы на Python, работал с REST API, SQL и Docker. Участвовал в обсуждении требований с аналитиками, но сам требования не собирал и документацию не вел. Может быть полезен в роли технического аналитика, но опыта бизнес-анализа недостаточно.
Навыки: Python, REST API, SQL, Git, Docker.
"""
},
{
"vk_user_id": "100009",
"full_name": "Никитина Ольга Сергеевна",
"level": "Middle",
"match_level": "high",
"experience_years": 4,
"skills": ["BPMN", "UML", "Jira", "Confluence", "REST API", "SQL", "SDLC"],
"raw_text": """
Никитина Ольга Сергеевна
Бизнес-аналитик
Опыт работы: 4 года.
Вела проекты по автоматизации документооборота и клиентского сервиса. Проводила интервью со стейкхолдерами, формировала BRD и SRS, описывала процессы AS-IS и TO-BE. Работала с REST API, писала SQL-запросы для проверки данных и участвовала в приемочном тестировании.
Навыки: BPMN, UML, Jira, Confluence, REST API, SQL, SDLC.
"""
},
{
"vk_user_id": "100010",
"full_name": "Федоров Кирилл Максимович",
"level": "Low",
"match_level": "low",
"experience_years": 0.3,
"skills": ["Customer Support", "Excel", "Communication"],
"raw_text": """
Федоров Кирилл Максимович
Специалист технической поддержки
Опыт работы: 4 месяца.
Обрабатывал обращения пользователей, консультировал по работе сервиса, передавал ошибки в команду разработки. Опыта сбора требований, моделирования процессов, BPMN, REST API и подготовки аналитической документации нет.
Навыки: Customer Support, Excel, коммуникация с пользователями.
"""
},
]
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("✅ База очищена и заполнена заново")
print("Vacancies:", Vacancy.query.count())
print("Candidates:", Candidate.query.count())
print("Resumes:", Resume.query.count())
vacancy_from_db = Vacancy.query.first()
print("Vacancy ID:", vacancy_from_db.id)
print("Resume IDs for vacancy:", [resume.id for resume in vacancy_from_db.resumes])