# redmine-reporter Инструмент для генерации отчётов по задачам в Redmine на основе ваших записей о затраченном времени. > Предназначен для внутреннего использования в Eltex. Работает с `https://red.eltex.loc/`. 📄 **Лицензия**: [MIT](./LICENSE) — делайте что угодно. --- ## 🔧 Возможности - Безопасная передача учётных данных через переменные окружения или `.env` - Группировка задач по проекту и версии - Поддержка нескольких форматов экспорта: **ODT**, **CSV**, **Markdown**, **HTML** - Два режима вывода в консоль: табличный (красивая таблица) и компактный (для копирования) - Перевод статусов задач на русский язык - Автоматическое определение месяца отчёта по дате окончания периода (для **ODT**) - Простой CLI с понятными аргументами - Поддержка настройки диапазона дат по умолчанию через `.env` --- ## 🚀 Установка и настройка ### 1. Клонируйте репозиторий ```bash git clone https://git.akokos.ru/artem.kokos/redmine-reporter.git cd redmine-reporter ``` ### 2. Создайте виртуальное окружение и установите зависимости ```bash python3 -m venv .venv source .venv/bin/activate pip install --upgrade pip pip install . ``` > 💡 Установка в виртуальное окружение — стандарт для Python-инструментов. Это безопасно и не влияет на систему. ### 3. Настройте доверие к корпоративному сертификату (обязательно!) По умолчанию Python использует собственный набор сертификатов (`certifi`), который **не включает** внутренние CA Eltex. Чтобы избежать ошибки `CERTIFICATE_VERIFY_FAILED`, выполните **один раз**: ```bash cat /etc/ssl/certs/ca-certificates.crt >> $(python -m certifi) ``` > ✅ Это безопасно: вы просто добавляете доверенные системные сертификаты к Python. > ❌ Не используйте `verify=False` — это создаёт уязвимость. ### 4. Настройте учётные данные Создайте файл `.env` в корне проекта (**никогда не коммитьте его!**): ```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 ``` Альтернатива — задать переменные вручную: ```bash export REDMINE_URL=https://red.eltex.loc/ export REDMINE_USER=ваш.логин export REDMINE_PASSWORD=... export REDMINE_AUTHOR="Иванов Иван Иванович" ``` > 🔐 Рекомендуется использовать аккаунт с минимальными правами (только чтение time entries и задач). --- ## ▶️ Использование Перед каждым запуском активируйте окружение: ```bash source .venv/bin/activate ``` Затем: ```bash # Отчёт за период по умолчанию (из .env или встроенный) redmine-reporter # Отчёт за произвольный период redmine-reporter --date 2026-02-01--2026-02-28 # Компактный вывод (удобно копировать в письмо) redmine-reporter --compact # Экспорт в ODT redmine-reporter --output report.odt # Экспорт в CSV redmine-reporter --output report.csv # Экспорт в Markdown redmine-reporter --output report.md # Экспорт в HTML redmine-reporter --output report.html ``` > 💡 **Автоматика в ODT-отчёте**: > - Месяц в заголовке определяется **автоматически** по дате окончания периода (`to_date`). > Например: `2025-12-20--2026-01-15` → **«Январь»**. > - Имя автора берётся из `REDMINE_AUTHOR` (в `.env`) или CLI-аргумента `--author`. Пример содержимого `.env`: ```ini REDMINE_URL=https://red.eltex.loc/ REDMINE_USER=ivanov.ivan REDMINE_PASSWORD=supersecret REDMINE_AUTHOR=Иванов Иван DEFAULT_FROM_DATE=2026-01-01 DEFAULT_TO_DATE=2026-01-31 ``` Пример консольного вывода: ``` ✅ Total issues: 7 [2026-01-01--2026-01-31] ╒════════════╤═══════════╤══════════════════════════════════════╤═══════════╤════════════╕ │ Проект │ Версия │ Задача │ Статус │ Затрачено │ ╞════════════╪═══════════╪══════════════════════════════════════╪═══════════╪════════════╡ │ Камеры │ v2.5.0 │ 12345. Поддержка нового датчика │ В работе │ 2ч 30м │ │ │ │ 12346. Исправить утечку памяти │ Решена │ 2ч │ │ ПО │ │ 12350. Обновить документацию │ Ожидание │ 12ч │ ╘════════════╧═══════════╧══════════════════════════════════════╧═══════════╧════════════╛ ``` --- ## 🛠 Разработка Для участия в разработке: ```bash pip install -e ".[dev]" pytest black . isort . ``` --- > 🔒 **Важно**: > - Никогда не коммитьте `.env`, пароли или логины. > - Файл `.gitignore` уже исключает все чувствительные артефакты. > - Инструмент работает только в режиме **чтения** — он не может изменять данные в Redmine.