Кокос Артем Николаевич 06cd57e2c4 Blacked
2026-02-05 15:31:31 +07:00
2026-02-05 15:31:31 +07:00
2026-02-05 15:31:31 +07:00
2026-01-26 13:43:54 +07:00
2026-01-21 10:44:53 +07:00
2026-02-05 15:18:40 +07:00
2026-01-26 21:03:24 +07:00

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.
Description
Инструмент для генерации отчётов по задачам в Redmine на основе ваших записей о затраченном времени.
Readme MIT 192 KiB
2026-01-26 13:44:31 +07:00
Languages
Python 100%