125 lines
4.9 KiB
Markdown
125 lines
4.9 KiB
Markdown
# 📊 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. Исправить утечку памяти │ Решена │ │
|
||
│ Фабричный тест │ <N/A> │ 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` для удобства.
|