Кокос Артем Николаевич 355849e004 Fix issue mock for tests
2026-01-26 12:37:57 +07:00
2026-01-26 12:37:57 +07:00
2026-01-26 12:37:57 +07:00
2026-01-22 16:52:18 +07:00
2026-01-21 10:44:53 +07:00
2026-01-25 12:24:32 +07:00
2026-01-22 16:52:18 +07:00

redmine-reporter

Инструмент для генерации отчётов по задачам в Redmine на основе ваших записей о затраченном времени.

Предназначен для внутреннего использования в Eltex. Работает с https://red.eltex.loc/.

📄 Лицензия: MIT — делайте что угодно.


🔧 Возможности

  • Безопасная передача учётных данных через переменные окружения или .env
  • Два режима вывода: компактный (для копирования) и табличный (для просмотра)
  • Группировка задач по проекту и версии
  • Перевод статусов на русский язык
  • Простой CLI с понятными аргументами
  • Поддержка настройки диапазона дат по умолчанию через .env
  • Экспорт в ODT, CSV и Markdown

🚀 Установка и настройка (продакшен)

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="Иванов Иван Иванович"
export DEFAULT_FROM_DATE=2026-01-01
export DEFAULT_TO_DATE=2026-01-31

🔐 Рекомендуется использовать аккаунт с минимальными правами (только чтение time entries и задач). 💡 Если DEFAULT_FROM_DATE и DEFAULT_TO_DATE не заданы, используется встроенный диапазон: 2025-12-19--2026-01-31.


▶️ Использование

Перед каждым запуском активируйте окружение:

source .venv/bin/activate

Затем:

# Отчёт за период по умолчанию (из .env или встроенный)
redmine-reporter

# Отчёт за произвольный период (переопределяет .env)
redmine-reporter --date 2026-02-01--2026-02-28

# Компактный вывод (удобно копировать в письмо)
redmine-reporter --compact

# Экспорт в ODT с указанием автора (если не задано в .env)
redmine-reporter --output report.odt --author "Иванов Иван Иванович"

💡 Автоматика в ODT-отчёте:

  • Месяц в заголовке определяется автоматически по дате окончания периода (to_date). Например: 2025-12-20--2026-01-15«Январь».
  • Имя автора берётся из переменной окружения REDMINE_AUTHOR.env) или CLI-аргумента --author.
  • Первая пустая строка из шаблона template.odt автоматически удаляется.

Пример содержимого .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

Пример вывода в ODT (заголовок):

Иванов Иван Иванович. Отчёт за месяц Январь.

Пример консольного вывода:

✅ Total issues: 7 [2026-01-01--2026-01-31]
╒════════════╤═══════════╤══════════════════════════════════════╤═══════════╤════════════╕
│ Проект     │ Версия    │ Задача                               │ Статус    │ Затрачено  │
╞════════════╪═══════════╪══════════════════════════════════════╪═══════════╪════════════╡
│ Камеры     │ v2.5.0    │ 12345. Поддержка нового датчика      │ В работе  │ 2.00h      │
│            │           │ 12346. Исправить утечку памяти       │ Решена    │ 2.00h      │
│ ПО         │ <N/A>     │ 12350. Обновить документацию         │ Ожидание  │ 12.00h     │
╘════════════╧═══════════╧══════════════════════════════════════╧═══════════╧════════════╛

🛠 Разработка

Для участия в разработке:

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%