Files
Site_IKP_zaglushka/docs/user_guide.md
T

10 KiB
Raw Blame History

Инструкция по использованию сайта и панели администратора ИКП

Данный документ содержит руководство по работе с сайтом Института Киберспорта (ИКП), включая форму регистрации, систему онлайн-оплаты ЮKassa, личный кабинет администратора и интеграцию с Authentik OIDC (Mailcow).


1. Общая архитектура системы

Сайт ИКП состоит из следующих компонентов:

  • Фронтенд: Лендинг с тарифами и форма регистрации (/form/index.html).
  • Бэкенд: Flask-приложение (server.py), работающее в Docker-контейнере.
  • База данных: SQLite (bot_database.db) для хранения активностей, заказов и каталога услуг.
  • Excel-таблица: form/registration_for_training.xlsx — дублирующий реестр заявок на хост-машине.
  • Авторизация: Интеграция с Authentik (OIDC) для защиты админ-панели с авторизацией через Mailcow.
  • Оплата: API ЮKassa для создания счетов и фискализации чеков (54-ФЗ).
  • Уведомления: SMTP-почта и VK API для оперативного информирования менеджеров.

2. Публичная часть (для клиентов)

Шаг 2.1. Выбор тарифа

На главном лендинге клиент выбирает интересующий тариф и нажимает кнопку «Записаться». Кнопки содержат ссылки с параметром service_id (например, /form/index.html?service_id=web_1), который автоматически передается на страницу формы.

Шаг 2.2. Заполнение формы

На странице формы регистрации клиент заполняет поля:

  1. Имя (обязательное)
  2. Телефон (обязательное)
  3. E-mail (обязательное)
  4. Ссылка на профиль ВКонтакте (опционально)
  5. Согласие с договором-офертой, политикой персональных данных и рассылкой.

При загрузке форма автоматически запрашивает актуальный список услуг и цен из базы данных бэкенда (GET /api/services) и отображает плашку с выбранным тарифом.

Шаг 2.3. Переход на оплату и возврат

  1. При нажатии кнопки «Оставить заявку» бэкенд:
    • Проверяет корректность цены в БД (защита от подмены цены клиентом).
    • Регистрирует заявку в SQLite со статусом pending (Ожидает оплаты).
    • Записывает строку в Excel-файл.
    • Отправляет первичное уведомление менеджерам на почту и в VK о создании неоплаченного заказа.
    • Создает платеж в API ЮKassa и отправляет клиенту ссылку для оплаты.
  2. Фронтенд сразу перенаправляет клиента на защищенную страницу оплаты ЮKassa.
  3. После успешного проведения платежа ЮKassa возвращает клиента на адрес: https://infocyber.pro/form/index.html?success=true&reg_id=id_XXX
  4. Клиент видит красивую плашку об успешной оплате и кнопку «На главную».

Успешная регистрация и оплата


3. Личный кабинет администратора (/admin)

Панель администратора доступна по адресу: https://infocyber.pro/admin.

Шаг 3.1. Вход через Authentik (Mailcow)

  1. При переходе в /admin неавторизованный пользователь автоматически перенаправляется на ваш сервер авторизации Authentik.
  2. Благодаря включенной опции Auto-redirect в Authentik, страница входа самого Authentik скрыта, и пользователя сразу перенаправляет на форму входа корпоративной почты Mailcow.

Форма входа в Authentik / Mailcow

Tip

Как зайти локальным администратором Authentik? Если вам нужно обойти авто-переход на Mailcow и войти под локальным администратором Authentik (akadmin), используйте ссылку: https://auth.infocyber.pro/if/flow/default-authentication-flow/?ignore_redirect=true


Шаг 3.2. Раздел «Заявки» (Реестр заказов)

После успешного входа открывается главный экран панели управления:

  • Карточки статистики: Отображают общее количество заявок, число успешных оплат, количество неоплаченных заказов и общую сумму сборов (выручку).
  • Поиск: Живой поиск на лету по имени клиента, телефону или e-mail.
  • Фильтрация: Быстрое переключение реестра по вкладкам «Все», «Оплачено», «Ожидает оплаты».
  • Таблица заказов: Содержит ID заявки, ФИО клиента, контактные данные (со ссылкой на VK), выбранный тариф, сумму, статус оплаты и дату создания/оплаты.
  • Кнопка «Проверить»: Если вебхук от ЮKassa задерживается, администратор может вручную нажать кнопку «🔄 Проверить» напротив неоплаченного заказа. Бэкенд напрямую запросит статус платежа из API ЮKassa и обновит статус в БД и Excel в случае успеха.

Шаг 3.3. Раздел «Услуги» (Каталог тарифов)

Перейдите на вкладку «Услуги» в верхнем меню админки:

Каталог услуг в панели администратора

Добавление новой услуги:

  1. Нажмите «Добавить услугу».
  2. Заполните поля:
    • ID услуги: Уникальный код латиницей (например, web_6).
    • Название услуги: Отображаемое название (например, Курс по Dota 2).
    • Отображаемая цена: Текст для сайта (например, 1 500 ₽).
    • Числовая цена (для YooKassa): Точная сумма в рублях для выставления счета (например, 1500).
    • Описание: Информация о тарифе.
  3. Сохраните. Новая услуга сразу станет доступна для записи на сайте.

Редактирование услуги:

  1. Нажмите «Ред.» (Редактировать) напротив услуги.
  2. В появившемся окне можно изменить любые параметры, включая галочку «Активна».
  3. Если снять галочку «Активна», услуга скроется с сайта и станет недоступна для оплаты.

4. Настройки и техническое обслуживание

Шаг 4.1. Файл конфигурации .env

Все секреты и настройки хранятся в файле /opt/Site_IKP_zaglushka/.env на сервере:

  • YOOKASSA_SHOP_ID и YOOKASSA_SECRET_KEY — ключи интеграции платежей.
  • Настройки SMTP (SMTP_SERVER, SMTP_PORT, SMTP_USER, SMTP_PASSWORD) — для отправки писем о заказах.
  • Настройки Authentik (AUTHENTIK_CLIENT_ID, AUTHENTIK_CLIENT_SECRET) — для авторизации.
  • VERIFY_WEBHOOK_IP=True — защита вебхуков (разрешает принимать статусы оплат только от официальных IP-адресов ЮKassa).

Шаг 4.2. Деплой обновлений на сервере ea2go

Если вы внесли изменения в код и запушили их в репозиторий, обновите сайт на сервере следующими командами:

# Подключитесь к серверу
ssh ea2go

# Перейдите в папку проекта и обновите код
cd /opt/Site_IKP_zaglushka
git pull origin main

# Пересоберите и запустите контейнеры в фоновом режиме
docker compose up -d --build

Шаг 4.3. Просмотр логов приложения

Чтобы посмотреть логи работы сайта (например, отследить отправку писем или вебхуки оплаты):

docker compose logs -f --tail=100