# tasks-bot

Telegram-бот для захвата задач в TickTick. Пишешь в чат — LLM достаёт срок и проект, задача уходит в нужный список TickTick. Утренняя сводка, вечерняя «перенести всё на завтра», воскресный обзор закрытого за неделю.

## Архитектура

- `src/tasks_bot/ticktick/` — async-клиент TickTick Open API + маппинг проектов
- `src/tasks_bot/v2/` — capture (распознавание текста → задача), команды, event log, scheduler
- `src/tasks_bot/bot.py` — сборка Telegram Application: подключает TickTick, extractor, scheduler и регистрирует хендлеры
- `src/tasks_bot/main.py` — entrypoint, lifecycle (initialize → polling + scheduler → shutdown)

Маппинг проектов TickTick: `scripts/preflight/projects_mapping.json`.
Event log (для воскресного обзора и архива): `data/events.jsonl`.
Кеш сводок (переживает рестарт): `data/summary_cache.sqlite`.

## Локальная разработка

```bash
python3.11 -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"
cp .env.example .env
# заполнить .env (см. ниже)
pytest
```

## .env

```
TELEGRAM_BOT_TOKEN=...
TELEGRAM_OWNER_USER_ID=...
OPENROUTER_API_KEY=...
TICKTICK_ACCESS_TOKEN=...
TIMEZONE=Asia/Yekaterinburg
```

Опционально: `OPENROUTER_V2_MODEL`, `PROJECT_CONFIDENCE_THRESHOLD`, `PENDING_CAPTURE_TTL_SECONDS`, `TICKTICK_MAPPING_PATH`, `EVENT_LOG_PATH`, `SUMMARY_CACHE_DB_PATH`.

## Запуск

```bash
tasks-bot
```

## Деплой на Raspberry Pi

```bash
ssh pi@raspberry
cd ~/tasks-bot
git pull
.venv/bin/pip install -e .
sudo systemctl restart tasks-bot
sudo journalctl -u tasks-bot -f
```

Юнит: `deploy/tasks-bot.service`.
