kompegeGen — это консольное приложение на Kotlin для генерации вариантов задач по материалам kompege.ru.
Проект нужен для того, чтобы быстро собирать индивидуальные варианты по номерам заданий, не выдавая ученику задачи, которые он уже решал. Программа хранит локальную базу идентификаторов задач, ведет учет решенных задач по каждому ученику и формирует PDF-файл с новым вариантом.
Приложение при запуске:
- запрашивает с
kompege.ruсписок задач по номерам1..27, кроме20и21; - сохраняет найденные
taskIdв локальную SQLite-базу; - запускает интерактивную консоль с командами для работы с вариантами.
При генерации варианта программа:
- берет по одной задаче для каждого номера;
- исключает задачи, которые уже отмечены как решенные у конкретного ученика;
- сохраняет состав варианта в базе;
- автоматически помечает выданные задачи как решенные для выбранного ученика;
- создает HTML и PDF с текстами задач.
Проект полезен преподавателю или репетитору, которому нужно:
- собирать новые варианты без ручного подбора;
- вести простой локальный учет уже выданных или решенных задач;
- получать готовый PDF для печати или отправки ученику.
/help— показать список доступных команд./variant [studentId]— сгенерировать новый вариант для ученика. ЕслиstudentIdне указан, используетсяdefault./solved <taskId>или/solved <studentId> <taskId>— отметить задачу как решенную./check <taskId>или/check <studentId> <taskId>— проверить, отмечена ли задача как решенная./exit— завершить программу.
Требования:
- Java 17+
- Maven
Запуск в режиме разработки:
mvn exec:javaСборка jar:
mvn clean packageПосле сборки будет создан fat-jar, который можно запускать отдельно.
Проект использует:
- Kotlin 1.9
- OkHttp для запросов к API
kompege.ru kotlinx.serializationдля разбора JSON- SQLite для локального хранения данных
openhtmltopdfиjsoupдля подготовки HTML и генерации PDF
- Логика генерации варианта пока базовая: для каждого номера берется первая подходящая задача из локального списка.
- При старте приложение заново подтягивает список задач с API.
- Задачи, попавшие в сгенерированный вариант, сразу помечаются как решенные для ученика.