Files
2026-06-16 00:03:34 +03:00

109 lines
5.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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`.