Kaiku

← Вся документация

Поиск (JQL)

Какую часть языка запросов трекера понимает Kaiku — и так же прямо, какую не понимает.

Подмножество — нарочно

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

Поля

ПолеС чем сравнивается
projectключ проекта
status, statusCategoryназвание статуса; категория — "To Do", "In Progress" или Done
issuetype (или type), priority, resolutionназвание
assignee, reporter (или creator)имя пользователя — не отображаемое имя и не почта
key (или issuekey, id)ключ задачи, например ABC-12
summary, description, textтекст; text ищет в названии, описании и всех комментариях
labelsлюбая одна метка
sprintназвание спринта
parentключ родителя — только прямые потомки
epicключ эпика — сам эпик, его задачи и их подзадачи
created, updated, duedateдата
archivedсвоё поле Kaiku: только его упоминание добавляет архивные задачи в ответ
собственный столбец проектапо названию (Segment = AI) или как cf[20003] / customfield_20003

Регистр в названиях полей не важен; название с пробелом берётся в кавычки.

Операторы и сочетания

  • = и != — точное совпадение без учёта регистра.
  • ~ и !~содержит: обычная подстрока без учёта регистра. Ни словоформ, ни масок, ни сортировки по релевантности.
  • IN (…) и NOT IN (…).
  • IS EMPTY и IS NOT EMPTY (или IS NULL, IS NOT NULL). Пишите assignee IS EMPTY, а не assignee = EMPTY — второе не находит ничего.
  • >, >=, <, <= — только для created, updated и duedate.
  • AND, OR и скобки. AND связывает сильнее, чем OR.
  • Одна функция: currentUser() — для assignee, reporter и creator.
  • ORDER BY поле, ASC или DESC, несколько полей через запятую. Сортируются: created, updated, priority, status, key, summary, duedate. Без него первыми идут самые новые задачи.

Даты

Дата пишется полностью: created >= 2026-09-01 или updated < "2026-09-01 10:00". Чтобы спросить «за последнюю неделю», посчитайте дату сами.

Относительные даты — -7d, startOfDay(), now() — не понимаются, и условие с ними подходит любой задаче. created = 2026-09-01 не находит ничего: дату сравнивайте через >= и <.

Чего нет

  • Операторов истории: WAS, CHANGED.
  • NOT перед условием. Используйте !=, !~ или NOT IN.
  • Функций, кроме currentUser(): membersOf(), openSprints(), startOfWeek() и прочих.
  • Полей, которых нет в таблице выше: component, fixVersion, watcher, worklogDate и прочих.
  • Вокруг AND и OR должно быть ровно по пробелу: запрос, разбитый на несколько строк, прочитается не так.

Запрос не отвергается

REST-поиск отвечает на любой запрос. Условие, которое он не смог прочитать или которое называет незнакомое поле, выпадает — и результат не сужает. Поэтому опечатка в названии поля возвращает больше задач, а не ошибку.

  • != и NOT IN включают задачи, у которых поле пустое. Привычный вам трекер их исключает.
  • Значение в кавычках, внутри которого есть слова in , not in или знак оператора (summary ~ "sign in page"), читается неверно и подходит любой задаче. Ищите по более короткому куску фразы.

Инструмент поиска в собственном MCP-сервере Kaiku строже: запрос с незнакомым полем или непрочитанным условием он отвергает, называет, что не прочитал, и ничего не выполняет. См. MCP-серверы.

Чего-то не хватает или всё не так, как здесь написано? Напишите на hello@kaiku.tech