No description
Find a file
2025-12-30 13:54:59 +03:00
backend Add delete functionality for tasks and events in Telegram bot. Implemented commands for deleting items, including weekly tasks with scope options. Enhanced main menu and button handlers for better user interaction. Updated state management for deletion process. 2025-12-30 13:54:59 +03:00
frontend Refactor date handling in schedule script to ensure correct week calculations and improve error handling. Added validation for week start and end days, enhanced date formatting, and restricted date selection in task/event modals to current and next week. Updated navigation buttons to reflect current week status. 2025-12-30 13:07:17 +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 Initial commit: Schedule service for son 2025-12-30 12:23:42 +03:00
Dockerfile Initial commit: Schedule service for son 2025-12-30 12:23:42 +03:00
README.md Initial commit: Schedule service for son 2025-12-30 12:23:42 +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/London
  • Неделя начинается с понедельника
  • Дискретность времени: 15 минут (00, 15, 30, 45)
  • Диапазон времени: 08:00-20:00
  • Автообновление публичной страницы: каждые 5 минут
  • Напоминания в Telegram: за 5 минут до начала события