152 lines
5.2 KiB
Markdown
152 lines
5.2 KiB
Markdown
# redmine-reporter
|
||
|
||
CLI-инструмент для генерации отчётов по задачам Redmine на основе записей о затраченном времени.
|
||
|
||
Проект предназначен для внутреннего использования с `https://red.eltex.loc/`.
|
||
|
||
Лицензия: MIT.
|
||
|
||
## Возможности
|
||
|
||
- Получение time entries текущего пользователя из Redmine.
|
||
- Авторизация через Redmine API token.
|
||
- Резервная авторизация через логин и пароль для обратной совместимости.
|
||
- Группировка задач по проекту и версии.
|
||
- Перевод статусов задач на русский язык.
|
||
- Вывод в консоль в табличном или компактном виде.
|
||
- Экспорт в ODT, CSV, Markdown и HTML.
|
||
- Автоматическое определение месяца ODT-отчёта по конечной дате периода.
|
||
- Настройка периода отчёта по умолчанию через `.env`.
|
||
|
||
## Установка
|
||
|
||
```bash
|
||
git clone https://git.akokos.ru/artem.kokos/redmine-reporter.git
|
||
cd redmine-reporter
|
||
python3 -m venv .venv
|
||
source .venv/bin/activate
|
||
pip install --upgrade pip
|
||
pip install .
|
||
```
|
||
|
||
## Настройка
|
||
|
||
Создайте файл `.env` в корне проекта. Файл не должен попадать в git.
|
||
|
||
Рекомендуемый вариант авторизации:
|
||
|
||
```ini
|
||
REDMINE_URL=https://red.eltex.loc/
|
||
REDMINE_API_KEY=ваш_api_token
|
||
REDMINE_AUTHOR=Иванов Иван Иванович
|
||
|
||
DEFAULT_FROM_DATE=2026-01-01
|
||
DEFAULT_TO_DATE=2026-01-31
|
||
```
|
||
|
||
Если задан `REDMINE_API_KEY`, он используется в первую очередь.
|
||
|
||
Резервный вариант авторизации:
|
||
|
||
```ini
|
||
REDMINE_URL=https://red.eltex.loc/
|
||
REDMINE_USER=ваш.логин
|
||
REDMINE_PASSWORD=ваш_пароль
|
||
REDMINE_AUTHOR=Иванов Иван Иванович
|
||
|
||
DEFAULT_FROM_DATE=2026-01-01
|
||
DEFAULT_TO_DATE=2026-01-31
|
||
```
|
||
|
||
Переменные окружения:
|
||
|
||
| Переменная | Обязательность | Описание |
|
||
| --- | --- | --- |
|
||
| `REDMINE_URL` | Да | URL Redmine. |
|
||
| `REDMINE_API_KEY` | Да, если нет логина и пароля | Redmine API token. |
|
||
| `REDMINE_USER` | Да, если нет токена | Логин Redmine. |
|
||
| `REDMINE_PASSWORD` | Да, если нет токена | Пароль Redmine. |
|
||
| `REDMINE_AUTHOR` | Нет | Имя автора для ODT-отчёта. |
|
||
| `DEFAULT_FROM_DATE` | Нет | Начальная дата периода по умолчанию в формате `YYYY-MM-DD`. |
|
||
| `DEFAULT_TO_DATE` | Нет | Конечная дата периода по умолчанию в формате `YYYY-MM-DD`. |
|
||
| `REDMINE_VERIFY` | Нет | Настройка TLS-проверки для Redmine API. |
|
||
|
||
`REDMINE_VERIFY` поддерживает значения:
|
||
|
||
- пустое значение или отсутствие переменной: `/etc/ssl/certs/ca-certificates.crt`;
|
||
- `true`, `1`, `yes`, `on`: стандартная проверка сертификатов `requests`;
|
||
- `false`, `0`, `no`, `off`: отключить проверку сертификатов;
|
||
- любой другой текст: путь к CA bundle.
|
||
|
||
Отключать проверку сертификатов не рекомендуется.
|
||
|
||
## Использование
|
||
|
||
```bash
|
||
source .venv/bin/activate
|
||
```
|
||
|
||
Отчёт за период по умолчанию:
|
||
|
||
```bash
|
||
redmine-reporter
|
||
```
|
||
|
||
Отчёт за произвольный период:
|
||
|
||
```bash
|
||
redmine-reporter --date 2026-02-01--2026-02-28
|
||
```
|
||
|
||
Период должен быть задан в формате `YYYY-MM-DD--YYYY-MM-DD`. Начальная дата не может быть позже конечной.
|
||
|
||
Компактный вывод:
|
||
|
||
```bash
|
||
redmine-reporter --compact
|
||
```
|
||
|
||
Экспорт:
|
||
|
||
```bash
|
||
redmine-reporter --output report.odt
|
||
redmine-reporter --output report.csv
|
||
redmine-reporter --output report.md
|
||
redmine-reporter --output report.html
|
||
```
|
||
|
||
ODT-отчёт:
|
||
|
||
- месяц в заголовке определяется по `to_date`;
|
||
- имя автора берётся из `--author`, затем из `REDMINE_AUTHOR`;
|
||
- если автор не задан, поле автора остаётся пустым.
|
||
|
||
Вывод без затраченного времени:
|
||
|
||
```bash
|
||
redmine-reporter --no-time
|
||
```
|
||
|
||
## Разработка
|
||
|
||
Установка зависимостей для разработки:
|
||
|
||
```bash
|
||
pip install -e ".[dev]"
|
||
```
|
||
|
||
Проверки:
|
||
|
||
```bash
|
||
pytest
|
||
ruff check redmine_reporter tests
|
||
black redmine_reporter tests
|
||
isort redmine_reporter tests
|
||
```
|
||
|
||
## Безопасность
|
||
|
||
- Не коммитьте `.env`, API token, пароль или логин.
|
||
- Используйте аккаунт с минимальными правами, достаточными для чтения time entries и задач.
|
||
- Инструмент работает только в режиме чтения и не изменяет данные в Redmine.
|