No description
Find a file
2025-12-30 15:18:37 +03:00
backend Update timezone from Europe/London to Europe/Moscow across configuration, backend, and frontend files for consistent time handling. 2025-12-30 14:26:14 +03:00
frontend Enhance date rendering in schedule script to include contextual labels for today and tomorrow. Updated renderDay function to accept flags for isToday and isTomorrow, modifying the title accordingly. Also, added versioning to the script source in index.html for cache management. 2025-12-30 15:18:37 +03:00
.env.example Initial commit: Schedule service for son 2025-12-30 12:23:42 +03:00
.gitignore Initial commit: Schedule service for son 2025-12-30 12:23:42 +03:00
docker-compose.yml Update timezone from Europe/London to Europe/Moscow across configuration, backend, and frontend files for consistent time handling. 2025-12-30 14:26:14 +03:00
Dockerfile Update timezone from Europe/London to Europe/Moscow across configuration, backend, and frontend files for consistent time handling. 2025-12-30 14:26:14 +03:00
README.md Update timezone from Europe/London to Europe/Moscow across configuration, backend, and frontend files for consistent time handling. 2025-12-30 14:26:14 +03:00
requirements.txt Initial commit: Schedule service for son 2025-12-30 12:23:42 +03:00

Сервис расписания для сына

Сервис для управления и отображения расписания занятий с поддержкой веб-интерфейса и Telegram-бота.

Компоненты

  1. Backend (FastAPI) - API для работы с расписанием
  2. Публичная веб-страница - отображение расписания на сегодня/завтра (для планшета)
  3. Веб-админка - управление расписанием на неделю
  4. Telegram-бот - просмотр и редактирование расписания, напоминания

Установка и запуск

Требования

  • Docker и Docker Compose
  • Telegram Bot Token (получить у @BotFather)

Настройка

  1. Скопируйте файл .env.example в .env и укажите токен Telegram-бота:
cp .env.example .env
# Отредактируйте .env и замените your_telegram_bot_token_here на ваш реальный токен

Токен можно получить у @BotFather в Telegram.

  1. Запустите сервис:
docker compose up -d

Сервис будет доступен на:

Использование Telegram-бота

  1. Найдите вашего бота в Telegram
  2. Отправьте команду /start
  3. Используйте кнопки для просмотра и добавления записей

Структура данных

Task (Задача)

  • Привязка только к дате, без времени
  • Может повторяться еженедельно
  • Отображается выше событий со временем

Event (Занятие)

  • Привязка к дате, времени начала и длительности
  • Пересечения по времени запрещены
  • Имеет напоминания в Telegram (за 5 минут до начала)

API

GET /api/schedule?from=YYYY-MM-DD&to=YYYY-MM-DD

Получить расписание в диапазоне дат

POST /api/events?kind=task

Создать задачу

{
  "date": "2024-12-02",
  "title": "Название задачи",
  "repeat_weekly": false,
  "copy_to_weekdays": [2, 3, 4]
}

POST /api/events?kind=event

Создать занятие

{
  "date": "2024-12-02",
  "start_time": "14:30",
  "duration_min": 60,
  "title": "Название занятия"
}

PUT /api/events/{id}

Обновить запись

DELETE /api/events/{id}?scope=one_date|series

Удалить запись (для weekly tasks можно указать область применения)

Резервное копирование

База данных хранится в data/schedule.db. Для резервного копирования:

# Создать backup
docker compose exec backend python -c "import shutil; shutil.copy2('/app/data/schedule.db', '/app/data/schedule.db.backup')"

# Восстановить из backup
docker compose exec backend python -c "import shutil; shutil.copy2('/app/data/schedule.db.backup', '/app/data/schedule.db')"

Особенности

  • Таймзона: Europe/Moscow
  • Неделя начинается с понедельника
  • Дискретность времени: 15 минут (00, 15, 30, 45)
  • Диапазон времени: 08:00-20:00
  • Автообновление публичной страницы: каждые 5 минут
  • Напоминания в Telegram: за 5 минут до начала события