An open API service indexing awesome lists of open source software.

https://github.com/samplec0de/alice-ticktick

Навык Яндекс Алисы для управления задачами в TickTick голосом
https://github.com/samplec0de/alice-ticktick

Last synced: 2 months ago
JSON representation

Навык Яндекс Алисы для управления задачами в TickTick голосом

Awesome Lists containing this project

README

          

# ТикТик — навык Алисы для TickTick

Голосовое управление задачами и привычками [TickTick](https://ticktick.com) через [Яндекс Алису](https://alice.yandex.ru).

> «Алиса, запусти навык ТикТик»

## Возможности

- Создание, редактирование, удаление задач голосом
- Просмотр задач на сегодня, завтра и произвольную дату
- Фильтрация по приоритету и диапазону дат
- Просроченные задачи
- Нечёткий поиск (смешанный рус/англ текст)
- Подзадачи и чеклисты
- Повторяющиеся задачи
- Встречи и события с длительностью
- Напоминания
- Приоритеты
- Проекты: просмотр, создание, фильтрация задач
- Перемещение задач между проектами
- Утренний и вечерний брифинг

## Примеры голосовых команд

### Создание задач

```
создай задачу купить молоко
добавь задачу позвонить маме на завтра
создай задачу отчёт с приоритетом высокий
запиши задачу купить подарок на 5 марта
создай задачу презентация в проект работа
```

### Задачи с длительностью (встречи)

```
создай встречу совещание завтра в 10 на 2 часа
добавь встречу ланч завтра в 12 на час
создай встречу стендап завтра в 10 на полчаса
создай задачу митинг с 14 до 16
```

### Повторяющиеся задачи

```
создай задачу зарядка каждый день
создай задачу совещание каждый понедельник
создай задачу отчёт ежемесячно
создай задачу уборка каждые 2 недели
создай задачу оплата каждое 15 число
```

### Задачи с напоминаниями

```
создай задачу встреча с напоминанием за час
создай задачу звонок с напоминанием за 30 минут
```

### Просмотр задач

```
какие задачи на сегодня
что у меня на завтра
покажи задачи на послезавтра
что запланировано на 5 марта
```

### Просроченные задачи

```
какие задачи просрочены
что я пропустил
просроченные задачи
```

### Поиск

```
найди задачу купить молоко
поищи задачу отчёт
где задача про презентацию
```

### Завершение задач

```
отметь задачу купить молоко
выполни задачу позвонить маме
заверши задачу написать отчёт
```

### Редактирование задач

```
перенеси задачу купить молоко на завтра
поменяй приоритет задачи отчёт на высокий
переименуй задачу купить хлеб в купить батон
измени задачу презентация на понедельник
перемести задачу отчёт в проект работа
```

### Повторение и напоминания у существующих задач

```
поменяй повторение задачи зарядка на ежедневно
убери повторение у задачи уборка
поставь напоминание задачи встреча за 30 минут
убери напоминание у задачи звонок
напомни о задаче встреча за час
```

### Удаление задач

```
удали задачу купить молоко
убери задачу написать отчёт
сотри задачу оплатить счёт
```

### Фильтрация задач

```
покажи задачи на эту неделю с высоким приоритетом
какие срочные задачи на завтра
задачи с низким приоритетом на следующую неделю
```

### Проекты

```
покажи мои проекты
задачи в проекте работа
создай проект учёба
```

### Брифинги

```
доброе утро
вечерний брифинг
что у меня на сегодня кратко
```

### Подзадачи

```
добавь подзадачу купить муку к задаче испечь торт
создай подзадачу написать введение к задаче отчёт
покажи подзадачи задачи подготовить отчёт
какие подзадачи у задачи релиз
```

### Чеклисты

```
добавь пункт молоко в чеклист задачи покупки
добавь хлеб в список задачи магазин
покажи чеклист задачи поход в магазин
отметь пункт молоко в задаче покупки
удали пункт хлеб из чеклиста задачи магазин
```

## Установка

```bash
uv sync --extra dev
```

## Разработка

```bash
uv run pytest -v # тесты
uv run ruff check . # линтинг
uv run ruff format . # форматирование
uv run mypy alice_ticktick/ # проверка типов
```

## E2E тестирование

E2E тесты проверяют полный пайплайн: **Яндекс NLU → webhook → TickTick API**.
Тесты работают через внутренний API страницы тестирования Яндекс Диалогов (httpx, без браузера).

### Первый запуск (авторизация)

```bash
uv sync --extra dev --extra e2e
python -m playwright install chromium
uv run pytest tests/e2e/ --setup-yandex-auth -v -s
```

Откроется браузер → залогиньтесь в Яндексе → браузер закроется автоматически.
Cookies сохранятся в `.yandex_auth/` (в `.gitignore`).
Флаг `-s` нужен, чтобы видеть инструкции в терминале.

### Последующие запуски

```bash
uv run pytest -m e2e -v # все 116 E2E тестов
uv run pytest tests/e2e/test_e2e_misc.py -v # только один файл
uv run pytest -m "not e2e" -v # только unit тесты
```

### Если cookies протухли

```bash
uv run pytest tests/e2e/ --setup-yandex-auth -v -s
```

### Структура тестов

| Файл | Раздел | Тестов |
|------|--------|--------|
| `test_e2e_greeting.py` | Приветствие | 1 |
| `test_e2e_create.py` | Создание задач | 23 |
| `test_e2e_list.py` | Просмотр + фильтрация + просроченные | 13 |
| `test_e2e_complete.py` | Завершение | 5 |
| `test_e2e_search.py` | Поиск | 4 |
| `test_e2e_edit.py` | Редактирование | 16 |
| `test_e2e_delete.py` | Удаление (multi-turn) | 4 |
| `test_e2e_recurring.py` | Повторяющиеся | 8 |
| `test_e2e_reminders.py` | Напоминания | 5 |
| `test_e2e_subtasks.py` | Подзадачи | 4 |
| `test_e2e_checklists.py` | Чеклисты | 6 |
| `test_e2e_projects.py` | Проекты | 3 |
| `test_e2e_briefings.py` | Брифинги | 2 |
| `test_e2e_misc.py` | Помощь + fallback | 8 |
| `test_e2e_edge.py` | Edge cases | 7 |
| `test_e2e_regression.py` | Регрессия (known bugs) | 7 |
| **Итого** | | **116** |

Подробные сценарии: [`docs/CHROME_TESTING.md`](docs/CHROME_TESTING.md).

## Лицензия

MIT