Files
test/README.md
2026-06-16 00:03:34 +03:00

5.0 KiB
Raw Permalink Blame History

Jira Ticket Analysis

Исполняемый скрипт jira_analyze.py анализирует тикеты Jira по проекту VDEV на https://jira.a1.by.

Токен не хранится в файлах проекта. Перед запуском задайте его через переменную окружения:

export JIRA_TOKEN='your-token-here'
export JIRA_USER='Serhei_T'
./jira_analyze.py

Шаблон переменных окружения есть в .env.example. Файл .env добавлен в .gitignore.

Можно также создать локальный .env, скрипт загрузит его автоматически:

cp .env.example .env

После этого откройте .env и замените JIRA_TOKEN=your-token-here на реальный токен. Для этой Jira используется Basic Auth, поэтому также должен быть заполнен JIRA_USER.

Примеры:

./jira_analyze.py --project VDEV
./jira_analyze.py --project VDEV --stale-days 14
./jira_analyze.py --jql 'project = VDEV AND statusCategory != Done ORDER BY updated DESC'
./jira_analyze.py --csv-out jira-dev.csv --json-out jira-dev.json
./jira_analyze.py --html-quarter-out dev-q1-q2-2026.html
./jira_analyze.py --html-sprint-quarter-out vdev-sprints-quarters.html

Для вашей задачи по завершенным спринтам 2026 используйте готовую команду:

./vdev_sprint_report_2026.sh

Она создаст файл vdev-sprints-2026.html и не будет сканировать все тикеты проекта.

Что считает скрипт:

  • общее количество тикетов;
  • количество resolved и unresolved;
  • долю закрытых тикетов;
  • распределение по статусам, типам, приоритетам, исполнителям, компонентам и меткам;
  • созданные и закрытые тикеты по месяцам;
  • незакрытые тикеты без обновлений дольше --stale-days;
  • незакрытые тикеты с просроченным duedate.

HTML-отчет по кварталам:

./jira_analyze.py --html-quarter-out dev-q1-q2-2026.html --report-year 2026 --quarters 1,2 --closed-status 'Закрыт'

Для HTML-отчета без --jql скрипт сам использует запрос:

project = VDEV AND status = "Закрыт" AND resolutiondate >= "2026-01-01" AND resolutiondate < "2026-07-01" ORDER BY resolutiondate ASC

В HTML попадает:

  • выполненные задачи по Q1 и Q2 2026;
  • фактические и плановые часы из Jira time tracking;
  • отклонение факт-план;
  • средний цикл выполнения от created до resolutiondate;
  • разбивка по командам через components, если компонент не заполнен - через assignee;
  • проблемные сигналы: нет часов, нет оценки, закрыто после срока, длинный цикл, высокий приоритет, блокирующие метки, нет компонента;
  • рекомендации по корректировкам для команд.

HTML-отчет по спринтам с января по сегодня:

./jira_analyze.py --html-sprint-quarter-out vdev-sprints-quarters.html --sprints-from 2026-01-01 --sprints-to 2026-06-15

Скрипт использует Jira Agile API:

  • находит boards проекта VDEV;
  • выгружает только завершенные closed спринты, пересекающиеся с периодом;
  • выгружает задачи каждого спринта;
  • оставляет закрытые задачи через statusCategory = Done, resolutiondate или статус из --closed-status;
  • раскладывает спринты по кварталам по completeDate, затем endDate, затем startDate;
  • считает закрытые фичи, задачи и баги в каждом квартале;
  • дедуплицирует задачу внутри квартала, если она встретилась в нескольких спринтах/boards.

Категории типов:

  • Фичи: Jira-типы с Feature, Story, фич, истор;
  • Задачи: Jira-типы с Task, задач;
  • Баги: Jira-типы с Bug, Defect, дефект, ошиб;
  • остальное попадает в Прочее.

Если нужно ограничить отчет конкретной Agile board:

./jira_analyze.py --html-sprint-quarter-out vdev-sprints-quarters.html --board-id 123

Параметры по умолчанию:

  • --base-url https://jira.a1.by;
  • --project VDEV;
  • --page-size 100;
  • --stale-days 30.