Skip to content

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Проект: Система баллов (TDR)

Цель

Разработка API для системы управления баллами пользователей с возможностью:

  • Регистрации/аутентификации
  • Транзакций между пользователями
  • Маркетплейса для обмена баллами
  • Администрирования системы

Описание решения

Точки входа в заявку

  • /register - регистрация нового пользователя
  • /login - аутентификация (JWT)
  • /me - информация о текущем пользователе

Анкета нативной заявки

  • Регистрация через email/password
  • Начальный баланс: 100 баллов
  • Возможность назначения админов через TRUSTED_ADMIN_EMAILS

Выдача (подходящие мастера)

  • /leaderboard - топ-10 пользователей по балансу
  • /marketplace/listings - доступные предложения
  • /balance - проверка текущего баланса

Заказ

  • /marketplace/create - создание предложения
  • /marketplace/accept - принятие предложения

Участие объявлений в Заявках

  • Система транзакций при передаче баллов
  • История операций сохраняется

Текущий эксперимент

  • Докеризация приложения (docker-compose)
  • Использование Postgres в качестве БД
  • JWT-аутентификация

Схема высокоуровневой архитектуры

Основные сервисы

  1. Auth Service:

    • Регистрация/аутентификация
    • JWT-токены
    • Ролевая модель (user/admin)
  2. User Service:

    • Управление балансом
    • Транзакции между пользователями
    • Лидерборд
  3. Marketplace Service:

    • Создание/принятие предложений
    • Валидация операций
  4. Admin Service:

    • Назначение админов
    • Пополнение балансов

Схема зависимостей сервисов

[Клиент] -> [API Gateway (FastAPI)] ├──> Auth Service ├──> User Service ├──> Marketplace Service └──> Admin Service └──> DB (PostgreSQL)

Компромиссы

  1. Безопасность vs Удобство:

    • JWT без refresh-токенов
    • Админские права через env-переменные
  2. Производительность vs Консистентность:

    • Нет кеширования запросов
    • ACID-транзакции для операций с баллами
  3. Масштабируемость:

    • Монолитная архитектура
    • Одна БД для всех сервисов

Альтернативы

  1. Аутентификация:

    • OAuth2 вместо JWT
    • Сессии вместо токенов
  2. Архитектура:

    • Микросервисы вместо монолита
    • Отдельные БД для разных сервисов
  3. Баланс:

    • Криптовалютная модель вместо баллов
    • Внешние платежные системы

Вопросы

  1. Как обрабатывать спорные транзакции?
  2. Нужна ли система отката операций?
  3. Как масштабировать маркетплейс при росте пользователей?
  4. Нужны ли push-уведомления о транзакциях?

Оценка

Компонент Сложность Приоритет
Auth Средняя Высокий
User Balance Низкая Критичный
Transactions Высокая Высокий
Marketplace Средняя Средний
Admin Panel Низкая Низкий

Итог: MVP реализуем за 2-3 неде

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages