Админка осталась отдельной ветвью admin-panel; в master её нет (ни кода, ни страниц, ни переменных окружения, ни тома настроек). Что перенесено: - parsing: имена групп вида «ИВТ-ТОП-11БО» распознаются, порядок групп = порядок столбцов таблицы (похожие заголовки с пробелами группой не считаются); - main: GET /groups отдаёт группы в порядке столбцов; интервал обновления из SCHEDULE_INTERVAL_MINUTES (со старым SCHEDULE_CACHE_TTL как fallback); - cache: по интервалу сверяем modified — если файл не менялся, не скачиваем; при загрузке считаем sha256 и пишем в лог и /status, изменился ли файл; - source: запросы к Яндекс.Диску с no-cache и меткой времени; - frontend: ответы API с Cache-Control: no-store, общий .env из корня проекта (и backend, и frontend), страницы/прокси админки нет; - Dockerfile/compose/.env.example: без ADMIN_* и без тома настроек; в api-образ попадают все модули backend (проверяется тестом test_deploy); - Makefile: make help/venv/run/run-api/run-front/test + docker-цели — «make run» поднимает всё локально без Docker; - README: быстрый старт, полный список зависимостей, запуск локально и в Docker; - deploy/: пример nginx и инструкция «второй стенд рядом с основным». Тесты: 114 (удалены админские), все зелёные.
15 lines
785 B
Plaintext
15 lines
785 B
Plaintext
# --- расписание --------------------------------------------------------------
|
||
# Публичная ссылка на Яндекс.Диск с таблицей расписания (обязательна)
|
||
SCHEDULE_LINK=
|
||
|
||
# Как часто перечитывать таблицу, минут
|
||
SCHEDULE_INTERVAL_MINUTES=15
|
||
# Устаревшее: интервал в секундах (используется, только если не задан предыдущий)
|
||
SCHEDULE_CACHE_TTL=900
|
||
# Пауза между повторными попытками, если источник недоступен, секунд
|
||
SCHEDULE_RETRY_AFTER=60
|
||
|
||
# --- порты (только для docker) -------------------------------------------------
|
||
API_PORT=8000
|
||
FRONTEND_PORT=8080
|