# 📊 Redmine Reporter Утилита командной строки для генерации отчётов по задачам в Redmine на основе **фактических временных затрат** за указанный период. Группирует задачи по проекту и версии, поддерживает локализацию статусов и два формата вывода. --- ## ✨ Возможности - Автоматический сбор всех задач, по которым вы вели учёт времени. - Группировка по **проекту → версии**. - Поддержка двух форматов вывода: - `simple` — компактный текст (удобен для логов и скриптов) - `tabulate` — красивая таблица в терминале - Локализация статусов задач (например, «In Progress» → «В работе») - Безопасная работа с учётными данными: пароль берётся **только из переменной окружения** - Гибкая настройка через конфигурационный файл **и/или CLI** --- ## 🚀 Установка ```bash cd elt-report pip install . ``` > Требуется Python ≥ 3.8. --- ## ⚙️ Настройка 1. Скопируйте пример конфига: ```bash cp config.example.yaml config.yaml ``` 2. Отредактируйте `config.yaml`: ```yaml redmine: url: "https://red.eltex.loc/" username: "your_login" password_env: "REDMINE_PASSWORD" # имя переменной окружения report: date_from: "2025-12-19" date_to: "2026-01-31" output_format: "tabulate" ``` 3. Установите пароль в переменную окружения: ```bash export REDMINE_PASSWORD='ваш_пароль' ``` > 🔒 **Никогда не храните пароль в файлах!** --- ## ▶️ Использование ### Базовый запуск (всё из конфига): ```bash redmine-report ``` ### Переопределение через CLI: ```bash redmine-report --from 2026-01-01 --to 2026-01-31 --format simple ``` ### Все опции: ```bash redmine-report --help ``` Поддерживаемые флаги: - `--config PATH` — путь к YAML-конфигу (по умолчанию: `config.yaml`) - `--from YYYY-MM-DD` — начальная дата - `--to YYYY-MM-DD` — конечная дата - `--format [simple|tabulate]` — формат вывода > CLI-аргументы имеют **приоритет** над значениями в конфиге. --- ## 🛡️ Безопасность - Пароль **никогда не передаётся в аргументах** и **не сохраняется в файлах**. - Используется только через `os.getenv()`. - Рекомендуется использовать `.env`-файлы или менеджеры секретов в CI/CD. --- ## 🧪 Пример вывода (`--format tabulate`) ``` ╒════════════════╤═══════════╤══════════════════════════════════╤═══════════╤════════════╕ │ Проект │ Версия │ Задача │ Статус │ Затрачено │ ╞════════════════╪═══════════╪══════════════════════════════════╪═══════════╪════════════╡ │ Камера │ v2.1 │ 12345. Реализовать PTZ │ В работе │ │ │ │ │ 12346. Исправить утечку памяти │ Решена │ │ │ Фабричный тест │ │ 12350. Добавить проверку GPIO │ В работе │ │ ╘════════════════╧═══════════╧══════════════════════════════════╧═══════════╧════════════╛ ``` --- ## 📦 Зависимости - [`python-redmine`](https://python-redmine.com/) - [`tabulate`](https://pypi.org/project/tabulate/) - [`PyYAML`](https://pyyaml.org/) --- ## 📝 Автор © 2026 Eltex Co. Developed by Artem Kokos. --- > 💡 Совет: добавьте `export REDMINE_PASSWORD=...` в `~/.bashrc` или используйте `direnv` для удобства.