/* 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}» через полгода?' ] }; })();