← Назад к статьям

Jira фильтры и дашборды: создание эффективных отчётов

Фильтры и дашборды — это основные инструменты для мониторинга работы команды и принятия решений в Jira. За годы работы я видел и простые фильтры из одного условия, и сложные JQL-запросы на сотни строк. Опыт показал: эффективные фильтры и дашборды — это не сложность запросов, а правильное понимание того, какая информация нужна и как её представить. В этой статье разберу практические подходы.

Основы JQL для фильтров

JQL (Jira Query Language) — это язык запросов, на котором строятся фильтры в Jira. Понимание JQL критично для создания эффективных фильтров, но не нужно становиться экспертом — достаточно знать базовые конструкции и несколько продвинутых приёмов.

Базовые операторы

Основные операторы JQL, которые нужны в 90% случаев:

  • = — точное совпадение: project = PROJ
  • != — не равно: status != Done
  • IN — входит в список: status IN (Open, "In Progress")
  • NOT IN — не входит в список
  • ~ — содержит текст: summary ~ "bug"
  • !~ — не содержит текст
  • >, <, >=, <= — сравнения для дат и чисел
  • AND, OR — логические операторы

Практические примеры запросов

Вот несколько типичных запросов, которые я использую регулярно:

Задачи, назначенные на меня, которые не закрыты:

assignee = currentUser() AND status != Done AND status != Closed

Задачи, созданные за последнюю неделю с высоким приоритетом:

created >= -7d AND priority = High

Задачи, которые блокируются другими задачами:

issueFunction in hasLinks("is blocked by")

Последний пример использует функцию из ScriptRunner. Если ScriptRunner не установлен, можно использовать стандартный синтаксис через поле "Links".

Создание эффективных фильтров

Хороший фильтр должен быть понятным, переиспользуемым и производительным. Рассмотрю каждый аспект.

Понятность фильтра

Фильтр, который вы создали сегодня, через полгода может использовать кто-то другой. Или вы сами можете забыть логику. Поэтому важно делать фильтры понятными:

  • Понятное название — "Мои активные задачи" лучше чем "Задачи 1"
  • Описание — добавьте описание, объясняющее назначение фильтра
  • Комментарии в JQL — для сложных запросов можно добавить комментарии (через ScriptRunner)

Переиспользование через переменные

В JQL можно использовать переменные, которые делают фильтры более гибкими:

  • currentUser() — текущий пользователь
  • currentUser() — группы текущего пользователя
  • membersOf("group-name") — члены группы
  • now() — текущее время
  • -7d — относительные даты (7 дней назад)

Использование переменных позволяет создать один фильтр, который работает для всех пользователей, вместо создания отдельного фильтра для каждого.

Производительность фильтров

Сложные JQL-запросы могут выполняться медленно. Вот несколько правил для оптимизации:

  • Используйте индексированные поля — project, status, assignee индексируются по умолчанию
  • Ограничивайте результаты — добавляйте условия, которые ограничивают набор задач (например, по проекту)
  • Избегайте отрицаний для текстовых полейsummary !~ "test" работает медленнее, чем позитивный поиск
  • Не используйте ORDER BY без необходимости — сортировка замедляет запрос

Типы дашбордов и их назначение

Дашборды в Jira — это панели с виджетами, которые показывают информацию из фильтров и проектов. Разные типы дашбордов решают разные задачи.

Персональные дашборды

Персональный дашборд — это рабочее место конкретного пользователя. Обычно содержит:

  • Мои задачи (фильтр с assignee = currentUser())
  • Задачи, на которые я подписан
  • Задачи, которые я создал и которые требуют моего внимания
  • Календарь спринтов или дедлайнов

Персональный дашборд должен показывать только то, что нужно для ежедневной работы пользователя. Не перегружайте его информацией.

Командные дашборды

Командный дашборд показывает общую картину по команде или проекту:

  • Статистика по спринту (velocity, burndown)
  • Распределение задач по статусам
  • Задачи с высоким приоритетом
  • Блокеры и проблемы
  • Метрики производительности

Командные дашборды обычно размещаются на экранах в офисах или используются на стендапах.

Менеджерские дашборды

Дашборды для менеджеров фокусируются на метриках высокого уровня:

  • Общая статистика по проектам
  • Время решения задач
  • Распределение нагрузки по командам
  • Тренды и прогнозы

Менеджерские дашборды реже обновляются и показывают агрегированную информацию, а не детали конкретных задач.

Полезные виджеты для дашбордов

Выбор правильных виджетов критичен для эффективного дашборда. Вот виджеты, которые я использую чаще всего.

Filter Results

