final_project_base
4 месяца назад
4 дня назад
4 месяца назад
4 месяца назад
4 месяца назад
4 месяца назад
4 месяца назад
4 месяца назад
4 месяца назад
4 месяца назад
4 месяца назад
README.md
📝 Генератор вариантов заданий для студентов
📖 Описание
Генератор вариантов заданий — это инструмент для автоматического создания уникальных вариантов тестов для каждого студента. Система обеспечивает:
- 🎲 Уникальность вариантов — каждый студент получает свой набор вопросов
- 🔄 Воспроизводимость — один и тот же 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)
tests.yml
- Запуск при каждом push и pull request
- Тестирование на Python 3.9, 3.10, 3.11
- Проверка PEP 8 с flake8
- Проверка форматирования с black
- Отчет о покрытии кода
2. Генерация вариантов (generate-variants.yml)
generate-variants.yml
- Scheduled workflow: автоматический запуск каждый понедельник
- Workflow dispatch: ручной запуск с параметрами:
- Количество студентов
- Количество вопросов по сложности
- Добавление математических задач
- Artifact upload: сохранение сгенерированных файлов
- Auto-commit: автоматический коммит результатов
Ручной запуск генерации:
- Перейдите во вкладку "Actions"
- Выберите "Generate Test Variants"
- Нажмите "Run workflow"
- Укажите параметры
- Скачайте артефакты после завершения
🐳 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])?
...
============================================================
Конец теста
============================================================
📝 Типы вопросов
| Тип | Описание | Пример |
|---|---|---|
| Выбор из вариантов | A, B, C, D |
| Верно/Неверно | Верно, Неверно |
| Заполнить пропуск | Числовой ответ |
| Математическая задача | Вычисления, уравнения |
| Сопоставление | Пары соответствий |
🎓 Применение в образовании
- Контрольные работы — уникальный вариант для каждого студента
- Домашние задания — автоматическая генерация заданий
- Подготовка к экзаменам — создание тренировочных тестов
- Олимпиады — генерация разных вариантов для параллелей
📄 Лицензия
MIT License
👤 Автор
Студент УрФУ
Создано в рамках творческого задания по программированию