Фронт: без бейджа «Обе недели», недели на страницах преподов/аудиторий, иконка приложения

- пары с одинаковыми ч/з показываются одним списком без пометки недели
  (группы, преподаватели, аудитории); раньше на страницах преподавателей
  и аудиторий такое занятие дублировалось в обеих колонках
- бейдж «Обе недели» убран как информационный шум (отсутствие пометки
  и означает «любая неделя»)
- favicon: квадрат с градиентом боковой панели (#1b2dd8 → #167cf2) и совой
- PWA: manifest.json, sw.js, apple-touch-icon и иконки 192/512 —
  при добавлении на главный экран смартфона появляется логотип
- tools/make_icons.py — генерация иконок из логотипа (rsvg-convert)
- удалён неиспользуемый roomPeriodCell и мёртвый favicon.png
This commit is contained in:
2026-09-21 21:56:34 +03:00
parent 419e65e960
commit 3247ebcd64
12 changed files with 244 additions and 41 deletions

View File

@@ -72,6 +72,17 @@ nginx (https://schedule.our-place.ru) → 127.0.0.1:8090
Итог по паре: `{time, ч: {raw, lessons[]}, з: {raw, lessons[]}}`, где
`lesson = {marker, subject, teacher, room, note}`.
## Как отображается
- Если занятия числителя и знаменателя совпадают, пара показывается одним
списком без пометки недели (одинаково для групп, преподавателей и
аудиторий); иначе — две колонки «числитель»/«знаменатель», пустая
заменяется на «Окно».
- Подпись недели появляется только там, где недели действительно
различаются; бейдж «Сейчас» подсвечивает текущую неделю.
- Приложение можно «установить» на главный экран (манифест + service
worker + иконки приложения); на iOS иконку берёт `apple-touch-icon`.
## Структура кода
```
@@ -90,7 +101,12 @@ src/
main.py FastAPI: статика + прокси /api/* (таймаут 150 c)
static/
index.html, app.js, style.css
img/ логотипы (owl.svg, owl-white.svg), favicon.png
manifest.json PWA: имя, иконки, standalone-режим
sw.js минимальный service worker (без кэша) для установки приложения
img/ логотипы (owl.svg, owl-white.svg), иконки приложения
(app-icon.svg, icon-192/512.png, apple-touch-icon.png, favicon-32.png)
tools/
make_icons.py генерация иконок приложения из логотипа (нужен rsvg-convert)
tests/
conftest.py общие фикстуры
xlsx_builder.py генерация xlsx в памяти (без openpyxl)