final_project_base

0

Описание

Языки

  • Python97,5%
  • Dockerfile2,5%
README.md

📝 Генератор вариантов заданий для студентов

Python License GitVerse

📖 Описание

Генератор вариантов заданий — это инструмент для автоматического создания уникальных вариантов тестов для каждого студента. Система обеспечивает:

  • 🎲 Уникальность вариантов — каждый студент получает свой набор вопросов
  • 🔄 Воспроизводимость — один и тот же seed генерирует идентичные варианты
  • 📊 Балансировку сложности — настраиваемое количество легких/средних/сложных вопросов
  • 📁 Экспорт результатов — JSON и текстовые файлы для печати

🚀 Установка

Требования

  • Python 3.9+
  • pip

Шаги установки

💻 Использование

Базовый пример

Командная строка

Пакетная генерация

Добавление своих вопросов

Создайте JSON файл с вопросами:

📁 Структура проекта

. ├── src/ # Исходный код │ ├── __init__.py │ ├── main.py # Точка входа CLI │ ├── generator.py # Основная логика генерации │ └── utils.py # Утилиты (экспорт, валидация) ├── tests/ # Тесты │ ├── __init__.py │ ├── test_generator.py # Тесты генератора │ └── test_utils.py # Тесты утилит ├── data/ # Данные (банки вопросов) ├── .gitverse/workflows/ # CI/CD для GitVerse │ ├── tests.yml # Автотесты и линтинг │ └── generate-variants.yml # Генерация по расписанию ├── Dockerfile # Docker образ ├── docker-compose.yml # Docker Compose ├── requirements.txt # Зависимости ├── .gitignore └── README.md

✅ Тестирование

🔧 CI/CD

Проект использует GitVerse CI/CD для:

1. Автоматическое тестирование (
tests.yml
)

  • Запуск при каждом push и pull request
  • Тестирование на Python 3.9, 3.10, 3.11
  • Проверка PEP 8 с flake8
  • Проверка форматирования с black
  • Отчет о покрытии кода

2. Генерация вариантов (
generate-variants.yml
)

  • Scheduled workflow: автоматический запуск каждый понедельник
  • Workflow dispatch: ручной запуск с параметрами:
    • Количество студентов
    • Количество вопросов по сложности
    • Добавление математических задач
  • Artifact upload: сохранение сгенерированных файлов
  • Auto-commit: автоматический коммит результатов

Ручной запуск генерации:

  1. Перейдите во вкладку "Actions"
  2. Выберите "Generate Test Variants"
  3. Нажмите "Run workflow"
  4. Укажите параметры
  5. Скачайте артефакты после завершения

🐳 Docker

Проект можно запустить через Docker:

Docker Compose конфигурация:

  • generator — генерация вариантов с сохранением в
    ./output/
  • tests — запуск pytest в контейнере

📊 Примеры вывода

Консольный вывод

============================================================ ГЕНЕРАТОР ВАРИАНТОВ ЗАДАНИЙ ДЛЯ СТУДЕНТОВ ============================================================ Использование примера банка вопросов... Всего вопросов в банке: 9 По сложности: {'easy': 3, 'medium': 3, 'hard': 3} ------------------------------------------------------------ Генерация вариантов для 3 студентов... Параметры: easy=3, medium=4, hard=3 ✓ student_1: вариант VAR-A1B2C3D4 (10 вопросов, 20 баллов) ✓ student_2: вариант VAR-E5F6G7H8 (10 вопросов, 20 баллов) ✓ student_3: вариант VAR-I9J0K1L2 (10 вопросов, 20 баллов) ============================================================ СТАТИСТИКА ============================================================ Всего вариантов: 3 Среднее вопросов на вариант: 10.0 Среднее баллов на вариант: 20.0 Диапазон баллов: 20 - 20

Текстовый файл теста

============================================================ ТЕСТ - Вариант VAR-A1B2C3D4 Студент: student_1 Всего баллов: 20 ============================================================ Вопрос 1. (1 балл(ов)) [EASY] Какая функция используется для вывода в консоль в Python? A) print() B) echo() C) console.log() D) write() Вопрос 2. (2 балл(ов)) [MEDIUM] Что вернет выражение: len([1, 2, 3, 4, 5])? ... ============================================================ Конец теста ============================================================

📝 Типы вопросов

ТипОписаниеПример
multiple_choice
Выбор из вариантовA, B, C, D
true_false
Верно/НеверноВерно, Неверно
fill_blank
Заполнить пропускЧисловой ответ
math
Математическая задачаВычисления, уравнения
matching
СопоставлениеПары соответствий

🎓 Применение в образовании

  • Контрольные работы — уникальный вариант для каждого студента
  • Домашние задания — автоматическая генерация заданий
  • Подготовка к экзаменам — создание тренировочных тестов
  • Олимпиады — генерация разных вариантов для параллелей

📄 Лицензия

MIT License

👤 Автор

Студент УрФУ


Создано в рамках творческого задания по программированию