study v1.6.0
Сводка перестала верить одному полю 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 — «Горит» и поля.