Все заметные изменения в этом проекте фиксируются в этом файле.
Формат основан на Keep a Changelog.
- Улучшение жадного алгоритма составления расписания.
- Добавление распределения по кабинетам и учителям.
- Подключение OR-Tools/CP-SAT как второго варианта решателя.
- Англоязычная документация и пример для международных школ.
- Жадное распределение уроков по учителям с учётом:
- предметной специализации учителя,
- ограничения уроков в день (
max_lessons_per_day), - ограничения уроков в неделю (
max_lessons_per_week), - запрета на «два класса в один и тот же слот».
- Модуль экспорта расписания:
src/io/exporter.py— экспорт вtimetable.csvиtimetable.md.
- Служебный скрипт генерации и экспорта:
scripts/export_timetable.py— вызов ядра планировщика + сохранение CSV/Markdown.
- Отчёты по нагрузке:
scripts/teacher_load_report.py— отчёт по недельной и дневной нагрузке учителей с проверкой лимитов.scripts/class_load_report.py— отчёт по суточным баллам классов (СанПиН) и подсветкой перегрузок по дням.
- Обновлён
README.md:- раздел «Отчёты и вспомогательные скрипты» с описанием экспортёра и отчётов.
- Базовая структура проекта SANPIN-Schedule:
data/*.yamlдля описания предметов, классов, кабинетов, учителей и лимитов.src/cli.py— CLI для генерацииtimetable.csv.src/solvers/ortools_solver.py— жадный генератор расписания без OR-Tools.
- Генерация наглядного расписания в Markdown:
tools/generate_timetable_md.py→timetable.md.
- Скрипт проверки суточной нагрузки по баллам:
notebooks/01_check_daily_load.py.
- Автотест:
tests/test_daily_load_limits.py— проверка ограничений по урокам и баллам.
- Документация:
README.md— обзор проекта.docs/Описание_проекта.mdиdocs/Краткое_описание_для_школы.md.