Модуль lms
Путь: app/lms/
Django app: app.lms
Назначение
LMS (Learning Management System) — система обучения и тестирования сотрудников. Позволяет создавать тесты, назначать их сотрудникам и отслеживать результаты.
Модели
Test
python
class Test(Model):
title = CharField()
description = TextField()
department = FK(Department, null=True) # для какого отдела
time_limit = IntegerField(null=True) # лимит времени (мин)
passing_score = IntegerField() # проходной балл (%)
is_active = BooleanField()
created_by = FK(User)
created_at = DateTimeField()Question
python
class Question(Model):
test = FK(Test)
text = TextField()
question_type = CharField(choices=[
('single', 'Один ответ'),
('multiple', 'Несколько ответов'),
('text', 'Свободный ответ'),
])
order = IntegerField()
points = IntegerField() # баллов за правильный ответChoice
python
class Choice(Model):
question = FK(Question)
text = CharField()
is_correct = BooleanField()
order = IntegerField()TestResult
python
class TestResult(Model):
test = FK(Test)
user = FK(User)
score = IntegerField() # набранный балл (%)
is_passed = BooleanField() # прошёл / не прошёл
started_at = DateTimeField()
finished_at = DateTimeField()
time_spent = IntegerField() # секундAnswer
python
class Answer(Model):
result = FK(TestResult)
question = FK(Question)
selected_choices = ManyToManyField(Choice)
text_answer = TextField(null=True) # для свободных ответов
is_correct = BooleanField()API
| Endpoint | Описание |
|---|---|
GET /api/v2/lms/tests/ | Список тестов |
POST /api/v2/lms/tests/ | Создать тест |
GET /api/v2/lms/tests/{id}/start/ | Начать тест |
POST /api/v2/lms/tests/{id}/submit/ | Сдать ответы |
GET /api/v2/lms/results/ | Результаты |
GET /api/v2/lms/results/my/ | Мои результаты |
Типовые сценарии
Создание теста
- HR-менеджер создаёт тест через интерфейс
- Добавляет вопросы с вариантами ответов
- Назначает тест отделу или конкретным сотрудникам
- Сотрудники получают уведомление в Telegram
Прохождение теста
- Сотрудник видит назначенный тест в разделе LMS
- Нажимает Начать тест
- Отвечает на вопросы (с учётом лимита времени)
- Отправляет ответы
- Система автоматически оценивает и показывает результат
Связи
app.users— сотрудникиapp.company_structure— отделы для назначения тестовapp.telegram— уведомления о назначенных тестах