109 lines
5.0 KiB
Markdown
109 lines
5.0 KiB
Markdown
# Jira Ticket Analysis
|
||
|
||
Исполняемый скрипт `jira_analyze.py` анализирует тикеты Jira по проекту `VDEV` на `https://jira.a1.by`.
|
||
|
||
Токен не хранится в файлах проекта. Перед запуском задайте его через переменную окружения:
|
||
|
||
```bash
|
||
export JIRA_TOKEN='your-token-here'
|
||
export JIRA_USER='Serhei_T'
|
||
./jira_analyze.py
|
||
```
|
||
|
||
Шаблон переменных окружения есть в `.env.example`. Файл `.env` добавлен в `.gitignore`.
|
||
|
||
Можно также создать локальный `.env`, скрипт загрузит его автоматически:
|
||
|
||
```bash
|
||
cp .env.example .env
|
||
```
|
||
|
||
После этого откройте `.env` и замените `JIRA_TOKEN=your-token-here` на реальный токен. Для этой Jira используется Basic Auth, поэтому также должен быть заполнен `JIRA_USER`.
|
||
|
||
Примеры:
|
||
|
||
```bash
|
||
./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 используйте готовую команду:
|
||
|
||
```bash
|
||
./vdev_sprint_report_2026.sh
|
||
```
|
||
|
||
Она создаст файл `vdev-sprints-2026.html` и не будет сканировать все тикеты проекта.
|
||
|
||
Что считает скрипт:
|
||
|
||
- общее количество тикетов;
|
||
- количество resolved и unresolved;
|
||
- долю закрытых тикетов;
|
||
- распределение по статусам, типам, приоритетам, исполнителям, компонентам и меткам;
|
||
- созданные и закрытые тикеты по месяцам;
|
||
- незакрытые тикеты без обновлений дольше `--stale-days`;
|
||
- незакрытые тикеты с просроченным `duedate`.
|
||
|
||
HTML-отчет по кварталам:
|
||
|
||
```bash
|
||
./jira_analyze.py --html-quarter-out dev-q1-q2-2026.html --report-year 2026 --quarters 1,2 --closed-status 'Закрыт'
|
||
```
|
||
|
||
Для HTML-отчета без `--jql` скрипт сам использует запрос:
|
||
|
||
```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-отчет по спринтам с января по сегодня:
|
||
|
||
```bash
|
||
./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:
|
||
|
||
```bash
|
||
./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`.
|