ty-produktovyy-dizayner-i-se/js/data.js

168 lines
8.6 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/* HR Candidate Matcher — Data Layer */
/* global window */
(function () {
'use strict';
var APP = window.HRMatcher = window.HRMatcher || {};
APP.STATUS = {
CONFIRMED: 'confirmed',
NOT_FOUND: 'not_found',
UNCLEAR: 'unclear'
};
APP.CRITERION_TYPE = {
REQUIRED: 'required',
DESIRED: 'desired'
};
var idCounter = Date.now();
APP.generateId = function () {
return 'id_' + (idCounter++) + '_' + Math.random().toString(36).slice(2, 8);
};
APP.createVacancy = function (title, rawText, criteria) {
return {
id: APP.generateId(),
title: title || '',
rawText: rawText || '',
criteria: criteria || []
};
};
APP.createCriterion = function (label, required, weight, synonyms) {
return {
id: APP.generateId(),
label: label || '',
required: required !== false,
weight: Math.max(1, Math.min(5, weight || 3)),
synonyms: synonyms || []
};
};
APP.createMatchResult = function (criterionId, status, evidence, note) {
return {
criterionId: criterionId,
status: status || APP.STATUS.NOT_FOUND,
evidence: evidence || [],
note: note || ''
};
};
APP.createEvidence = function (fragment, position) {
return {
fragment: fragment || '',
position: position || 0
};
};
APP.createAppState = function () {
return {
currentScreen: 'welcome',
vacancy: null,
resumeText: '',
matchResults: [],
isDemo: false,
hasUnsavedChanges: false
};
};
APP.DEMO_VACANCY_TEXT = 'Таргетолог (Digital Marketing Specialist)\n\n' +
'Компания: ТОО «DigitalKZ»\n' +
'Локация: Алматы, Казахстан\n' +
'Зарплата: от 350 000 ₸ до 500 000 ₸\n\n' +
'Обязанности:\n' +
'— Настройка и оптимизация рекламных кампаний в Facebook Ads, Google Ads, TikTok Ads\n' +
'— Анализ эффективности кампаний, подготовка отчётов\n' +
'— A/B тестирование креативов и посадочных страниц\n' +
'— Работа с аналитическими инструментами: Google Analytics, Яндекс.Метрика\n' +
'— Управление бюджетом рекламных кампаний\n' +
'— Ведение отчётности в Excel / Google Sheets\n\n' +
'Требования:\n' +
'— Опыт работы таргетологом от 2 лет\n' +
'— Знание Facebook Ads Manager и Google Ads\n' +
'— Умение работать с Google Analytics и Яндекс.Метрикой\n' +
'— Опыт A/B тестирования\n' +
'— Знание Excel / Google Sheets на уровне продвинутого пользователя\n' +
'— Английский язык — Intermediate и выше\n' +
'— Понимание основ SEO будет плюсом\n' +
'— Опыт работы с TikTok Ads — желательно\n\n' +
'Условия:\n' +
'— Полный рабочий день, офис в центре Алматы\n' +
'— Оформление по ТК РК\n' +
'— ДМС после испытательного срока';
APP.DEMO_RESUME_TEXT = 'Кандидат на позицию Таргетолог\n\n' +
'Опыт работы:\n' +
'Таргетолог, ТОО «МедиаГрупп» — 2 года 6 месяцев (2023 – настоящее время)\n' +
'— Настройка и ведение рекламных кампаний в Facebook Ads и Google Ads\n' +
'— Ежемесячный бюджет: от 500 000 ₸ до 2 000 000 ₸\n' +
'— A/B тестирование креативов: повышение CTR на 35%\n' +
'— Подготовка еженедельных отчётов в Google Sheets\n' +
'— Работа с Google Analytics для анализа воронки\n\n' +
'Младший таргетолог, ИП «РекламаПлюс» — 1 год (2022 – 2023)\n' +
'— Настройка рекламы в Instagram и VK Ads\n' +
'— Ведение отчётности в Excel\n\n' +
'Навыки:\n' +
'— Facebook Ads Manager — продвинутый\n' +
'— Google Ads — продвинутый\n' +
'— Google Analytics — уверенный\n' +
'— Яндекс.Метрика — базовый\n' +
'— Excel / Google Sheets — продвинутый (сводные таблицы, VLOOKUP)\n' +
'— A/B тестирование — опыт 2 года\n' +
'— TikTok Ads — нет опыта, но готов освоить\n' +
'— SEO — знаком с основами\n\n' +
'Образование:\n' +
'— КазНУ им. аль-Фараби, Маркетинг, бакалавр (2018 – 2022)\n\n' +
'Языки:\n' +
'— Казахский — родной\n' +
'— Русский — свободный\n' +
'— Английский — Intermediate (B1)';
APP.SKILL_DICTIONARY = {
'facebook ads': { label: 'Facebook Ads', synonyms: ['facebook ads manager', 'fb ads', 'meta ads', 'реклама в facebook'] },
'google ads': { label: 'Google Ads', synonyms: ['google adwords', 'adwords', 'реклама в google'] },
'tiktok ads': { label: 'TikTok Ads', synonyms: ['tiktok advertising', 'реклама в tiktok'] },
'google analytics': { label: 'Google Analytics', synonyms: ['ga4', 'ga', 'аналитика google'] },
'яндекс.метрика': { label: 'Яндекс.Метрика', synonyms: ['метрика', 'yandex metrika', 'яндекс метрика'] },
'excel': { label: 'Excel', synonyms: ['google sheets', 'google таблицы', 'эксель', '电子表格'] },
'a/b тестирование': { label: 'A/B тестирование', synonyms: ['ab тестирование', 'a/b тесты', 'ab тесты', 'a/b testing'] },
'seo': { label: 'SEO', synonyms: ['поисковая оптимизация', 'search engine optimization'] },
'sql': { label: 'SQL', synonyms: ['mysql', 'postgresql', 'запросы к базе данных'] },
'python': { label: 'Python', synonyms: ['питон'] },
'javascript': { label: 'JavaScript', synonyms: ['js'] },
'react': { label: 'React', synonyms: ['reactjs', 'react.js'] },
'figma': { label: 'Figma', synonyms: ['фигма'] },
'photoshop': { label: 'Photoshop', synonyms: ['фотошоп', 'ps'] },
'css': { label: 'CSS', synonyms: ['css3'] },
'html': { label: 'HTML', synonyms: ['html5'] },
'project management': { label: 'Управление проектами', synonyms: ['project manager', 'pm', 'управление проектом'] },
'agile': { label: 'Agile', synonyms: ['scrum', 'канбан', 'kanban'] },
'power bi': { label: 'Power BI', synonyms: ['powerbi'] },
'tableau': { label: 'Tableau', synonyms: ['табло'] }
};
APP.INTERVIEW_TEMPLATES = {
skill: [
'Расскажите, как вы применяли «{skill}» в рабочих проектах?',
'Какие сложности возникали при работе с «{skill}» и как вы их решали?',
'На каком уровне вы оцениваете своё владение «{skill}»? Приведите пример.'
],
experience: [
'Опишите конкретный проект, где требовался опыт в «{skill}».',
'Как вы отслеживаете результаты своей работы в области «{skill}»?',
'Что бы вы изменили в подходе к «{skill}», зная то, что знаете сейчас?'
],
tool: [
'Какие инструменты / платформы вы использовали для «{skill}»?',
'Как вы оцениваете свою скорость работы с «{skill}»? Приведите пример.',
'Есть ли альтернативные инструменты, которые вы рассматривали для «{skill}»?'
],
development: [
'Какие шаги вы предпринимаете для развития навыка «{skill}»?',
'Есть ли ресурсы (курсы, книги), которые вы используете для изучения «{skill}»?',
'Какой результат вы ожидаете достичь в «{skill}» через полгода?'
]
};
})();