# redmine-reporter Инструмент для генерации отчётов по задачам в Redmine на основе ваших записей о затраченном времени. > Предназначен для внутреннего использования в Eltex. Работает с `https://red.eltex.loc/`. --- ## 🔧 Возможности - Безопасная передача учётных данных через переменные окружения или `.env` - Два режима вывода: компактный (для копирования) и табличный (для просмотра) - Группировка задач по проекту и версии - Перевод статусов на русский язык - Простой CLI с понятными аргументами --- ## 🚀 Установка и настройка (продакшен) ### 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=ваш_пароль ``` Альтернатива — задать переменные вручную: ```bash export REDMINE_URL=https://red.eltex.loc/ export REDMINE_USER=ваш.логин export REDMINE_PASSWORD=... ``` > 🔐 Рекомендуется использовать аккаунт с минимальными правами (только чтение time entries и задач). --- ## ▶️ Использование Перед каждым запуском активируйте окружение: ```bash source .venv/bin/activate ``` Затем: ```bash # Отчёт за период по умолчанию redmine-reporter # Отчёт за произвольный период redmine-reporter --date 2026-01-01--2026-01-31 # Компактный вывод (удобно копировать в письмо) redmine-reporter --compact ``` Пример вывода: ``` ✅ Total issues: 7 [2026-01-01--2026-01-31] ╒════════════╤═══════════╤══════════════════════════════════════╤═══════════╤════════════╕ │ Проект │ Версия │ Задача │ Статус │ Затрачено │ ╞════════════╪═══════════╪══════════════════════════════════════╪═══════════╪════════════╡ │ Камеры │ v2.5.0 │ 12345. Поддержка нового датчика │ В работе │ │ │ │ │ 12346. Исправить утечку памяти │ Решена │ │ │ ПО │ │ 12350. Обновить документацию │ Ожидание │ │ ╘════════════╧═══════════╧══════════════════════════════════════╧═══════════╧════════════╛ ``` --- ## 🛠 Разработка Для участия в разработке: ```bash pip install -e ".[dev]" pytest black . isort . ``` --- > 🔒 **Важно**: > - Никогда не коммитьте `.env`, пароли или логины. > - Файл `.gitignore` уже исключает все чувствительные артефакты. > - Инструмент работает только в режиме **чтения** — он не может изменять данные в Redmine.