Календарь
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
}
Обновление события
Передаются только изменяемые поля. Если поле не передано — остаётся без изменений.
Telegram-напоминания
Если включены переменные окружения TELEGRAM_REMINDER_ENABLED=true, TELEGRAM_BOT_TOKEN и TELEGRAM_CHAT_ID, ARMory каждую минуту проверяет события с заполненным reminder_minutes и отправляет в Telegram напоминание за указанное количество минут до начала события.
Напоминание отправляется один раз. Если изменить время события или reminder_minutes, флаг отправки сбрасывается и напоминание придёт повторно.
Фронтенд
Календарь отображается на главной странице (/):
- Вкладка «Календарь» рядом с планировщиком
- Интерактивная сетка месяца с навигацией «вперёд / назад»
- Список событий справа от календаря
- Модальное окно для создания и редактирования событий, включая поле «Напомнить за (минут)»