Загрузка данных
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="Data Analyst (Middle)",
department="Data Analytics",
description="""
Анализ бизнес-данных;
Подготовка аналитических отчетов;
Создание дашбордов;
Работа с SQL-запросами;
Визуализация данных;
Поиск закономерностей и метрик;
Взаимодействие с бизнес-командой.
""".strip(),
requirements="""
Опыт работы аналитиком от 2 лет;
Уверенное знание SQL;
Навыки работы с Power BI или Tableau;
Понимание метрик и KPI;
Навыки визуализации данных;
Опыт обработки больших объемов данных;
Базовые знания Python будут преимуществом.
""".strip(),
skills=[
"SQL",
"Power BI",
"Tableau",
"Python",
"Data Analysis",
"Excel",
"Visualization",
"KPI",
"Statistics",
"Pandas"
],
is_active=True,
)
db.session.add(vacancy)
db.session.flush()
resumes_data = [
{
"vk_user_id": "400001",
"full_name": "Орлова Виктория Сергеевна",
"level": "Middle",
"match_level": "high",
"experience_years": 3,
"skills": [
"SQL",
"Power BI",
"Excel",
"Python",
"Pandas"
],
"raw_text": """
Орлова Виктория Сергеевна
Data Analyst
Опыт работы: 3 года.
Анализировала продуктовые метрики, строила дашборды в Power BI, работала с SQL и Python для обработки данных.
Навыки: SQL, Power BI, Excel, Python, Pandas.
"""
},
{
"vk_user_id": "400002",
"full_name": "Семенов Артем Павлович",
"level": "Junior",
"match_level": "medium",
"experience_years": 1,
"skills": [
"SQL",
"Excel",
"Tableau"
],
"raw_text": """
Семенов Артем Павлович
Junior Data Analyst
Опыт работы: 1 год.
Готовил отчеты в Excel и Tableau, писал SQL-запросы для аналитики продаж.
Навыки: SQL, Excel, Tableau.
"""
},
{
"vk_user_id": "400003",
"full_name": "Кузьмина Дарья Андреевна",
"level": "Senior",
"match_level": "high",
"experience_years": 6,
"skills": [
"SQL",
"Python",
"Power BI",
"Statistics",
"Pandas",
"Machine Learning"
],
"raw_text": """
Кузьмина Дарья Андреевна
Senior Data Analyst
Опыт работы: 6 лет.
Разрабатывала аналитические модели, автоматизировала отчетность, анализировала продуктовые KPI и строила BI-дашборды.
Навыки: SQL, Python, Power BI, Statistics, Pandas, Machine Learning.
"""
},
{
"vk_user_id": "400004",
"full_name": "Лазарев Дмитрий Игоревич",
"level": "Middle",
"match_level": "high",
"experience_years": 4,
"skills": [
"SQL",
"Power BI",
"KPI",
"Excel"
],
"raw_text": """
Лазарев Дмитрий Игоревич
BI Analyst
Опыт работы: 4 года.
Создавал BI-дашборды и анализировал ключевые метрики бизнеса. Работал с SQL и Excel.
Навыки: SQL, Power BI, KPI, Excel.
"""
},
{
"vk_user_id": "400005",
"full_name": "Тихонова Алина Евгеньевна",
"level": "Low",
"match_level": "low",
"experience_years": 2,
"skills": [
"SMM",
"Marketing",
"Canva"
],
"raw_text": """
Тихонова Алина Евгеньевна
SMM-специалист
Опыт работы: 2 года.
Работала в digital-маркетинге и занималась ведением социальных сетей.
Навыки: SMM, Marketing, Canva.
"""
},
{
"vk_user_id": "400006",
"full_name": "Поляков Кирилл Максимович",
"level": "Middle",
"match_level": "high",
"experience_years": 3,
"skills": [
"SQL",
"Python",
"Pandas",
"Visualization"
],
"raw_text": """
Поляков Кирилл Максимович
Data Analyst
Опыт работы: 3 года.
Проводил анализ пользовательских данных, строил визуализации и автоматизировал отчеты.
Навыки: SQL, Python, Pandas, Visualization.
"""
},
{
"vk_user_id": "400007",
"full_name": "Гусева Мария Алексеевна",
"level": "Trainee",
"match_level": "medium",
"experience_years": 0.5,
"skills": [
"Excel",
"SQL",
"Power BI"
],
"raw_text": """
Гусева Мария Алексеевна
Стажер Data Analyst
Опыт работы: 6 месяцев.
Проходила стажировку по аналитике данных, работала с Excel и SQL.
Навыки: Excel, SQL, Power BI.
"""
},
{
"vk_user_id": "400008",
"full_name": "Егоров Никита Владимирович",
"level": "Middle",
"match_level": "high",
"experience_years": 5,
"skills": [
"SQL",
"Tableau",
"Python",
"KPI"
],
"raw_text": """
Егоров Никита Владимирович
Product Analyst
Опыт работы: 5 лет.
Анализировал продуктовые метрики, строил Tableau-дашборды и работал с SQL и Python.
Навыки: SQL, Tableau, Python, KPI.
"""
},
{
"vk_user_id": "400009",
"full_name": "Жданова Оксана Ильинична",
"level": "Low",
"match_level": "low",
"experience_years": 1,
"skills": [
"HR",
"Communication",
"Recruitment"
],
"raw_text": """
Жданова Оксана Ильинична
HR-специалист
Опыт работы: 1 год.
Подбирала персонал и занималась HR-документооборотом.
Навыки: HR, Communication, Recruitment.
"""
},
{
"vk_user_id": "400010",
"full_name": "Чернов Илья Сергеевич",
"level": "Middle",
"match_level": "high",
"experience_years": 4,
"skills": [
"SQL",
"Python",
"Power BI",
"Statistics"
],
"raw_text": """
Чернов Илья Сергеевич
Data Analyst
Опыт работы: 4 года.
Занимался аналитикой продаж и финансовых показателей. Разрабатывал дашборды и SQL-отчеты.
Навыки: SQL, Python, Power BI, Statistics.
"""
},
]
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("✅ Data 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])