# Отчёт по активности сотрудников (DAU / WAU / MAU)

Скачивает Excel-файл: сколько запросов к нейросетям сделал каждый сотрудник компании за выбранный период.

## Эндпоинт

```
GET /api/v1/analytics/business/employees-generations
```

**Auth:** `Authorization: Bearer <access_token>`  
**Доступ:** только `business_host`  
**Ответ:** файл `.xlsx` (скачивание через `Content-Disposition: attachment`)



## Параметры запроса


| Параметр | Значения | По умолчанию | Что делает |
|----------|----------|--------------|------------|
| `metric` | `dau`, `wau`, `mau` | `mau` | За какой шаг считать числа в колонках: **по дням** (`dau`), **по неделям** (`wau`) или **по месяцам** (`mau`) |
| `aggregation` | `month`, `quarter` | `month` | Как разложить файл по вкладкам: **отдельный лист на каждый месяц** или **один лист на весь квартал** |
| `quarter` | `q1`, `q2`, `q3`, `q4` | — | Какой квартал взять: Q1 = янв–мар, Q2 = апр–июн, Q3 = июл–сен, Q4 = окт–дек |
| `year` | число, напр. `2026` | текущий год | Год для `quarter`. Без смысла, если `quarter` не передан |
| `start` | `YYYY-MM-DD` | — | Первая дата периода (включительно). Работает только в паре с `end` |
| `end` | `YYYY-MM-DD` | — | Последняя дата периода (включительно). Работает только в паре с `start` |


## Как задать период

Нужен **один** из двух вариантов. Смешивать их нельзя.

### Вариант 1 — готовый квартал

```
?quarter=q1&year=2026
```

- `year` можно не указывать — подставится текущий год.
- `start` и `end` **не передавать**.

### Вариант 2 — свои даты

```
?start=2026-01-01&end=2026-03-31
```

- Нужны **обе** даты.
- `quarter` и `year` **не передавать**.

## Ошибки валидации (422)

Если параметры кривые, в `detail` придёт текст ошибки:

| Что передали | Что не так |
|--------------|------------|
| и `quarter`/`year`, и `start`/`end` | Выбери один способ задать период |
| `year` без `quarter` | Год имеет смысл только с кварталом |
| только `start` или только `end` | Нужны обе даты |
| `start` позже `end` | Даты перепутаны |
| ни квартал, ни пара дат | Период не указан |


## Другие коды ответа

| Код | Когда |
|-----|-------|
| `200` | Файл скачался |
| `401` | Нет токена или пользователь не `business_host` |
| `404` | За этот период нет данных (пустой отчёт) |
| `400` | Ошибка на сервере |


## Примеры

```http
# Q1 2026, считать по месяцам, лист на каждый месяц
GET /api/v1/analytics/business/employees-generations?quarter=q1&year=2026&metric=mau&aggregation=month

# Май 2026, считать по дням, лист на каждый месяц
GET /api/v1/analytics/business/employees-generations?start=2026-05-01&end=2026-05-31&metric=dau&aggregation=month

# Q2, считать по неделям, один лист на квартал
GET /api/v1/analytics/business/employees-generations?quarter=q2&metric=wau&aggregation=quarter
```