Загрузка данных
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="Product Manager (Middle)",
department="Product Management",
description="""
Разработка и развитие цифровых продуктов;
Сбор и приоритизация требований;
Формирование roadmap продукта;
Работа с аналитикой и пользовательскими метриками;
Постановка задач команде разработки;
Проведение customer development;
Участие в A/B тестировании;
Взаимодействие с дизайнерами, аналитиками и разработчиками.
""".strip(),
requirements="""
Опыт работы Product Manager от 2 лет;
Понимание Agile/Scrum;
Навыки работы с Jira и Confluence;
Опыт анализа продуктовых метрик;
Умение формировать backlog;
Навыки проведения CustDev;
Понимание UX/UI;
Навыки коммуникации и управления приоритетами.
""".strip(),
skills=[
"Product Management",
"Agile",
"Scrum",
"Jira",
"Confluence",
"CustDev",
"Analytics",
"A/B Testing",
"Roadmap",
"UX/UI"
],
is_active=True,
)
db.session.add(vacancy)
db.session.flush()
resumes_data = [
{
"vk_user_id": "200001",
"full_name": "Семенов Артем Игоревич",
"level": "Middle",
"match_level": "high",
"experience_years": 3,
"skills": [
"Product Management",
"Agile",
"Scrum",
"Jira",
"Analytics",
"CustDev"
],
"raw_text": """
Семенов Артем Игоревич
Product Manager
Опыт работы: 3 года.
Развивал мобильный fintech-продукт. Формировал roadmap, проводил CustDev, анализировал продуктовые метрики и координировал работу команды разработки. Работал с Jira, Confluence и аналитическими dashboard.
Навыки: Product Management, Agile, Scrum, Jira, Analytics, CustDev.
"""
},
{
"vk_user_id": "200002",
"full_name": "Крылова Марина Олеговна",
"level": "Junior",
"match_level": "medium",
"experience_years": 1,
"skills": [
"Agile",
"Jira",
"Backlog",
"User Stories"
],
"raw_text": """
Крылова Марина Олеговна
Junior Product Manager
Опыт работы: 1 год.
Помогала senior product manager управлять backlog и формировать user stories. Работала с Jira и Confluence. Имеет базовое понимание CustDev и продуктовой аналитики.
Навыки: Agile, Jira, Backlog, User Stories.
"""
},
{
"vk_user_id": "200003",
"full_name": "Белов Андрей Сергеевич",
"level": "Senior",
"match_level": "high",
"experience_years": 6,
"skills": [
"Product Strategy",
"Roadmap",
"A/B Testing",
"Analytics",
"UX/UI",
"Scrum"
],
"raw_text": """
Белов Андрей Сергеевич
Senior Product Manager
Опыт работы: 6 лет.
Управлял B2B SaaS-продуктом. Формировал стратегию развития, управлял roadmap, запускал A/B тесты и анализировал продуктовые метрики. Координировал кросс-функциональные команды.
Навыки: Product Strategy, Roadmap, A/B Testing, Analytics, UX/UI, Scrum.
"""
},
{
"vk_user_id": "200004",
"full_name": "Орехова Виктория Павловна",
"level": "Middle",
"match_level": "medium",
"experience_years": 2,
"skills": [
"Agile",
"Scrum",
"Jira",
"UX/UI"
],
"raw_text": """
Орехова Виктория Павловна
Product Owner
Опыт работы: 2 года.
Работала с agile-командой над развитием e-commerce платформы. Формировала backlog, участвовала в sprint planning и взаимодействовала с UX/UI дизайнерами.
Навыки: Agile, Scrum, Jira, UX/UI.
"""
},
{
"vk_user_id": "200005",
"full_name": "Ларионов Максим Денисович",
"level": "Low",
"match_level": "low",
"experience_years": 4,
"skills": [
"Sales",
"CRM",
"Excel"
],
"raw_text": """
Ларионов Максим Денисович
Менеджер по продажам
Опыт работы: 4 года.
Работал в B2B продажах, вел CRM и коммерческие предложения. Не имеет опыта продуктового менеджмента и управления IT-продуктами.
Навыки: Sales, CRM, Excel.
"""
},
{
"vk_user_id": "200006",
"full_name": "Романова Дарья Алексеевна",
"level": "Middle",
"match_level": "high",
"experience_years": 4,
"skills": [
"Roadmap",
"CustDev",
"Analytics",
"Agile",
"Jira"
],
"raw_text": """
Романова Дарья Алексеевна
Product Manager
Опыт работы: 4 года.
Развивала EdTech-платформу. Проводила интервью с пользователями, анализировала retention и engagement метрики, управляла roadmap продукта и взаимодействовала с командами разработки.
Навыки: Roadmap, CustDev, Analytics, Agile, Jira.
"""
},
{
"vk_user_id": "200007",
"full_name": "Громов Кирилл Евгеньевич",
"level": "Trainee",
"match_level": "medium",
"experience_years": 0.5,
"skills": [
"Jira",
"Agile",
"User Stories"
],
"raw_text": """
Громов Кирилл Евгеньевич
Стажер Product Manager
Опыт работы: 6 месяцев.
Помогал в описании user stories и ведении backlog. Изучал Agile и Scrum. Коммерческий опыт ограничен.
Навыки: Jira, Agile, User Stories.
"""
},
{
"vk_user_id": "200008",
"full_name": "Фролов Илья Викторович",
"level": "Developer",
"match_level": "medium",
"experience_years": 3,
"skills": [
"Python",
"SQL",
"REST API",
"Analytics"
],
"raw_text": """
Фролов Илья Викторович
Backend Developer
Опыт работы: 3 года.
Разрабатывал backend-сервисы, участвовал в обсуждении roadmap и оценке задач. Имеет технический опыт, но ограниченный опыт управления продуктом.
Навыки: Python, SQL, REST API, Analytics.
"""
},
{
"vk_user_id": "200009",
"full_name": "Савина Екатерина Романовна",
"level": "Middle",
"match_level": "high",
"experience_years": 5,
"skills": [
"Product Management",
"A/B Testing",
"Analytics",
"UX/UI",
"CustDev"
],
"raw_text": """
Савина Екатерина Романовна
Product Manager
Опыт работы: 5 лет.
Развивала маркетплейс и мобильное приложение. Работала с A/B тестированием, анализом продуктовых метрик и UX/UI исследованиями.
Навыки: Product Management, A/B Testing, Analytics, UX/UI, CustDev.
"""
},
{
"vk_user_id": "200010",
"full_name": "Тихонов Павел Дмитриевич",
"level": "Low",
"match_level": "low",
"experience_years": 1,
"skills": [
"Support",
"Excel",
"Communication"
],
"raw_text": """
Тихонов Павел Дмитриевич
Специалист поддержки
Опыт работы: 1 год.
Работал в технической поддержке пользователей. Продуктовым управлением и аналитикой не занимался.
Навыки: Support, Excel, Communication.
"""
},
]
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("✅ Product Manager 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])