Доработка бэкенд-приложения на FastAPI

Основная цель

Расширение функциональности существующего API за счёт внедрения системы безопасности, управления пользователями и обработки транзакций.

1. Система безопасности и пользователи

Аутентификация и авторизация

  • Реализация регистрации и входа пользователей с использованием JWT-токенов.
  • Хранение токена в cookies с сроком жизни 7 дней.
  • Секретный ключ для генерации токенов должен храниться в переменных окружения (.env).
  • Автоматическое обновление срока жизни токена при каждой активности пользователя.
  • Защита эндпоинтов /admin/* с проверкой роли администратора.

Модель пользователя в БД

  • id: UUID (первичный ключ).
  • password: Хешированный пароль.
  • phone: Номер телефона.
  • email: Адрес электронной почты.
  • transactions: Связь с таблицей транзакций (внешний ключ).
  • account_confirmation_status: Связь со статусом подтверждения (внешний ключ).
  • name: Имя пользователя.
  • role: Роль пользователя (например, user, admin).

2. Подтверждение учётной записи по email

Сервис отправки email

  • Создание отдельного сервиса в app/services для отправки электронных писем.
  • Поддержка как писем для подтверждения регистрации, так и для общей рассылки.
  • Интеграция с SMTP (например, Gmail). Все данные для подключения (логин, пароль/токен) берутся из .env файла.
  • Оформление писем с использованием простого HTML и CSS.

Модель подтверждения в БД

  • user_id: Ссылка на пользователя (внешний ключ).
  • confirmation_code: Код для подтверждения.
  • confirmation_status: Статус подтверждения (True/False).
  • expires_at: Срок жизни кода (600 секунд). По истечении срока статус автоматически меняется на False.

3. Система транзакций (заказов)

Модель транзакции

  • Создание отдельной таблицы для заказов/транзакций.

Статусы заказа

  • Статусы должны быть вынесены в перечисление (Enum) в /app/types/enums.
  • Список статусов:
    • Не оплачено вовремя
    • В процессе оплаты
    • В обработке
    • В доставке
    • Доставлено

Парсинг целевой аудитории из тематических сообществ

Необходимо собрать данные пользователей из отобранных сообществ ВКонтакте и Telegram, посвященных платным опросам и маркетинговым исследованиям. Задача включает в себя извлечение и структурирование информации о потенциальной целевой аудитории.

Разработка методического пособия с дизайном и подготовкой к печати

Требуется разработать дизайн-макет методического пособия, включая обложку, на основе предоставленного текстового материала в формате Word. Готовый макет необходимо подготовить к печати в типографии, следуя предоставленному референсу.