Files
wiki/tasks/reminders/PROJECT.md
2026-04-12 21:55:33 +03:00

115 lines
4.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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