[Intum](https://intum.fr/aide.md) / [Organizacja](https://intum.fr/aide/organizacja.md)

# [Zadania](https://intum.fr/aide/organizacja/zadania.md) | [API](#api)

## Czym są zadania?

Zadania to centralny element organizacji pracy w Intum. Każde zadanie opisuje konkretną rzecz do zrobienia — od prostego przypomnienia po złożony projekt z podzadaniami, terminami i załącznikami.

## Tworzenie zadania

Aby utworzyć nowe zadanie:

1. Przejdź do modułu **Zadania**
2. Kliknij przycisk **+**
3. Wpisz tytuł i opcjonalnie opis w edytorze Markdown
4. Przypisz osobę odpowiedzialną, zespół, projekt i status
5. Ustaw priorytet i termin

## Kluczowe pola

- **Tytuł** — nazwa zadania (wymagane)
- **Treść** — opis w edytorze Markdown z obsługą obrazów i załączników
- **Status** — etap realizacji (np. Nowe, W toku, Do weryfikacji, Zamknięte)
- **Priorytet** — od -1 (niski) do 3 (krytyczny)
- **Osoba odpowiedzialna** — [użytkownik](uzytkownik) lub [grupa](grupa) odpowiedzialna za wykonanie
- **[Zespół](zespol)** — zespół przypisany do zadania
- **[Projekt](projekt)** — projekt, w ramach którego realizowane jest zadanie
- **Termin** — deadline wykonania zadania
- **Data rozpoczęcia** — planowany start prac
- **Szacunkowe godziny** — ile czasu przewidujemy na realizację
- **Klient** — powiązanie z klientem z CRM

## Organizacja zadań

### Podzadania

Każde zadanie może mieć podzadania — wystarczy przy tworzeniu wskazać zadanie nadrzędne. Pozwala to budować hierarchię zadań.

### Powiązania między zadaniami

Zadania można łączyć ze sobą dwukierunkowo. W widoku zadania pojawia się lista powiązanych zadań z możliwością szybkiego przejścia.

### Listy zadań (Tasklists)

Zadania można grupować w listy — np. "Sprint 1", "Backlog", "Do omówienia". Jedno zadanie może należeć do wielu list.

### Scope i numeracja

Każde zadanie otrzymuje unikalny identyfikator w formacie **SCOPE-NR** (np. PROJ-42). Scope definiujesz na poziomie projektu — ułatwia odnajdowanie zadań.

## Widoki

- **Lista** — klasyczny widok z filtrowaniem i sortowaniem
- **Kanban** — tablice z kolumnami statusów, drag-and-drop do zmiany statusu
- **Tabela** — widok tabelaryczny z wieloma kolumnami

## Filtrowanie i wyszukiwanie

Zadania można filtrować po:

- Osobie odpowiedzialnej
- Statusie
- [Zespole](zespol) i [projekcie](projekt)
- Otwarte / zamknięte
- Tagach
- Pełnotekstowe wyszukiwanie po tytule i treści

## Komentarze i dyskusja

Pod każdym zadaniem dostępna jest sekcja komentarzy. Komentarze obsługują Markdown, załączniki i @wzmianki. Nowy komentarz generuje powiadomienie dla osób przypisanych.

## Załączniki

Do zadania można dodawać pliki — zarówno w treści (inline) jak i jako osobne załączniki. Pliki są przechowywane w chmurze z bezpiecznym dostępem przez signed URL.

## Śledzenie czasu

Do zadania można rejestrować czas pracy (workinfo). Szacunkowe godziny pozwalają porównać plan z rzeczywistym czasem realizacji.

## Zadania powtarzające się

Zadanie można ustawić jako powtarzające się — system automatycznie tworzy nowe instancje według ustalonego harmonogramu.

## Powiązania z innymi modułami

- **Mail** — powiązanie z e-mailami
- **Helpdesk** — powiązanie ze zgłoszeniami (ticketami)
- **VoIP** — powiązanie z rozmowami telefonicznymi
- **CRM** — przypisanie klienta do zadania

## Operacje zbiorcze

Z poziomu listy można zaznaczać wiele zadań i wykonywać akcje zbiorcze:

- Zmiana statusu
- Zmiana osoby odpowiedzialnej
- Zmiana priorytetu
- Zamknięcie / archiwizacja
- Dodawanie / usuwanie tagów

---

## API

### Ogólne API

# Intum API

Dokumentacja API platformy [Intum](https://intum.pl) - system operacyjny firmy.

## Host

Host jest zawsze taki sam jak adres konta: `xxxx.intum.com` lub `xxx.intum.pl` (w zależności od ustawień konta)

## Autoryzacja

Wszystkie requesty API wymagają `api_token`:
- header: `Authorization: Bearer TOKEN`

Token możesz wygenerować w **Ustawienia Konta** → **Tokeny API**

## Endpointy

| Metoda | Ścieżka | Opis |
|--------|---------|------|
| GET | `/organize/tasks.json` | Lista zadań (z filtrowaniem) |
| GET | `/organize/tasks/:id.json` | Pojedyncze zadanie |
| POST | `/organize/tasks.json` | Utworzenie zadania |
| PATCH | `/organize/tasks/:id.json` | Aktualizacja zadania |
| DELETE | `/organize/tasks/:id.json` | Usunięcie zadania |
| POST | `/organize/tasks/:id/close.json` | Zamknięcie zadania |

**Autoryzacja:** `Authorization: Bearer TOKEN` (uprawnienie: **organize**)

## Pola zadania

| Pole | Typ | Wymagane | Opis |
|------|-----|----------|------|
| `title` | string | tak | Tytuł zadania |
| `content` | string | nie | Treść/opis zadania (Markdown) |
| `status_id` | integer | nie | ID statusu |
| `responsible_id` | integer | nie | ID osoby odpowiedzialnej |
| `responsible_type` | string | nie | Typ: `Account::User` lub `Account::Group` |
| `owner_id` | integer | nie | ID właściciela zadania |
| `team_id` | integer | nie | ID zespołu |
| `project_id` | integer | nie | ID projektu |
| `department_id` | integer | nie | ID działu |
| `client_id` | integer | nie | ID klienta (CRM) |
| `priority` | number | nie | Priorytet: -1 do 3, domyślnie 0 |
| `deadline` | string | nie | Termin YYYY-MM-DD |
| `start_time` | string | nie | Data rozpoczęcia |
| `estimated_hours` | number | nie | Szacunkowe godziny |
| `closed` | boolean | nie | Czy zadanie zamknięte |
| `archived` | boolean | nie | Czy zarchiwizowane |
| `scope` | string | nie | Prefix numeracji (np. PROJ) |
| `task_id` | integer | nie | ID zadania nadrzędnego |
| `connected_task_ids` | array | nie | ID powiązanych zadań |
| `tasklist_ids` | array | nie | ID list zadań |
| `fields` | object | nie | Pola własne (JSONB) |

## Tworzenie zadania

```
POST /organize/tasks.json
Authorization: Bearer TOKEN
```

```json
{
  "task": {
    "title": "Przygotować prezentację",
    "content": "## Zakres\n\n- Slajdy produktowe",
    "status_id": 1,
    "responsible_id": 5,
    "team_id": 2,
    "priority": 2,
    "deadline": "2026-03-15"
  }
}
```

## Aktualizacja zadania

```
PATCH /organize/tasks/:id.json
```

Wysyłasz tylko zmieniane pola.

```json
{
  "task": {
    "status_id": 3,
    "closed": true
  }
}
```

## Filtrowanie listy

```
GET /organize/tasks.json?responsible=5&closed=false&status_id=1&q=prezentacja
```

| Parametr | Opis |
|----------|------|
| `responsible` | ID osoby odpowiedzialnej |
| `closed` | true / false |
| `status_id` | ID statusu |
| `team_ids` | ID zespołu |
| `project_id` | ID projektu |
| `q` | Wyszukiwanie pełnotekstowe |

## Błędy (422)

```json
{"title": ["nie może być puste"]}
```