diff --git a/README.md b/README.md index d55904d..7047b1d 100644 --- a/README.md +++ b/README.md @@ -1,57 +1,113 @@ # redmine-reporter -Internal tool to generate Redmine issue reports based on your time entries. +Инструмент для генерации отчётов по задачам в Redmine на основе ваших записей о затраченном времени. -## Features +> Предназначен для внутреннего использования в Eltex. Работает с `https://red.eltex.loc/`. -- Secure credential handling via environment variables -- Compact or fancy table output -- Grouping by project and version -- Status translation to Russian -- CLI with intuitive arguments +--- -## Installation +## 🔧 Возможности + +- Безопасная передача учётных данных через переменные окружения или `.env` +- Два режима вывода: компактный (для копирования) и табличный (для просмотра) +- Группировка задач по проекту и версии +- Перевод статусов на русский язык +- Простой CLI с понятными аргументами + +--- + +## 🚀 Установка и настройка (продакшен) + +### 1. Клонируйте репозиторий ```bash -git clone https://your-gitea/redmine-reporter.git +git clone https://git.akokos.ru/artem.kokos/redmine-reporter.git cd redmine-reporter -python3 -m venv .venv -source .venv/bin/activate -pip install -e . ``` -## Configuration +### 2. Создайте изолированное окружение и установите зависимости -Create `.env` (not committed!): +```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=artem.kokos -REDMINE_PASSWORD=your_password_here +REDMINE_USER=ваш.логин +REDMINE_PASSWORD=ваш_пароль ``` -Or export in shell: +Альтернатива — задать переменные вручную: ```bash export REDMINE_URL=https://red.eltex.loc/ -export REDMINE_USER=artem.kokos +export REDMINE_USER=ваш.логин export REDMINE_PASSWORD=... ``` -## Usage +> 🔐 Рекомендуется использовать аккаунт с минимальными правами (только чтение time entries и задач). + +--- + +## ▶️ Использование + +Перед каждым запуском активируйте окружение: ```bash -# Default date range +source .venv/bin/activate +``` + +Затем: + +```bash +# Отчёт за период по умолчанию redmine-reporter -# Custom date range -redmine-reporter --date 2025-12-01--2026-01-31 +# Отчёт за произвольный период +redmine-reporter --date 2026-01-01--2026-01-31 -# Compact mode +# Компактный вывод (удобно копировать в письмо) redmine-reporter --compact ``` -## Development +Пример вывода: +``` +✅ Total issues: 7 [2026-01-01--2026-01-31] +╒════════════╤═══════════╤══════════════════════════════════════╤═══════════╤════════════╕ +│ Проект │ Версия │ Задача │ Статус │ Затрачено │ +╞════════════╪═══════════╪══════════════════════════════════════╪═══════════╪════════════╡ +│ Камеры │ v2.5.0 │ 12345. Поддержка нового датчика │ В работе │ │ +│ │ │ 12346. Исправить утечку памяти │ Решена │ │ +│ ПО │ │ 12350. Обновить документацию │ Ожидание │ │ +╘════════════╧═══════════╧══════════════════════════════════════╧═══════════╧════════════╛ +``` + +--- + +## 🛠 Разработка + +Для участия в разработке: ```bash pip install -e ".[dev]" @@ -60,17 +116,9 @@ black . isort . ``` -> 🔒 Never commit `.env` or credentials! +--- -### Production SSL Setup (for internal Redmine) - -If you get `CERTIFICATE_VERIFY_FAILED`, your corporate CA is not trusted by Python's `certifi`. - -Fix it once per environment: - -```bash -source .venv/bin/activate -cat /etc/ssl/certs/ca-certificates.crt >> $(python -m certifi) -``` - -> This appends system CA bundle to Python's certificate store. Safe and secure. +> 🔒 **Важно**: +> - Никогда не коммитьте `.env`, пароли или логины. +> - Файл `.gitignore` уже исключает все чувствительные артефакты. +> - Инструмент работает только в режиме **чтения** — он не может изменять данные в Redmine.