Перейти к содержанию

Календарь

ARMory включает встроенный календарь для планирования и отслеживания событий.

Возможности

  • Визуальный календарь — отображение событий в виде месячной сетки с помощью FullCalendar
  • Создание событий — задайте название, описание, дату начала и окончания
  • События на весь день — поддержка флага all_day
  • Цветовая маркировка — каждое событие может иметь свой цвет (по умолчанию #a78bfa)
  • Заметки — поле note для дополнительной информации
  • Напоминания в Telegram — для каждого события можно задать, за сколько минут до начала прислать уведомление
  • Быстрый доступ — календарь открывается на главной странице вместе с планировщиком

Модель данных

CalendarEvent

Поле Тип Описание
id Integer Первичный ключ
title String(255) Название события (обязательно)
description Text Описание события
note Text Дополнительная заметка
start_date DateTime Дата и время начала (обязательно)
end_date DateTime Дата и время окончания
all_day Boolean Событие на весь день (по умолчанию False)
color String(7) Цвет события в HEX (по умолчанию #a78bfa)
reminder_minutes Integer За сколько минут до начала отправить напоминание в Telegram
notified_at DateTime Время отправки напоминания (чтобы не дублировать)
created_at DateTime Дата создания

Таблица calendar_events создаётся автоматически при старте приложения (миграция в lifespan).

API

Метод Путь Описание
GET /api/calendar/events Получить список всех событий
POST /api/calendar/events Создать новое событие
PATCH /api/calendar/events/{id} Обновить событие
DELETE /api/calendar/events/{id} Удалить событие
POST /api/calendar/test-telegram-reminder Отправить тестовое сообщение в Telegram

Создание события

POST /api/calendar/events
{
  "title": "Релиз v1.0",
  "description": "Выпуск новой версии",
  "start_date": "2026-06-15T10:00:00",
  "end_date": "2026-06-15T12:00:00",
  "all_day": false,
  "color": "#34d399",
  "reminder_minutes": 30
}

Обновление события

Передаются только изменяемые поля. Если поле не передано — остаётся без изменений.

PATCH /api/calendar/events/1
{
  "title": "Релиз v1.1",
  "color": "#f87171"
}

Telegram-напоминания

Если включены переменные окружения TELEGRAM_REMINDER_ENABLED=true, TELEGRAM_BOT_TOKEN и TELEGRAM_CHAT_ID, ARMory каждую минуту проверяет события с заполненным reminder_minutes и отправляет в Telegram напоминание за указанное количество минут до начала события.

Напоминание отправляется один раз. Если изменить время события или reminder_minutes, флаг отправки сбрасывается и напоминание придёт повторно.

Фронтенд

Календарь отображается на главной странице (/):

  • Вкладка «Календарь» рядом с планировщиком
  • Интерактивная сетка месяца с навигацией «вперёд / назад»
  • Список событий справа от календаря
  • Модальное окно для создания и редактирования событий, включая поле «Напомнить за (минут)»