rpi: eljur — триместры/промежутки, итоговые, доступ Поли; форматирование бота

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
gilfanovr
2026-10-12 08:54:27 +03:00
co-authored by Claude Opus 5.5
parent 9c589936e6
commit a4aee69170
+4 -4
View File
@@ -194,12 +194,12 @@ Docker CE 29.9 + Compose v5.6 из репо download.docker.com (в Debian ст
## Электронный дневник ЭлЖур (с 2026-10-12)
- Школа Morfosis, `https://morfosis.eljur.ru`, ученица 4В-К (`u.2701`). Родительская учётка — `/etc/eljur.env` (root:astra 640), в git нет.
- Скилл Astra **`eljur`** (`ruzzy/astra-bot`, `codex/skills/eljur/`), команда `/usr/local/bin/eljur`: `hw [день]`, `week [день]`, `grades [предмет]` (все оценки по предмету с датами и весом), `avg`, `watch`. Чтение — без подтверждения (`codex/rules/eljur.rules`); в ЭлЖуре ничего не меняется.
- API для родителя у ЭлЖура нет — разбор страниц: вход `POST /ajaxauthorize` (multipart: `username`, `password`, `return_uri`) → JWT-кука `jwt_v_2`, кэш сессии `/var/lib/eljur/cookies` (root:astra 2770/660). Дневник — `/journal-app/u.2701/week.N`; ⚠️ **знак обратный: `week.-1` — следующая неделя, `week.1` — прошлая**. Оценки — `/journal-student-grades-action/u.2701` (ячейки `name`=предмет, `mark_date`, `weight` 1–3, `cell-data`).
- **Таблицы** — `eljur table [-t I|II|III] [--from Д --to Д]`: компактная (~32 знака) таблица 5/4/3/2/Н/средний по предметам в блоке ```…```. Бот Astra с 2026-10-12 рендерит такие блоки моноширинно (HTML `<pre>` + `parse_mode`, при отказе Telegram — обычный текст; `astra-bot` `a9c43e2`, бэкап прежнего `/opt/astra-bot/bot.py.bak-20261012-tables`). Markdown-таблицы `| a | b |` Telegram не рисует.
- Скилл Astra **`eljur`** (`ruzzy/astra-bot`, `codex/skills/eljur/`), команда `/usr/local/bin/eljur`: `hw [день]`, `week [день]` (расписание + ДЗ), `grades [предмет]` (все оценки по предмету с датами и весом), `avg`, `table`, `final [--year]` (итоговые за триместры и годовая, `/journal-student-resultmarks-action`), `watch`; у `grades`/`avg`/`table` — `-t I|II|III` или `--from/--to` (промежуток — со всех триместров). Чтение — без подтверждения (`codex/rules/eljur.rules`, плюс бот сам подтверждает `eljur` hw/week/grades/table/avg/final); в ЭлЖуре ничего не меняется. **Поле** всё это тоже доступно (владелец 2026-10-12).
- API для родителя у ЭлЖура нет — разбор страниц: вход `POST /ajaxauthorize` (multipart: `username`, `password`, `return_uri`) → JWT-кука `jwt_v_2`, кэш сессии `/var/lib/eljur/cookies` (root:astra 2770/660). Дневник — `/journal-app/u.2701/week.N`; ⚠️ **знак обратный: `week.-1` — следующая неделя, `week.1` — прошлая**. Оценки — `/journal-student-grades-action/u.2701` (ячейки `name`=предмет, `id` — уникален только внутри предмета, не путать с `data-lid`, `mark_date`, `weight` 1–3, `cell-data`).
- **Таблицы** — `eljur table [-t I|II|III] [--from Д --to Д]`: компактная (~32 знака) таблица 5/4/3/2/Н/средний по предметам в блоке ```…```. Бот Astra с 2026-10-12 рендерит такие блоки моноширинно (HTML `<pre>` + `parse_mode`, при отказе Telegram — обычный текст; `astra-bot` `a9c43e2`, бэкап прежнего `/opt/astra-bot/bot.py.bak-20261012-tables`). Markdown-таблицы `| a | b |` Telegram не рисует — бот сам переводит их в выровненный `<pre>` (`777804c`); жирный/курсив/ссылки/списки тоже конвертируются в HTML (`a0c8952`).
- ⚠️ **Триместры:** границы — из JSON страницы (`sp_start`/`sp_end`, полночь по Кипру в UTC): I 01.09–27.11, II 01.12–26.02 (2026/27). Страница триместра `/sp.II%20триместр` отдаёт и оценки вне периода (II до начала показывает сентябрьские) — фильтруем по границам.
- ⚠️ Колонка «Средняя» на сайте пустая в HTML (её досчитывает JS) — средний балл считаем сами: взвешенный, «Н» не учитывается, «Общий» — среднее по предметам. На 2026-10-12: общий 4.88.
- **Уведомления о новых оценках** — `eljur-watch.timer` (каждые 30 мин, 07–22) → `eljur watch` (root, токен бота) → Telegram ботом @rasp_contol_bot в чат 607015. Состояние — `/var/lib/eljur/grades.json`; первый запуск 2026-10-12 запомнил 105 оценок без уведомления.
- **Уведомления о новых оценках** — `eljur-watch.timer` (каждые 30 мин, 07–22) → `eljur watch` (root, токен бота) → Telegram ботом @rasp_contol_bot в чат 607015. Состояние — `/var/lib/eljur/grades.json`; первый запуск 2026-10-12 запомнил 105 оценок без уведомления; в тот же день ключ оценки исправлен (раньше склеивал оценки одного предмета через `data-lid`) и состояние пересоздано (старое — `grades.json.bak-20261012`).
## Открытые хвосты (на 2026-10-11)
- USB3-хаб с питанием — теперь только ради скорости: WD Elements 1 ТБ работает второй копией в роутере (~10 МБ/с); на малине через хаб было бы ~100 МБ/с (обновлено 2026-10-11, было «копия одна»).