Skip to content

Модуль 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/Мои результаты

Типовые сценарии

Создание теста

  1. HR-менеджер создаёт тест через интерфейс
  2. Добавляет вопросы с вариантами ответов
  3. Назначает тест отделу или конкретным сотрудникам
  4. Сотрудники получают уведомление в Telegram

Прохождение теста

  1. Сотрудник видит назначенный тест в разделе LMS
  2. Нажимает Начать тест
  3. Отвечает на вопросы (с учётом лимита времени)
  4. Отправляет ответы
  5. Система автоматически оценивает и показывает результат

Связи

  • app.users — сотрудники
  • app.company_structure — отделы для назначения тестов
  • app.telegram — уведомления о назначенных тестах