# 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.