Files
redmine-reporter/README.md
Кокос Артем Николаевич 2db0ab1f0b Tighten configuration and export handling
2026-05-22 17:41:56 +07:00

152 lines
5.2 KiB
Markdown
Raw 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.
# 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.