import bot from '@bot' import prisma from '@prisma' import { getState } from '../state.js' import { escapeHtml, MAIN_REPLY_KEYBOARD } from '../ui.js' import { DEFAULT_PROMPT } from './settings.js' export async function startOnboarding(chatId: number): Promise { await bot.sendMessage( chatId, `👋 Давай настроим бота — займёт меньше минуты.\n\nПройдём по двум ключевым параметрам.`, { parse_mode: 'HTML' }, ) await showMaxStep(chatId) } export async function showMaxStep(chatId: number): Promise { const state = getState(chatId) state.onboardingStep = 'max' const settings = await prisma.settings.findFirst({ where: { telegramId: chatId } }) const current = settings?.maxApplies ?? 1 const msg = await bot.sendMessage( chatId, `🔢 Шаг 1 из 3 — Максимум откликов\n\n` + `Сколько вакансий бот обработает за один запуск. Рекомендуем начать с небольшого числа, чтобы проверить письма.\n\n` + `Текущее значение: ${current}\n\n` + `Введи число от 1 до 50:`, { parse_mode: 'HTML', reply_markup: { inline_keyboard: [[ { text: `Оставить ${current} ✓`, callback_data: 'ob_skip_max' }, ]], }, }, ) state.onboardingMsgId = msg.message_id } export async function showQueryStep(chatId: number): Promise { const state = getState(chatId) state.onboardingStep = 'query' const settings = await prisma.settings.findFirst({ where: { telegramId: chatId } }) const current = settings?.searchQuery || 'Vue' const msg = await bot.sendMessage( chatId, `🔍 Шаг 2 из 3 — Поисковый запрос\n\n` + `По этому запросу бот ищет вакансии на hh.ru. Используй профессию или ключевые навыки.\n\n` + `Текущий запрос: ${current}\n\n` + `Введи новый или оставь текущий:`, { parse_mode: 'HTML', reply_markup: { inline_keyboard: [[ { text: `Оставить «${current}» ✓`, callback_data: 'ob_skip_query' }, ]], }, }, ) state.onboardingMsgId = msg.message_id } export async function showResumeInfo(chatId: number): Promise { const settings = await prisma.settings.findFirst({ where: { telegramId: chatId } }) const resume = settings?.selectedResumeId ? await prisma.resume.findUnique({ where: { id: settings.selectedResumeId } }) : await prisma.resume.findFirst({ where: { telegramId: chatId } }) if (resume) { await bot.sendMessage( chatId, `📄 Резюме\n\nАктивное резюме: ${resume.title}\n\nЕсли у тебя несколько резюме на hh.ru — можно выбрать нужное через Настройки → Выбрать резюме.`, { parse_mode: 'HTML' }, ) } else { await bot.sendMessage( chatId, `📄 Резюме\n\nРезюме пока не выбрано. Создай его на hh.ru, затем выбери через Настройки → Выбрать резюме.`, { parse_mode: 'HTML' }, ) } } export async function showPromptStep(chatId: number): Promise { const state = getState(chatId) state.onboardingStep = 'prompt' const user = await prisma.user.findUnique({ where: { telegramId: chatId } }) const currentPrompt = user?.prompt || DEFAULT_PROMPT const msg = await bot.sendMessage( chatId, `📝 Шаг 3 из 3 — Промт для AI\n\n` + `Инструкция, которую AI получает при написании сопроводительного письма. ` + `Задаёт стиль, тон и то, что важно упомянуть.\n\n` + `Текущий промт:\n
${escapeHtml(currentPrompt)}
\n\n` + `Введи свой или оставь дефолтный:`, { parse_mode: 'HTML', reply_markup: { inline_keyboard: [[ { text: 'Оставить дефолтный ✓', callback_data: 'ob_skip_prompt' }, ]], }, }, ) state.onboardingMsgId = msg.message_id } export async function finishOnboarding(chatId: number): Promise { const state = getState(chatId) state.onboardingStep = null state.onboardingMsgId = null await bot.sendMessage( chatId, `🎉 Настройка завершена!\n\nВсё готово — нажми 🚀 Откликнуться, чтобы запустить бота.\n\nДополнительные параметры (запрос, регион, слова-исключения) доступны в разделе Фильтры.`, { parse_mode: 'HTML', reply_markup: MAIN_REPLY_KEYBOARD }, ) }