Этот микросервис предназначен для управления курсами, взаимодействия пользователей с курсами, отслеживания посещаемости и сбора статистики. Он поддерживает три основные роли пользователей: Администратор, Ведущий курса и Участник. Сервис взаимодействует с другими микросервисами через API и работает в среде Telegram WebApp.
-
Управление курсами:
- Добавление новых курсов.
- Загрузка баннеров для курсов.
- Установка расписания курса, включая даты начала и окончания.
- Настройка баллов за посещение курса (в разработке).
- Настройка анонсов для предстоящих курсов (в разработке).
-
Управление списком курсов:
- Просмотр всех доступных курсов (в том числе из МИСИС).
- Редактирование и удаление курсов.
-
Работа с курсом:
- Изменение деталей курса (только для курсов, которыми управляет администратор).
- Просмотр списка зарегистрированных участников курса.
-
Статистика (в разработке):
- Сбор данных о регистрациях, посещениях и завершениях курсов (может быть исключено из MVP).
-
Редактирование курса:
- Обновление информации о курсе (описание, расписание, баннер) для своих курсов.
- Управление напоминаниями о занятиях.
-
Управление участниками:
- Отправка уведомлений участникам курса.
- Отметка посещений (например, с использованием сканирования QR-кодов).
-
Обратная связь:
- Просмотр статистики курса (например, посещения, завершения).
- Сбор отзывов от участников по завершению курса.
-
Просмотр курсов:
- Просмотр доступных курсов и их информации.
-
Взаимодействие с курсами:
- Регистрация на курсы.
- Просмотр статистики посещаемости курса (не входит в MVP).
- Участие в курсе с отметкой посещения (скорее всего, не входит в MVP).
-
Обратная связь:
- Заполнение формы обратной связи по окончанию курса.
-
Напоминания (в разработке):
- Получение уведомлений о предстоящих занятиях.
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: Получить список всех действий в системе.
База данных состоит из нескольких таблиц для хранения информации о курсах, пользователях, записях, посещениях, отзывах и логах.
-
Courses (Курсы):
id: Уникальный идентификатор.name: Название курса.description: Описание курса.banner_url: URL для баннера курса.schedule: Расписание (может быть в формате JSON или отдельной таблицей).is_from_misis: Флаг, показывающий, из МИСИС ли курс.start_date: Дата начала курса.end_date: Дата окончания курса.points_per_visit: Баллы за посещение (не входит в MVP).access_level: Уровень доступа (админ, ведущий, участник).
-
Users (Пользователи):
id: Уникальный идентификатор.email: Электронная почта пользователя.role: Роль пользователя (админ, ведущий, участник).
-
Enrollments (Записи на курсы):
id: Уникальный идентификатор.user_id: Идентификатор пользователя.course_id: Идентификатор курса.status: Статус (зарегистрирован, завершил, отчислен).
-
Attendance (Посещения):
id: Уникальный идентификатор.enrollment_id: Идентификатор записи на курс.lesson_date: Дата занятия.is_attended: Отметка о посещении.
-
Feedback (Отзывы):
id: Уникальный идентификатор.course_id: Идентификатор курса.user_id: Идентификатор пользователя.rating: Оценка курса.comment: Текст отзыва.
-
Logs (Логи):
id: Уникальный идентификатор.user_id: Идентификатор пользователя, совершившего действие.action: Действие (создание курса, редактирование и т.д.).timestamp: Время действия.
uid если одинаковый - 500. id 1,2 заняты уже, но по ним можно логиниться, это 2 админа
так же если в роли указать admin, сможете использовать весь функционал. так-что, рекомендую. остальные роли не влияют ни на что
- FastAPI: Для построения API.
- SQLAlchemy: Для работы с базой данных.
- PostgreSQL: Для хранения данных.
- Uvicorn: Для запуска FastAPI приложения.