Update README.md
This commit is contained in:
62
README.md
62
README.md
@@ -1,7 +1,6 @@
|
|||||||
# redmine-reporter
|
# redmine-reporter
|
||||||
|
|
||||||
Инструмент для генерации отчётов по задачам в Redmine на основе ваших записей о затраченном времени.
|
Инструмент для генерации отчётов по задачам в Redmine на основе ваших записей о затраченном времени.
|
||||||
|
|
||||||
> Предназначен для внутреннего использования в Eltex. Работает с `https://red.eltex.loc/`.
|
> Предназначен для внутреннего использования в Eltex. Работает с `https://red.eltex.loc/`.
|
||||||
|
|
||||||
📄 **Лицензия**: [MIT](./LICENSE) — делайте что угодно.
|
📄 **Лицензия**: [MIT](./LICENSE) — делайте что угодно.
|
||||||
@@ -11,16 +10,17 @@
|
|||||||
## 🔧 Возможности
|
## 🔧 Возможности
|
||||||
|
|
||||||
- Безопасная передача учётных данных через переменные окружения или `.env`
|
- Безопасная передача учётных данных через переменные окружения или `.env`
|
||||||
- Два режима вывода: компактный (для копирования) и табличный (для просмотра)
|
|
||||||
- Группировка задач по проекту и версии
|
- Группировка задач по проекту и версии
|
||||||
- Перевод статусов на русский язык
|
- Поддержка нескольких форматов экспорта: **ODT**, **CSV**, **Markdown**, **HTML**
|
||||||
|
- Два режима вывода в консоль: табличный (красивая таблица) и компактный (для копирования)
|
||||||
|
- Перевод статусов задач на русский язык
|
||||||
|
- Автоматическое определение месяца отчёта по дате окончания периода (для **ODT**)
|
||||||
- Простой CLI с понятными аргументами
|
- Простой CLI с понятными аргументами
|
||||||
- Поддержка настройки диапазона дат по умолчанию через `.env`
|
- Поддержка настройки диапазона дат по умолчанию через `.env`
|
||||||
- Экспорт в ODT, CSV и Markdown
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 🚀 Установка и настройка (продакшен)
|
## 🚀 Установка и настройка
|
||||||
|
|
||||||
### 1. Клонируйте репозиторий
|
### 1. Клонируйте репозиторий
|
||||||
|
|
||||||
@@ -29,7 +29,7 @@ git clone https://git.akokos.ru/artem.kokos/redmine-reporter.git
|
|||||||
cd redmine-reporter
|
cd redmine-reporter
|
||||||
```
|
```
|
||||||
|
|
||||||
### 2. Создайте изолированное окружение и установите зависимости
|
### 2. Создайте виртуальное окружение и установите зависимости
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
python3 -m venv .venv
|
python3 -m venv .venv
|
||||||
@@ -52,7 +52,7 @@ cat /etc/ssl/certs/ca-certificates.crt >> $(python -m certifi)
|
|||||||
> ✅ Это безопасно: вы просто добавляете доверенные системные сертификаты к Python.
|
> ✅ Это безопасно: вы просто добавляете доверенные системные сертификаты к Python.
|
||||||
> ❌ Не используйте `verify=False` — это создаёт уязвимость.
|
> ❌ Не используйте `verify=False` — это создаёт уязвимость.
|
||||||
|
|
||||||
### 4. Настройте учётные данные и (опционально) даты
|
### 4. Настройте учётные данные
|
||||||
|
|
||||||
Создайте файл `.env` в корне проекта (**никогда не коммитьте его!**):
|
Создайте файл `.env` в корне проекта (**никогда не коммитьте его!**):
|
||||||
|
|
||||||
@@ -74,12 +74,9 @@ export REDMINE_URL=https://red.eltex.loc/
|
|||||||
export REDMINE_USER=ваш.логин
|
export REDMINE_USER=ваш.логин
|
||||||
export REDMINE_PASSWORD=...
|
export REDMINE_PASSWORD=...
|
||||||
export REDMINE_AUTHOR="Иванов Иван Иванович"
|
export REDMINE_AUTHOR="Иванов Иван Иванович"
|
||||||
export DEFAULT_FROM_DATE=2026-01-01
|
|
||||||
export DEFAULT_TO_DATE=2026-01-31
|
|
||||||
```
|
```
|
||||||
|
|
||||||
> 🔐 Рекомендуется использовать аккаунт с минимальными правами (только чтение time entries и задач).
|
> 🔐 Рекомендуется использовать аккаунт с минимальными правами (только чтение time entries и задач).
|
||||||
> 💡 Если `DEFAULT_FROM_DATE` и `DEFAULT_TO_DATE` не заданы, используется встроенный диапазон: `2025-12-19--2026-01-31`.
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -97,45 +94,52 @@ source .venv/bin/activate
|
|||||||
# Отчёт за период по умолчанию (из .env или встроенный)
|
# Отчёт за период по умолчанию (из .env или встроенный)
|
||||||
redmine-reporter
|
redmine-reporter
|
||||||
|
|
||||||
# Отчёт за произвольный период (переопределяет .env)
|
# Отчёт за произвольный период
|
||||||
redmine-reporter --date 2026-02-01--2026-02-28
|
redmine-reporter --date 2026-02-01--2026-02-28
|
||||||
|
|
||||||
# Компактный вывод (удобно копировать в письмо)
|
# Компактный вывод (удобно копировать в письмо)
|
||||||
redmine-reporter --compact
|
redmine-reporter --compact
|
||||||
|
|
||||||
# Экспорт в ODT с указанием автора (если не задано в .env)
|
# Экспорт в ODT
|
||||||
redmine-reporter --output report.odt --author "Иванов Иван Иванович"
|
redmine-reporter --output report.odt
|
||||||
|
|
||||||
|
# Экспорт в CSV
|
||||||
|
redmine-reporter --output report.csv
|
||||||
|
|
||||||
|
# Экспорт в Markdown
|
||||||
|
redmine-reporter --output report.md
|
||||||
|
|
||||||
|
# Экспорт в HTML
|
||||||
|
redmine-reporter --output report.html
|
||||||
```
|
```
|
||||||
|
|
||||||
> 💡 **Автоматика в ODT-отчёте**:
|
> 💡 **Автоматика в ODT-отчёте**:
|
||||||
> - Месяц в заголовке определяется **автоматически** по дате окончания периода (`to_date`).
|
> - Месяц в заголовке определяется **автоматически** по дате окончания периода (`to_date`).
|
||||||
> Например: `2025-12-20--2026-01-15` → **«Январь»**.
|
> Например: `2025-12-20--2026-01-15` → **«Январь»**.
|
||||||
> - Имя автора берётся из переменной окружения `REDMINE_AUTHOR` (в `.env`) или CLI-аргумента `--author`.
|
> - Имя автора берётся из `REDMINE_AUTHOR` (в `.env`) или CLI-аргумента `--author`.
|
||||||
> - Первая пустая строка из шаблона `template.odt` **автоматически удаляется**.
|
|
||||||
|
|
||||||
Пример содержимого `.env` с автором:
|
Пример содержимого `.env`:
|
||||||
|
|
||||||
```ini
|
```ini
|
||||||
REDMINE_URL=https://red.eltex.loc/
|
REDMINE_URL=https://red.eltex.loc/
|
||||||
REDMINE_USER=ваш.логин
|
REDMINE_USER=ivanov.ivan
|
||||||
REDMINE_PASSWORD=ваш_пароль
|
REDMINE_PASSWORD=supersecret
|
||||||
REDMINE_AUTHOR=Иванов Иван Иванович
|
REDMINE_AUTHOR=Иванов Иван
|
||||||
|
|
||||||
DEFAULT_FROM_DATE=2026-01-01
|
DEFAULT_FROM_DATE=2026-01-01
|
||||||
DEFAULT_TO_DATE=2026-01-31
|
DEFAULT_TO_DATE=2026-01-31
|
||||||
```
|
```
|
||||||
|
|
||||||
Пример вывода в ODT (заголовок):
|
|
||||||
> **Иванов Иван Иванович. Отчёт за месяц Январь.**
|
|
||||||
|
|
||||||
Пример консольного вывода:
|
Пример консольного вывода:
|
||||||
|
|
||||||
```
|
```
|
||||||
✅ Total issues: 7 [2026-01-01--2026-01-31]
|
✅ Total issues: 7 [2026-01-01--2026-01-31]
|
||||||
╒════════════╤═══════════╤══════════════════════════════════════╤═══════════╤════════════╕
|
╒════════════╤═══════════╤══════════════════════════════════════╤═══════════╤════════════╕
|
||||||
│ Проект │ Версия │ Задача │ Статус │ Затрачено │
|
│ Проект │ Версия │ Задача │ Статус │ Затрачено │
|
||||||
╞════════════╪═══════════╪══════════════════════════════════════╪═══════════╪════════════╡
|
╞════════════╪═══════════╪══════════════════════════════════════╪═══════════╪════════════╡
|
||||||
│ Камеры │ v2.5.0 │ 12345. Поддержка нового датчика │ В работе │ 2.00h │
|
│ Камеры │ v2.5.0 │ 12345. Поддержка нового датчика │ В работе │ 2ч 30м │
|
||||||
│ │ │ 12346. Исправить утечку памяти │ Решена │ 2.00h │
|
│ │ │ 12346. Исправить утечку памяти │ Решена │ 2ч │
|
||||||
│ ПО │ <N/A> │ 12350. Обновить документацию │ Ожидание │ 12.00h │
|
│ ПО │ <N/A> │ 12350. Обновить документацию │ Ожидание │ 12ч │
|
||||||
╘════════════╧═══════════╧══════════════════════════════════════╧═══════════╧════════════╛
|
╘════════════╧═══════════╧══════════════════════════════════════╧═══════════╧════════════╛
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -154,7 +158,7 @@ isort .
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
> 🔒 **Важно**:
|
> 🔒 **Важно**:
|
||||||
> - Никогда не коммитьте `.env`, пароли или логины.
|
> - Никогда не коммитьте `.env`, пароли или логины.
|
||||||
> - Файл `.gitignore` уже исключает все чувствительные артефакты.
|
> - Файл `.gitignore` уже исключает все чувствительные артефакты.
|
||||||
> - Инструмент работает только в режиме **чтения** — он не может изменять данные в Redmine.
|
> - Инструмент работает только в режиме **чтения** — он не может изменять данные в Redmine.
|
||||||
|
|||||||
Reference in New Issue
Block a user