Jira — получить оценку проблемы через REST API

Я пытаюсь получить рейтинг Jira ID через REST:

Это запрос GET, который я отправляю:

JIRA-HOST/rest/agile/1.0/issue/MyIssue

Я получаю ключ: customfield_10690, который является полем рейтинга, но значение этого поля нечитаемо и неразборчиво, значение, которое я получаю: "customfield_10690":"0|i1qu83:"

Что я могу сделать?


person Alex Brodov    schedule 21.10.2015    source источник


Ответы (2)


Является ли рейтинговая система серией изображений? Например, звезды или что-то в этом роде? Возможно, jira пытается отправить вам изображение в виде текста, и это становится чем-то непечатаемым.

Если это так, я думаю, что у вас есть единственный вариант: 1. Изменить систему рейтинга на число 2. Если значения совпадают, иметь сопоставление, чтобы вы могли сопоставить «0|i1qu83:» с рейтингом, который имеет смысл для вашего кода.

person Somaiah Kumbera    schedule 10.11.2015

Вы видите значение токен lexorank.

Если вам нужен числовой рейтинг (например, 15-й рейтинг из 100), вы можете получить общий список задач через конечную точку поиска JIRA, используя JQL (их ограниченный язык запросов), и перечислить результаты или найти нужную вам проблему с помощью ключ при увеличении или обновлении некоторого номера ранга. Если ваш запрос возвращает несколько результатов, производительность имеет значение, и вам нужна только одна проблема, вы можете использовать более интеллектуальный поиск, например бинарный поиск.

Вот грубый пример использования клиента узла:

import jiraAPI from 'jira-client'

const jira = new jiraAPI({
  protocol: 'https',
  host: process.env['JIRA_HOST'],
  username: process.env['JIRA_USERNAME'],
  password: process.env['JIRA_PASSWORD'],
  apiVersion: '2',
  strictSSL: true,
  timeout: 30000, // 30s
})

const JQL = 'project = "your-project" AND status IN ("To Do", "In Progress", "Blocked") order by status desc, Rank asc'

const FIELDS = ['key', 'priority', 'status', 'summary', 'labels', 'assignee']

const formatIssue = ({ issue: { key, fields = {} }, rank = 0, total = 0 }) => ({
  key,
  rank,
  total,
  priority: fields.priority.name,
  status: fields.status.name,
  summary: fields.summary,
  assignee: fields.assignee ? fields.assignee.displayName : null,
  labels: fields.labels
})

async function* issueGenerator ({ offset = 0, limit = 100 }) {
  for (let max = 1; offset < max; offset += limit) {
    const { total = 0, maxResults = 0, startAt = 0, issues = [] } = await jira.searchJira(JQL, {
      startAt: offset,
      maxResults: limit,
      fields: FIELDS
    })

    max = total
    limit = maxResults
    offset = startAt

    for (let i = 0, len = issues.length; i < len; i++) {
      yield formatIssue({ issue: issues[i], rank: offset + i + 1, total })
    }
  }
}


async function fetchIssuesWithLabel (label) {
  const issueIterator = issueGenerator({ offset: 0, limit: 100 })
  const teamIssues = []

  for await (const issue of issueIterator) {
    if (issue.labels.includes(label)) {
      teamIssues.push(issue)
    }
  }

  return teamIssues
}

fetchIssuesWithLabel('bug').then(result => console.log(result))
person RubeOnRails    schedule 03.06.2019