Skip to content

study v1.6.0

Choose a tag to compare

@nowherewashere nowherewashere released this 20 Sep 23:46
· 6 commits to master since this release

Сводка перестала верить одному полю Moodle: состояние ответа считается по всем, study submit проверяет себя до отправки, а отказ сервера больше не выглядит как «Отправлено».

  • Одна функция знает семантику состояния — submission_state(): ею пользуются сводка, study task и study submit. Учтено: оценка без файла (#2), групповой ответ (teamsubmission), задание без ответа в ТУИС (очное — offline), индивидуальное продление срока (extensionduedate заменяет срок и поднимает cutoff), «приём ещё не открыт» (allowsubmissionsfromdate) и «приём закрыт» — по lastattempt.canedit, серверному признаку (cutoff, продление, блокировка, истёкшая запись), а не по дате.
  • «Приём закрыт» ≠ «просрочено». У 42 из 43 заданий РУДН cutoffdate == duedate: после срока ТУИС ответ не примет, сдаётся только «Пересдача …». Такая работа остаётся в «Сроках» как «приём закрыт», а в «Горит» идёт пересдача. «Заблокировано», «откроется DD.MM», «очно / без ответа в ТУИС» — новые подписи; продлённая работа переезжает из просроченного в сроки, снимок хранит исходный срок.
  • study submit спрашивает состояние ответа и отказывает до отправки: приём закрыт, заблокировано, уже оценено, ответ отправлен и правка закрыта, приём ещё не открыт, очное задание. План показывает состояние и что будет после сохранения; при submissiondrafts=1 черновик тут же сдаётся mod_assign_submit_for_grading (с подтверждением авторства при requiresubmissionstatement).
  • Отказ Moodle — ошибка. Ручки записи отвечают HTTP 200 и списком warnings; раньше «Отправлено» печаталось и тогда. Теперь это StudyError с причиной из item («The due date for this assignment has now passed») и code=warningcode.
  • Выбор темы считает только открытые варианты (disabled — заполненные); тест с timeopen в будущем — «откроется DD.MM».
  • --json: у задания graded, closed, opens, canedit, locked; not_started — без закрытых к приёму и очных. Документация: docs/tuis-api.md — блок «Состояние ответа — не одно поле» (включая cansubmit — кнопка, а не признак; abandoned в лимите попыток; timeclose = 0 и задания без срока; скрытые оценки), AGENTS.md — грабля «приём закрыт», README — «Горит» и поля.