reports/docs/api/README.md

98 lines
3.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# API отчётов по спринтам
REST API для веб-интерфейса сводки по спринтам. Все ответы — JSON в кодировке UTF-8.
## Базовый URL
| Окружение | URL |
|-----------|-----|
| Docker (nginx) | `http://localhost/api` |
| Локальная разработка | `http://localhost:8080/api` |
Точка входа: `public/index.php`.
## Общие сведения
- Поддерживаются только **GET**-запросы (чтение данных).
- Заголовок ответа: `Content-Type: application/json; charset=utf-8`.
- Авторизация не требуется.
- Даты и время возвращаются в формате PostgreSQL `TIMESTAMPTZ` (ISO 8601 с часовым поясом).
- Поля с отсутствующими данными имеют значение `null`.
## Коды ответов
| Код | Описание |
|-----|----------|
| `200` | Успешный ответ |
| `204` | `OPTIONS` (preflight) |
| `404` | Маршрут или ресурс не найден |
| `500` | Ошибка сервера |
### Формат ошибки
```json
{
"error": "Описание ошибки"
}
```
---
## Документация по сущностям
| Сущность | Описание |
|----------|----------|
| [Команды](teams.md) | Список команд |
| [Спринты](sprints.md) | Сводные метрики по спринтам |
| [Задачи](tasks.md) | Задачи, закрытые в спринте |
| [Конфигурация](config.md) | Публичные настройки для фронтенда |
---
## Сводка эндпоинтов
| Метод | Путь | Сущность | Описание |
|-------|------|----------|----------|
| `GET` | [`/api/teams`](teams.md#get-apiteams) | [Team](teams.md) | Список команд |
| `GET` | [`/api/teams/{teamId}/sprints`](sprints.md#get-apiteamsteamidsprints) | [Sprint](sprints.md) | Спринты команды со сводкой |
| `GET` | [`/api/sprints/{sprintId}`](sprints.md#get-apisprintssprintid) | [Sprint](sprints.md) | Один спринт со сводкой |
| `GET` | [`/api/sprints/{sprintId}/tasks`](tasks.md#get-apisprintssprintidtasks) | [SprintTask](tasks.md) | Задачи спринта |
| `GET` | [`/api/config`](config.md#get-apiconfig) | [AppConfig](config.md) | Публичная конфигурация |
### Связи между сущностями
```
Team ──< Sprint ──< SprintTask
AppConfig (jira_url для ссылок на задачи)
```
- [Team](teams.md) → [Sprint](sprints.md): `GET /api/teams/{teamId}/sprints`
- [Sprint](sprints.md) → [SprintTask](tasks.md): `GET /api/sprints/{sprintId}/tasks`
- [AppConfig](config.md) используется вместе с [SprintTask](tasks.md) для ссылок `{jira_url}/browse/{task_key}`
---
## Быстрые примеры
```bash
curl http://localhost/api/teams
curl http://localhost/api/config
curl http://localhost/api/teams/1/sprints
curl http://localhost/api/sprints/42
curl http://localhost/api/sprints/42/tasks
```
Подробности — в документации соответствующей сущности.
---
## Реализация
| Компонент | Путь |
|-----------|------|
| Точка входа | `public/index.php` |
| Бизнес-логика | `src/Features/Reports/ReportsApi.php` |
Перцентили в сводке по спринтам вычисляются в PostgreSQL функцией `percentile_cont`. Подробнее — в [документации по спринтам](sprints.md#метрики).