135 lines
5.9 KiB
Markdown
135 lines
5.9 KiB
Markdown
# redmine-reporter
|
||
|
||
Инструмент для генерации отчётов по задачам в Redmine на основе ваших записей о затраченном времени.
|
||
|
||
> Предназначен для внутреннего использования в Eltex. Работает с `https://red.eltex.loc/`.
|
||
|
||
📄 **Лицензия**: [MIT](./LICENSE) — делайте что угодно.
|
||
|
||
---
|
||
|
||
## 🔧 Возможности
|
||
|
||
- Безопасная передача учётных данных через переменные окружения или `.env`
|
||
- Два режима вывода: компактный (для копирования) и табличный (для просмотра)
|
||
- Группировка задач по проекту и версии
|
||
- Перевод статусов на русский язык
|
||
- Простой 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=ваш_пароль
|
||
|
||
# Опционально: диапазон дат по умолчанию
|
||
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 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`.
|
||
|
||
---
|
||
|
||
## ▶️ Использование
|
||
|
||
Перед каждым запуском активируйте окружение:
|
||
|
||
```bash
|
||
source .venv/bin/activate
|
||
```
|
||
|
||
Затем:
|
||
|
||
```bash
|
||
# Отчёт за период по умолчанию (из .env или встроенный)
|
||
redmine-reporter
|
||
|
||
# Отчёт за произвольный период (переопределяет .env)
|
||
redmine-reporter --date 2026-02-01--2026-02-28
|
||
|
||
# Компактный вывод (удобно копировать в письмо)
|
||
redmine-reporter --compact
|
||
```
|
||
|
||
Пример вывода:
|
||
```
|
||
✅ Total issues: 7 [2026-01-01--2026-01-31]
|
||
╒════════════╤═══════════╤══════════════════════════════════════╤═══════════╤════════════╕
|
||
│ Проект │ Версия │ Задача │ Статус │ Затрачено │
|
||
╞════════════╪═══════════╪══════════════════════════════════════╪═══════════╪════════════╡
|
||
│ Камеры │ v2.5.0 │ 12345. Поддержка нового датчика │ В работе │ 2.00h │
|
||
│ │ │ 12346. Исправить утечку памяти │ Решена │ 2.00h │
|
||
│ ПО │ <N/A> │ 12350. Обновить документацию │ Ожидание │ 12.00h │
|
||
╘════════════╧═══════════╧══════════════════════════════════════╧═══════════╧════════════╛
|
||
```
|
||
|
||
---
|
||
|
||
## 🛠 Разработка
|
||
|
||
Для участия в разработке:
|
||
|
||
```bash
|
||
pip install -e ".[dev]"
|
||
pytest
|
||
black .
|
||
isort .
|
||
```
|
||
|
||
---
|
||
|
||
> 🔒 **Важно**:
|
||
> - Никогда не коммитьте `.env`, пароли или логины.
|
||
> - Файл `.gitignore` уже исключает все чувствительные артефакты.
|
||
> - Инструмент работает только в режиме **чтения** — он не может изменять данные в Redmine.
|