Самый универсальный виджет — показывает список задач из фильтра. Можно настроить отображение колонок, группировку, сортировку. Используйте для показа любых списков задач.

Created vs Resolved Chart

График создания и решения задач. Показывает, как изменяется объём работы: если линия создания выше линии решения, объём задач растёт. Полезен для понимания загрузки команды и выявления проблем.

Time Since Chart

Показывает, сколько времени задачи находятся в каждом статусе. Помогает найти узкие места в процессе: если задачи долго висят в одном статусе, это признак проблемы.

Pie Chart / Bar Chart

Визуализация распределения задач по различным критериям: по статусам, приоритетам, исполнителям, компонентам и т.д. Удобны для быстрого понимания текущего состояния.

Activity Stream

Поток активности по проекту или фильтру. Показывает последние изменения, комментарии, переходы по статусам. Полезен для отслеживания происходящего в проекте.

Создание комплексных дашбордов

Эффективный дашборд — это не просто набор виджетов, а продуманная композиция, которая показывает информацию в логическом порядке.

Принципы композиции

Располагайте виджеты так, чтобы:

  • Самая важная информация была сверху — то, что нужно видеть первым
  • Связанная информация была рядом — фильтры и графики, использующие одни данные
  • Было не слишком много виджетов — оптимально 5-8 виджетов, максимум 12
  • Дашборд загружался быстро — каждый виджет делает запросы, слишком много виджетов замедляют загрузку

Пример: дашборд для команды разработки

Вот структура дашборда, которую я рекомендую для Scrum-команды:

  1. Burndown Chart — прогресс текущего спринта
  2. Filter Results — задачи спринта с группировкой по статусам
  3. Bar Chart — распределение задач по исполнителям
  4. Filter Results — блокеры и задачи с высоким приоритетом
  5. Pie Chart — распределение по типам задач (Story, Bug, Task)
  6. Activity Stream — последняя активность по проекту

Такой дашборд даёт полную картину состояния спринта и помогает быстро выявлять проблемы.

Расширенные техники JQL

Для более сложных случаев нужны продвинутые техники JQL. Некоторые требуют установки плагинов (например, ScriptRunner).

Подзапросы и функции

В JQL можно использовать подзапросы для поиска связанных задач. Например, найти задачи, которые блокируются задачами с высоким приоритетом:

issueFunction in linkedIssuesOf("priority = High AND type = Bug")

Это требует ScriptRunner. Без него можно использовать стандартные поля Links, но это менее гибко.

Работа с датами

JQL поддерживает относительные даты, что удобно для динамических фильтров:

created >= -7d AND created <= now()  // За последнюю неделю
dueDate >= now() AND dueDate <= 7d  // Дедлайны на ближайшую неделю
updated <= -30d                      // Не обновлялись более 30 дней

Работа с кастомными полями

Кастомные поля обращаются по ID: customfield_10001. Узнать ID поля можно через админ-панель или через API.

Для поиска по кастомным полям важно понимать их тип:

  • Text Field — используйте ~ для частичного совпадения
  • Number Field — используйте =, >, <
  • Select List — используйте = или IN
  • User Picker — используйте = с именем пользователя
  • Date Picker — используйте операторы сравнения дат

Типичные ошибки

Вот ошибки, которые я часто вижу при создании фильтров и дашбордов:

Ошибка 1: Слишком сложные фильтры

Фильтр на 20 условий с вложенными подзапросами может быть мощным, но он будет медленным и непонятным. Разбейте сложный фильтр на несколько простых и комбинируйте их.

Ошибка 2: Дашборды с 20+ виджетами

Большое количество виджетов замедляет загрузку дашборда и усложняет восприятие информации. Лучше создать несколько специализированных дашбордов, чем один перегруженный.

Ошибка 3: Хардкод значений в фильтрах

Фильтр assignee = "john.doe" работает только для конкретного пользователя. Используйте assignee = currentUser() для универсальности.

Ошибка 4: Игнорирование производительности

Фильтр, который возвращает 10,000 задач, будет работать медленно и создавать нагрузку на систему. Всегда ограничивайте результаты или добавляйте условия, которые сужают выборку.

Выводы

Эффективные фильтры и дашборды — это инструменты для принятия решений. Они должны показывать нужную информацию в понятном виде и загружаться быстро.

Начинайте с простых фильтров и постепенно усложняйте их по мере необходимости. Используйте переменные JQL для создания универсальных фильтров. Создавайте несколько специализированных дашбордов вместо одного перегруженного.

Регулярно ревьюируйте фильтры и дашборды: удаляйте неиспользуемые, упрощайте сложные, обновляйте под меняющиеся потребности команды.

Если нужна помощь с созданием фильтров или дашбордов — свяжитесь со мной.