Files
redmine-reporter/README.md
Артём Кокос dfb8d474b4 Update README.md
2026-01-26 21:03:24 +07:00

165 lines
6.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# redmine-reporter
Инструмент для генерации отчётов по задачам в Redmine на основе ваших записей о затраченном времени.
> Предназначен для внутреннего использования в Eltex. Работает с `https://red.eltex.loc/`.
📄 **Лицензия**: [MIT](./LICENSE) — делайте что угодно.
---
## 🔧 Возможности
- Безопасная передача учётных данных через переменные окружения или `.env`
- Группировка задач по проекту и версии
- Поддержка нескольких форматов экспорта: **ODT**, **CSV**, **Markdown**, **HTML**
- Два режима вывода в консоль: табличный (красивая таблица) и компактный (для копирования)
- Перевод статусов задач на русский язык
- Автоматическое определение месяца отчёта по дате окончания периода (для **ODT**)
- Простой CLI с понятными аргументами
- Поддержка настройки диапазона дат по умолчанию через `.env`
---
## 🚀 Установка и настройка
### 1. Клонируйте репозиторий
```bash
git clone https://git.akokos.ru/artem.kokos/redmine-reporter.git
cd redmine-reporter
```
### 2. Создайте виртуальное окружение и установите зависимости
```bash
python3 -m venv .venv
source .venv/bin/activate
pip install --upgrade pip
pip install .
```
> 💡 Установка в виртуальное окружение — стандарт для Python-инструментов. Это безопасно и не влияет на систему.
### 3. Настройте доверие к корпоративному сертификату (обязательно!)
По умолчанию Python использует собственный набор сертификатов (`certifi`), который **не включает** внутренние CA Eltex.
Чтобы избежать ошибки `CERTIFICATE_VERIFY_FAILED`, выполните **один раз**:
```bash
cat /etc/ssl/certs/ca-certificates.crt >> $(python -m certifi)
```
> ✅ Это безопасно: вы просто добавляете доверенные системные сертификаты к Python.
> Не используйте `verify=False` — это создаёт уязвимость.
### 4. Настройте учётные данные
Создайте файл `.env` в корне проекта (**никогда не коммитьте его!**):
```ini
REDMINE_URL=https://red.eltex.loc/
REDMINE_USER=ваш.логин
REDMINE_PASSWORD=ваш_пароль
REDMINE_AUTHOR=Иванов Иван Иванович
# Опционально: диапазон дат по умолчанию
DEFAULT_FROM_DATE=2026-01-01
DEFAULT_TO_DATE=2026-01-31
```
Альтернатива — задать переменные вручную:
```bash
export REDMINE_URL=https://red.eltex.loc/
export REDMINE_USER=ваш.логин
export REDMINE_PASSWORD=...
export REDMINE_AUTHOR="Иванов Иван Иванович"
```
> 🔐 Рекомендуется использовать аккаунт с минимальными правами (только чтение time entries и задач).
---
## ▶️ Использование
Перед каждым запуском активируйте окружение:
```bash
source .venv/bin/activate
```
Затем:
```bash
# Отчёт за период по умолчанию (из .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`:
```ini
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ч │
╘════════════╧═══════════╧══════════════════════════════════════╧═══════════╧════════════╛
```
---
## 🛠 Разработка
Для участия в разработке:
```bash
pip install -e ".[dev]"
pytest
black .
isort .
```
---
> 🔒 **Важно**:
> - Никогда не коммитьте `.env`, пароли или логины.
> - Файл `.gitignore` уже исключает все чувствительные артефакты.
> - Инструмент работает только в режиме **чтения** — он не может изменять данные в Redmine.