Воронка БАЗА: приведение к ТЗ (метки, сохранённые данные, тексты, шаги)
Закрыты расхождения с ТЗ: - Метки (§12) переименованы под спецификацию: role_player, game_dota2, format_help, interest_trial, interest_summer_intensive, manager_requested, source_main_menu, source_keyword_summer; убраны служебные age_*/level_* метки. - Сохранённые данные (§13): кодовое слово, дата запуска бота (started_at), дата передачи менеджеру (manager_at), интересы (пробное/интенсив). Карточка менеджеру дополнена этими полями, заголовок «Новый запрос из бота». - «Пока не знаю, нужен совет» (§7): показ собранных данных + свободный текст → менеджеру. - «Задать вопрос» (§9): промпт «напишите одним сообщением» → BAZA_QUESTION → передача. - Летний интенсив: свой набор уровней (§10.3), экран младше-12 (Передать менеджеру/ Другие тренировки), двухшаговая оплата (Оплатить интенсив → ссылка) (§10.4), различение запуска по кодовому слову vs меню. - Индивидуальная ветка без «пробного» (§6). Fallback-текст дословно по §15. - «Выбрать абонемент» ведёт на страницу тарифов ссылкой (§8). Тексты веток — по ТЗ. Тесты воронки обновлены и дополнены (интенсив-оплата, младше-12 интенсив, свободный вопрос, «нужен совет»). pytest 30 passed. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
+34
-4
@@ -88,17 +88,47 @@ def get_baza_group_keyboard() -> str:
|
||||
|
||||
|
||||
def get_baza_individual_keyboard() -> str:
|
||||
return _kb([["Записаться на пробное"], ["Купить 1 тренировку"],
|
||||
return _kb([["Купить 1 тренировку"],
|
||||
["Купить 4 тренировки", "Купить 8 тренировок"]],
|
||||
back=True, ask_manager=True)
|
||||
|
||||
|
||||
def get_baza_help_keyboard() -> str:
|
||||
return _kb([["Записаться на пробное"], ["Подобрать заново 🎯"]], ask_manager=True)
|
||||
def get_baza_menu_only_keyboard() -> str:
|
||||
"""Только «В главное меню» — для шагов со свободным вводом (совет/вопрос)."""
|
||||
return _kb([])
|
||||
|
||||
|
||||
def get_baza_intensive_keyboard() -> str:
|
||||
return _kb([["Хочу участвовать 🔥"]], ask_manager=True)
|
||||
keyboard = VkKeyboard(one_time=False)
|
||||
keyboard.add_button("Хочу участвовать 🔥", color=VkKeyboardColor.SECONDARY)
|
||||
keyboard.add_line()
|
||||
keyboard.add_button("Задать вопрос 💬", color=VkKeyboardColor.SECONDARY)
|
||||
keyboard.add_line()
|
||||
keyboard.add_button("Посмотреть другие тренировки", color=VkKeyboardColor.SECONDARY)
|
||||
return keyboard.get_keyboard()
|
||||
|
||||
|
||||
def get_baza_int_level_keyboard() -> str:
|
||||
return _kb([["Только начинаю"], ["Уже знаю основы"],
|
||||
["Играю регулярно"], ["Есть рейтинг или командный опыт"]], back=True)
|
||||
|
||||
|
||||
def get_baza_int_pay_keyboard() -> str:
|
||||
keyboard = VkKeyboard(one_time=False)
|
||||
keyboard.add_button("Оплатить интенсив 💳", color=VkKeyboardColor.SECONDARY)
|
||||
keyboard.add_line()
|
||||
keyboard.add_button("Сначала задать вопрос 💬", color=VkKeyboardColor.SECONDARY)
|
||||
keyboard.add_line()
|
||||
keyboard.add_button("Вернуться в меню ↩️", color=VkKeyboardColor.SECONDARY)
|
||||
return keyboard.get_keyboard()
|
||||
|
||||
|
||||
def get_baza_int_young_keyboard() -> str:
|
||||
keyboard = VkKeyboard(one_time=False)
|
||||
keyboard.add_button("Передать менеджеру 💬", color=VkKeyboardColor.SECONDARY)
|
||||
keyboard.add_line()
|
||||
keyboard.add_button("Посмотреть другие тренировки", color=VkKeyboardColor.SECONDARY)
|
||||
return keyboard.get_keyboard()
|
||||
|
||||
|
||||
def get_baza_prices_keyboard() -> str:
|
||||
|
||||
Reference in New Issue
Block a user