115 lines
4.5 KiB
Markdown
115 lines
4.5 KiB
Markdown
# Reminders — Система напоминаний
|
||
|
||
## Концепция
|
||
Единый интерфейс для создания, управления и доставки напоминаний. Цель — 100% гарантия доставки в нужное время.
|
||
|
||
## Проблема
|
||
OpenClaw heartbeat/cron не дают 100% гарантии. Нужно комбинировать внутренние механизмы с внешним cron.
|
||
|
||
## Архитектура (концепт)
|
||
|
||
```
|
||
Пользователь OpenClaw Внешний cron
|
||
│ │ │
|
||
│── создаёт ────────→│ │
|
||
│ │── пишет в БД ────────│
|
||
│ │ │
|
||
│←── подтверждение ──│ │
|
||
│ │ │── триггер в ~time ──→ Telegram
|
||
```
|
||
|
||
## Способы доставки
|
||
|
||
| Способ | Гарантия | Сложность | Примечание |
|
||
|--------|----------|-----------|------------|
|
||
| **OpenClaw cron** | ~95% | Низкая | Работает пока контейнер жив |
|
||
| **Heartbeat** | ~90% | Низкая | Только если Слава пишет |
|
||
| **Внешний cron (VPS)** | 100% | Средняя | Нужен доступ к VPS |
|
||
| **Telegram Bot API** | 100% | Средняя | Требует cronjob сервис |
|
||
| **Pushover / SMS** | 100% | Высокая | Дополнительные сервисы |
|
||
|
||
## Компоненты
|
||
|
||
### 1. Reminders DB
|
||
```json
|
||
[
|
||
{
|
||
"id": "uuid",
|
||
"text": "Позвонить Вике",
|
||
"time": "2026-04-12T10:00:00Z",
|
||
"repeat": null,
|
||
"method": "telegram",
|
||
"status": "pending",
|
||
"created": "2026-04-11T22:42:00Z"
|
||
}
|
||
]
|
||
```
|
||
|
||
### 2. Reminder Manager
|
||
- Создание / редактирование / удаление
|
||
- Проверка overlaps
|
||
- Логирование доставок
|
||
|
||
### 3. Delivery Checker
|
||
- Периодическая проверка pending напоминаний
|
||
- Интеграция с heartbeat
|
||
|
||
## Статус: research ✅
|
||
|
||
**Решение выбрано: Todoist** — лучший баланс API, интеграций и UX.
|
||
|
||
## Почему Todoist
|
||
|
||
| Критерий | Оценка |
|
||
|----------|--------|
|
||
| REST API | ✅ Полное, открытое, хорошо документировано |
|
||
| Telegram бот | ✅ @SendToTodoist (forward → задача в Inbox) |
|
||
| Напоминания | ✅ Push + email + Telegram (Premium: в точное время) |
|
||
| Мобильные приложения | ✅ iOS, Android |
|
||
| Десктоп | ✅ Web, macOS, Windows |
|
||
| Естественный язык | ✅ "завтра в 10", "каждый понедельник" |
|
||
| Бесплатный план | ⚠️ 5 проектов, без recurring reminders |
|
||
|
||
**Todoist Premium** (~$4/мес) — напоминания в точное время через push/Telegram.
|
||
|
||
## Как это работает
|
||
|
||
```
|
||
Голос Славы (Telegram)
|
||
→ OpenClaw (Whisper: текст)
|
||
→ OpenClaw: парсит естественный язык
|
||
→ Todoist API: создаёт задачу с due date
|
||
→ Todoist: push-уведомление в нужное время
|
||
```
|
||
|
||
**Todoist API** ( Rest API v2):
|
||
```
|
||
POST /rest/v2/tasks
|
||
{
|
||
"content": "Позвонить Вике",
|
||
"due_string": "tomorrow at 10",
|
||
"priority": 3
|
||
}
|
||
```
|
||
|
||
**Моя роль:**
|
||
- Голос → текст ( Whisper)
|
||
- Текст → структура задачи (парсинг)
|
||
- Todoist API → создание задачи
|
||
- Запросы к Todoist (список задач, отчёты)
|
||
|
||
## Двусторонняя интеграция
|
||
|
||
| Направление | Как |
|
||
|-------------|-----|
|
||
| Слава → Todoist | Голос/текст → OpenClaw → API |
|
||
| Todoist → Слава | Push notification (Todoist native) |
|
||
| OpenClaw → Todoist | API (чтение, создание, редактирование) |
|
||
| Todoist → OpenClaw | По запросу (Спрашивает "что сегодня?") |
|
||
|
||
## Следующий шаг
|
||
1. Получить Todoist API токен (todoist.com/settings/integrations/developer)
|
||
2. Добавить `TODOIST_API_TOKEN` в `.env`
|
||
3. Протестировать создание задачи через API
|
||
4. Создать скилл `todoist` с командами: add, list, done, remind
|