• v1.9.0 b926dd0d49

    artem.kokos released this 2026-07-07 11:12:45 +07:00 | 37 commits to main since this release

    redmine-reporter v1.9.0

    Дата: 07.07.2026


    Новое

    • YAML-конфиг — полная настройка через ~/.config/redmine-reporter/config.yml. Секции: redmine (url, api_key, author, verify_ssl), period (precision, default_from/to, dynamic, last_used), output (dir, шаблон имени, default_format), email (настройки SMTP). Подстановка ${VAR} для секретов. --init-config генерирует файл из .env. Автозагрузка при каждом запуске. Права: 0600 на файл, 0700 на директорию.

    • Умное разрешение --output (#43) — путь к файлу формируется с учётом YAML-конфига:

      • --output xlsx (только формат) → путь по шаблону: output.dir + output.filename
      • --output /путь/report (без расширения) → дописывается output.default_format
      • --output /путь/report.csv (с расширением) → как есть
      • Шаблон поддерживает {author}, {from}, {to}, {date} (DD_MM_YYYY), {ext}
    • Точность периода до секунды (#47)period.precision: datetime. При наличии last_used в конфиге повторный запуск отсекает time entries, у которых оба поля created_on и updated_on раньше cutoff (AND-логика). Исключает дублирование при нескольких запусках в течение дня.

    • --commit (#44) — автосохранение отчёта в файл и фиксация периода в period.last_used.from/to YAML-конфига:

      • С --output → по явному пути
      • Без --output → по шаблону из конфига
      • period.dynamic: true → следующий запуск сам вычисляет новый период: полный месяц → следующий месяц, произвольный диапазон → та же длина со сдвигом
      • period.dynamic: false → перезаписывает default_from/default_to закоммиченными значениями
      • При period.precision: datetime → сохраняет время с точностью до секунды
    • Плейсхолдер {date} — в шаблоне имени файла раскрывается в DD_MM_YYYY от конечной даты


    Изменения

    • verify_ssl: true в YAML теперь даёт путь к CA-бандлу (/etc/ssl/certs/ca-certificates.crt), а не Python-буль
    • YAML-конфиг подгружается автоматически при каждом запуске CLI
    • --output без расширения больше не ошибка — дописывается default_format
    • fetch_issues_with_spent_time() пропускает задачи без часов после дедупликации
    • _resolve_str() в AppConfig поддерживает вложенные ключи YAML (до 3 уровней)
    • В mypy добавлены в игнор: yaml, requests, urllib3.*

    Внутреннее

    • +56 тестов (всего 218). Новые классы: TestResolveOutputPath, TestSavePeriodToConfig, TestCommitFlag, TestComputeNextPeriod, TestDefaultDateRangeWithLastUsed, TestConfigPeriodPrecision
    • Новые функции: resolve_output_path(), save_period_to_config(), compute_next_period(), _parse_datetime(), _compute_dedup_cutoff()
    • Новый датакласс: PeriodLastUsed
    • Новые поля AppConfig: period_last_used_from/to, output_dir/filename/default_format
    • Новые методы Config: get_period_precision(), get_last_used_from/to(), get_output_dir/filename/default_format()

    Обновление с v1.8.1

    # Сгенерировать YAML-конфиг из .env
    redmine-reporter --init-config
    
    # Настроить точность и автосдвиг периода
    vim ~/.config/redmine-reporter/config.yml
    #   period.precision: datetime
    #   period.dynamic: true
    
    # Ежедневный/ежемесячный рабочий процесс:
    redmine-reporter --commit          # сгенерировать + сохранить + запомнить период
    redmine-reporter --commit --output odt  # выбрать формат
    redmine-reporter                    # просто в консоль
    
    Downloads