Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Микросервис управления курсами

Этот микросервис предназначен для управления курсами, взаимодействия пользователей с курсами, отслеживания посещаемости и сбора статистики. Он поддерживает три основные роли пользователей: Администратор, Ведущий курса и Участник. Сервис взаимодействует с другими микросервисами через API и работает в среде Telegram WebApp.

Функционал

Функционал администратора:

  1. Управление курсами:

    • Добавление новых курсов.
    • Загрузка баннеров для курсов.
    • Установка расписания курса, включая даты начала и окончания.
    • Настройка баллов за посещение курса (в разработке).
    • Настройка анонсов для предстоящих курсов (в разработке).
  2. Управление списком курсов:

    • Просмотр всех доступных курсов (в том числе из МИСИС).
    • Редактирование и удаление курсов.
  3. Работа с курсом:

    • Изменение деталей курса (только для курсов, которыми управляет администратор).
    • Просмотр списка зарегистрированных участников курса.
  4. Статистика (в разработке):

    • Сбор данных о регистрациях, посещениях и завершениях курсов (может быть исключено из MVP).

Функционал ведущего курса (в разработке, т.к тз не оч корректно составлено):

  1. Редактирование курса:

    • Обновление информации о курсе (описание, расписание, баннер) для своих курсов.
    • Управление напоминаниями о занятиях.
  2. Управление участниками:

    • Отправка уведомлений участникам курса.
    • Отметка посещений (например, с использованием сканирования QR-кодов).
  3. Обратная связь:

    • Просмотр статистики курса (например, посещения, завершения).
    • Сбор отзывов от участников по завершению курса.

Функционал участника:

  1. Просмотр курсов:

    • Просмотр доступных курсов и их информации.
  2. Взаимодействие с курсами:

    • Регистрация на курсы.
    • Просмотр статистики посещаемости курса (не входит в MVP).
    • Участие в курсе с отметкой посещения (скорее всего, не входит в MVP).
  3. Обратная связь:

    • Заполнение формы обратной связи по окончанию курса.
  4. Напоминания (в разработке):

    • Получение уведомлений о предстоящих занятиях.

API Эндпоинты

Управление курсами:

  • POST /courses: Создание нового курса.
  • GET /courses: Получить список всех доступных курсов.
  • GET /courses/{course_id}: Получить детали курса.
  • PUT /courses/{course_id}: Обновить курс.
  • DELETE /courses/{course_id}: Удалить курс.

Управление пользователями:

  • POST /register: Регистрация нового пользователя (админ, ведущий, участник).
  • GET /users/{user_id}: Получить информацию о пользователе.
  • PUT /users/{user_id}: Обновить информацию о пользователе.
  • DELETE /users/{user_id}: Удалить пользователя.

Запись на курс:

  • POST /enroll: Записать пользователя на курс.
  • GET /enrollments/{enrollment_id}: Получить информацию о записи.
  • PUT /enrollments/{enrollment_id}: Обновить статус записи (например, завершение курса).
  • DELETE /enrollments/{enrollment_id}: Удалить запись.

Посещаемость:

  • POST /attendance: Отметить посещение пользователя.
  • GET /attendance/{attendance_id}: Получить информацию о посещении.
  • PUT /attendance/{attendance_id}: Обновить статус посещения.
  • DELETE /attendance/{attendance_id}: Удалить запись о посещении.

Обратная связь:

  • POST /feedback: Отправить отзыв о курсе.
  • GET /feedback/{feedback_id}: Получить информацию о отзыве.

Логи:

  • GET /logs: Получить список всех действий в системе.

Схема базы данных

База данных состоит из нескольких таблиц для хранения информации о курсах, пользователях, записях, посещениях, отзывах и логах.

Основные таблицы:

  1. Courses (Курсы):

    • id: Уникальный идентификатор.
    • name: Название курса.
    • description: Описание курса.
    • banner_url: URL для баннера курса.
    • schedule: Расписание (может быть в формате JSON или отдельной таблицей).
    • is_from_misis: Флаг, показывающий, из МИСИС ли курс.
    • start_date: Дата начала курса.
    • end_date: Дата окончания курса.
    • points_per_visit: Баллы за посещение (не входит в MVP).
    • access_level: Уровень доступа (админ, ведущий, участник).
  2. Users (Пользователи):

    • id: Уникальный идентификатор.
    • email: Электронная почта пользователя.
    • role: Роль пользователя (админ, ведущий, участник).
  3. Enrollments (Записи на курсы):

    • id: Уникальный идентификатор.
    • user_id: Идентификатор пользователя.
    • course_id: Идентификатор курса.
    • status: Статус (зарегистрирован, завершил, отчислен).
  4. Attendance (Посещения):

    • id: Уникальный идентификатор.
    • enrollment_id: Идентификатор записи на курс.
    • lesson_date: Дата занятия.
    • is_attended: Отметка о посещении.
  5. Feedback (Отзывы):

    • id: Уникальный идентификатор.
    • course_id: Идентификатор курса.
    • user_id: Идентификатор пользователя.
    • rating: Оценка курса.
    • comment: Текст отзыва.
  6. Logs (Логи):

    • id: Уникальный идентификатор.
    • user_id: Идентификатор пользователя, совершившего действие.
    • action: Действие (создание курса, редактирование и т.д.).
    • timestamp: Время действия.

Сделал мини регу, чтобы было удобно тыкаться в вакууме

uid если одинаковый - 500. id 1,2 заняты уже, но по ним можно логиниться, это 2 админа

так же если в роли указать admin, сможете использовать весь функционал. так-что, рекомендую. остальные роли не влияют ни на что

Используемые технологии

  • FastAPI: Для построения API.
  • SQLAlchemy: Для работы с базой данных.
  • PostgreSQL: Для хранения данных.
  • Uvicorn: Для запуска FastAPI приложения.

About

courses for misis

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages