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.