---
name: yougile
description: "Управление задачами и проектами в YouGile. Используй когда пользователь: (1) просит показать/найти/создать/переместить задачи, (2) упоминает дедлайны, сроки или 'что на сегодня', (3) говорит о колонках, досках или проектах, (4) просит написать комментарий к задаче или прочитать чат задачи, (5) работает с исполнителями задач. Триггеры: 'задач', 'таск', 'дедлайн', 'YouGile', 'доска', 'колонка', 'проект', 'срок', 'сделать', 'выполнить'."
---

# YouGile API Integration

Управление задачами через YouGile REST API v2.

## Quick Start

```python
from scripts.yougile_client import YouGileClient

client = YouGileClient()

# Список задач
tasks = client.get_tasks(limit=10)

# Создать задачу
task = client.create_task("Название задачи", column_id="xxx-xxx")

# Найти задачу
task = client.find_task("поиск")
```

## Доступные функции

### Задачи (Tasks)

| Функция | Описание | Параметры |
|---------|----------|-----------|
| `get_tasks(limit)` | Список всех задач | `limit=25` |
| `get_task(task_id)` | Получить задачу по ID | `task_id` |
| `find_task(search)` | Поиск по названию | `search_term` |
| `create_task(title, column_id, ...)` | Создать задачу | `title`, `column_id`, `description`, `deadline` |
| `update_task(task_id, ...)` | Обновить задачу | `task_id`, `title`, `description`, `completed`, `deadline` |
| `move_task(task_id, column_id)` | Переместить в колонку | `task_id`, `column_id` |
| `complete_task(task_id)` | Отметить выполненной | `task_id` |
| `set_deadline(task_id, deadline)` | Установить дедлайн | `task_id`, `deadline` (YYYY-MM-DD) |
| `assign_task(task_id, user_id)` | Назначить исполнителя | `task_id`, `user_id` |
| `get_today_tasks()` | Задачи с дедлайном сегодня | — |

### Комментарии (Chat)

| Функция | Описание | Параметры |
|---------|----------|-----------|
| `get_task_chat(task_id)` | Получить комментарии | `task_id` |
| `send_message(task_id, text)` | Написать комментарий | `task_id`, `text` |

### Структура (Boards/Columns/Projects)

| Функция | Описание | Параметры |
|---------|----------|-----------|
| `get_columns()` | Список всех колонок | — |
| `get_column(column_id)` | Колонка по ID | `column_id` |
| `get_boards()` | Список всех досок | — |
| `get_board(board_id)` | Доска по ID | `board_id` |
| `get_projects()` | Список проектов | — |
| `get_project(project_id)` | Проект по ID | `project_id` |

### Пользователи

| Функция | Описание | Параметры |
|---------|----------|-----------|
| `get_users()` | Список пользователей | — |
| `get_user(user_id)` | Пользователь по ID | `user_id` |

## Workflow Examples

### Создание задачи с дедлайном

```python
# 1. Получить колонки
columns = client.get_columns()
todo_column = next(c for c in columns if "дела" in c["title"].lower())

# 2. Создать задачу
task = client.create_task(
    title="Подготовить отчёт",
    column_id=todo_column["id"],
    description="Квартальный отчёт по продажам",
    deadline="2026-02-15"
)
```

### Перемещение и комментирование

```python
# Найти задачу
task = client.find_task("отчёт")

# Найти колонку "В работе"
columns = client.get_columns()
in_progress = next(c for c in columns if "работе" in c["title"].lower())

# Переместить
client.move_task(task["id"], in_progress["id"])

# Добавить комментарий
client.send_message(task["id"], "Начал работу над отчётом")
```

### Утренний брифинг

```python
# Задачи на сегодня
today_tasks = client.get_today_tasks()

# Все активные задачи
all_tasks = client.get_tasks()
overdue = [t for t in all_tasks if t.get("deadline") and is_overdue(t["deadline"])]

# Формируем отчёт
report = f"📋 На сегодня: {len(today_tasks)} задач\n⚠️ Просрочено: {len(overdue)}"
```

## API Details

**Base URL:** `https://ru.yougile.com/api-v2`

**Auth:** Bearer token в заголовке `Authorization: Bearer {API_KEY}`

### Task Object

```json
{
  "id": "uuid",
  "title": "Название задачи",
  "description": "Описание",
  "columnId": "uuid колонки",
  "completed": false,
  "archived": false,
  "deadline": {
    "deadline": 1707955200000,
    "startDate": null,
    "withTime": false
  },
  "assigned": ["user-uuid-1", "user-uuid-2"],
  "subtasks": 3,
  "subtasksDone": 1
}
```

### Deadline Format

- При создании/обновлении: timestamp в миллисекундах или ISO date
- `withTime: true` — точное время, `false` — только дата

### Pagination

- `limit` — количество записей (default: 25, max: 100)
- `offset` — смещение для пагинации

## Error Handling

Все функции возвращают:
- `✅ Успех: ...` при успешном выполнении
- `❌ Ошибка: ...` при ошибке с описанием

При 401 ошибке — проверь API ключ.
При 404 — задача/колонка не найдена.
При 400 — неверные параметры.

## Configuration

API ключ задаётся в `scripts/config.py` или через переменную окружения `YOUGILE_API_KEY`.

```python
# scripts/config.py
YOUGILE_API_KEY = "your-api-key-here"
YOUGILE_BASE_URL = "https://ru.yougile.com/api-v2"
```
