Commit Graph

6 Commits

Author SHA1 Message Date
Kenik 261e5c2da0 Тексты воронки по ТЗ + смена ссылок из админки
Тексты:
- «Сколько лет игроку?» (было «…будущему ученику?») во всех местах;
- сообщение для «Младше 12 лет» приведено дословно к ТЗ (§4);
- убраны отсебятины-преамбулы, которых нет в ТЗ (приветствие, старт воронки,
  цены «Что дальше?», интенсив «Хотите записаться?»); кнопка младше-12 «Вернуться назад».

Смена ссылок в админке:
- таблица bot_links (key, url) + методы get_link/get_all_links/set_link;
- _link(key): БД-переопределение → дефолт из config/.env; используется на шагах оплаты;
- раздел «Ссылки 🔗» в админ-панели: список текущих адресов + «✏️ Изменить ссылку»
  (выбор из 8 кнопок → ввод URL с валидацией http/https). UTM добавляются автоматически.

Тесты: добавлен test_admin_edit_link. pytest 31 passed.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-23 19:45:47 +03:00
Kenik 7a59b035ce Воронка БАЗА: приведение к ТЗ (метки, сохранённые данные, тексты, шаги)
Закрыты расхождения с ТЗ:
- Метки (§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>
2026-07-19 13:55:34 +03:00
Kenik 74a855819d Чистка старого ИКП-флоу: удалены форма-заявка, карьера/вакансии, меню FAQ и осиротевшая админка
Из ТЗ Кибершколы БАЗА эти сценарии заменены воронкой подбора, поэтому убран мёртвый код:
- клиентские FSM: FORM_* (форма-заявка, возвращающийся клиент, редактирование, согласия,
  выбор услуги, карусель) и VAC_* (карьера: игроки/сотрудники);
- меню «Частые вопросы» и config.FAQ_ANSWERS;
- осиротевшая админка: управление услугами + карусель, вакансии, кандидаты
  (в панели и в мастере ADMIN_SVC_*/ADMIN_VAC_*), блок статистики по откликам;
- старый _handoff_to_operator и _notify_operator_about_lead (заменены _baza_to_manager);
- неиспользуемые клавиатуры (форма/услуги/вакансии/согласия) и импорты (validators, random, string).

Оставлено (используется/по ТЗ): воронка БАЗА, быстрые ответы (custom_faq), стата по лидам,
рассылка, управление админами, чат с оператором, логотип. Слой БД не тронут — существующие
установки не ломаются (таблицы services/applications/vacancy_options просто не используются).

bot.py: -1490 строк. Тесты: pytest 28 passed.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-18 18:36:38 +03:00
Kenik 60199fb47b Ребрендинг БАЗА: новое меню + воронка подбора, интенсив, оплата, карточка менеджеру
Меню Кибершколы БАЗА (4 кнопки): Подобрать тренировку / Летний интенсив CS2 /
Посмотреть цены / Задать вопрос.

Воронка «Подобрать тренировку» (FSM BAZA_*): для кого → возраст → игра → уровень →
формат → групповые / индивидуальные / нужен совет. На каждом шаге — «Назад» и «В
главное меню», ветки: младше 12 и «другая игра» уводят к менеджеру.

Ветка «Летний интенсив CS2»: инфо → возраст → уровень → оплата. Запуск по кнопке и
по кодовым словам (лето/интенсив), основные триггеры и приветствие — из config.

Шаг оплаты: инлайн-кнопка «Перейти к оплате» (ссылки-плейсхолдеры из config.LINKS +
UTM), «Проблема с оплатой» и «Задать вопрос менеджеру» уводят к оператору.

Карточка менеджеру собирается из профиля воронки (пустые поля пропускаются) + метки;
дублируется на почту. Данные не переспрашиваются, после передачи менеджеру бот не
вмешивается (OPERATOR_CHAT). Тесты воронки — pytest (30 passed).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-18 18:20:59 +03:00
Kenik 7ebcb851e7 Тесты: покрытие админ-CRUD (услуги, FAQ, вакансии, админы, рассылка, стата)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-24 21:55:39 +03:00
Kenik 46a7d2571f Pytest-набор: валидаторы, БД, интеграционные флоу
tests/ — 19 тестов: validators (телефон/имя/формат), database (услуги, FAQ,
вакансии, отклики, админы, лиды, подписчики), интеграция (полный флоу заявки,
карьера игрока, анти-флуд не роняет бота, доступ к админке). Работают на
временной БД, реальную не трогают. Запуск: python -m pytest tests/ -q

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-24 21:53:41 +03:00