6.9 KiB
redmine-reporter
Инструмент для генерации отчётов по задачам в Redmine на основе ваших записей о затраченном времени.
Предназначен для внутреннего использования в Eltex. Работает с
https://red.eltex.loc/.
📄 Лицензия: MIT — делайте что угодно.
🔧 Возможности
- Безопасная передача учётных данных через переменные окружения или
.env - Группировка задач по проекту и версии
- Поддержка нескольких форматов экспорта: ODT, CSV, Markdown, HTML
- Два режима вывода в консоль: табличный (красивая таблица) и компактный (для копирования)
- Перевод статусов задач на русский язык
- Автоматическое определение месяца отчёта по дате окончания периода (для ODT)
- Простой CLI с понятными аргументами
- Поддержка настройки диапазона дат по умолчанию через
.env
🚀 Установка и настройка
1. Клонируйте репозиторий
git clone https://git.akokos.ru/artem.kokos/redmine-reporter.git
cd redmine-reporter
2. Создайте виртуальное окружение и установите зависимости
python3 -m venv .venv
source .venv/bin/activate
pip install --upgrade pip
pip install .
💡 Установка в виртуальное окружение — стандарт для Python-инструментов. Это безопасно и не влияет на систему.
3. Настройте доверие к корпоративному сертификату (обязательно!)
По умолчанию Python использует собственный набор сертификатов (certifi), который не включает внутренние CA Eltex.
Чтобы избежать ошибки CERTIFICATE_VERIFY_FAILED, выполните один раз:
cat /etc/ssl/certs/ca-certificates.crt >> $(python -m certifi)
✅ Это безопасно: вы просто добавляете доверенные системные сертификаты к Python.
❌ Не используйтеverify=False— это создаёт уязвимость.
4. Настройте учётные данные
Создайте файл .env в корне проекта (никогда не коммитьте его!):
REDMINE_URL=https://red.eltex.loc/
REDMINE_USER=ваш.логин
REDMINE_PASSWORD=ваш_пароль
REDMINE_AUTHOR=Иванов Иван Иванович
# Опционально: диапазон дат по умолчанию
DEFAULT_FROM_DATE=2026-01-01
DEFAULT_TO_DATE=2026-01-31
Альтернатива — задать переменные вручную:
export REDMINE_URL=https://red.eltex.loc/
export REDMINE_USER=ваш.логин
export REDMINE_PASSWORD=...
export REDMINE_AUTHOR="Иванов Иван Иванович"
🔐 Рекомендуется использовать аккаунт с минимальными правами (только чтение time entries и задач).
▶️ Использование
Перед каждым запуском активируйте окружение:
source .venv/bin/activate
Затем:
# Отчёт за период по умолчанию (из .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:
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ч │
│ ПО │ <N/A> │ 12350. Обновить документацию │ Ожидание │ 12ч │
╘════════════╧═══════════╧══════════════════════════════════════╧═══════════╧════════════╛
🛠 Разработка
Для участия в разработке:
pip install -e ".[dev]"
pytest
black .
isort .
🔒 Важно:
- Никогда не коммитьте
.env, пароли или логины.- Файл
.gitignoreуже исключает все чувствительные артефакты.- Инструмент работает только в режиме чтения — он не может изменять данные в Redmine.