From 80faccb1f993c115f59df495ba1221b21309434e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9A=D0=BE=D0=BA=D0=BE=D1=81=20=D0=90=D1=80=D1=82=D0=B5?= =?UTF-8?q?=D0=BC=20=D0=9D=D0=B8=D0=BA=D0=BE=D0=BB=D0=B0=D0=B5=D0=B2=D0=B8?= =?UTF-8?q?=D1=87?= Date: Tue, 7 Jul 2026 10:48:36 +0700 Subject: [PATCH] docs: add --commit documentation to README and CONFIG --- README.md | 18 ++++++++++++++++++ docs/CONFIG.md | 36 +++++++++++++++++++++++++++++++++++- 2 files changed, 53 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 7790c4e..7876662 100644 --- a/README.md +++ b/README.md @@ -19,6 +19,7 @@ CLI-инструмент для генерации отчётов по зада - Сводка по времени (`--summary`). - YAML-конфиг (`~/.config/redmine-reporter/config.yml`): шаблон имени файла, путь по умолчанию, период, SMTP. - Умное разрешение `--output`: bare-формат (`xlsx`) → путь по шаблону, без расширения → автодописывание. +- `--commit`: автосохранение отчёта в файл + фиксация периода в YAML-конфиге для следующего запуска. - Понятные сообщения об ошибках Redmine API (401/403/5xx, таймаут, сеть). - Загрузка альтернативного `.env` через `--config`. @@ -197,6 +198,23 @@ redmine-reporter --by-activity --summary redmine-reporter --summary ``` +Фиксация периода (`--commit`): + +```bash +# Сгенерировать, сохранить в файл по шаблону, запомнить период +redmine-reporter --commit + +# С явным путём +redmine-reporter --commit --output report.xlsx + +# Следующий запуск (без --date) возьмёт следующий период автоматически +redmine-reporter + +# При precision=datetime запоминает момент времени +# (предотвращает дублирование записей внутри дня) +redmine-reporter --commit +``` + ## Форматы вывода | Формат | Особенности | diff --git a/docs/CONFIG.md b/docs/CONFIG.md index 5eabde8..9ca390b 100644 --- a/docs/CONFIG.md +++ b/docs/CONFIG.md @@ -64,11 +64,45 @@ email: Определяет, как вычисляется следующий период после фиксации: -- `date` (по умолчанию) — период с точностью до дня. Следующий запуск (после `--commit`, #44) начинается со следующего дня. +- `date` (по умолчанию) — период с точностью до дня. Следующий запуск (после `--commit`) начинается со следующего дня. - `datetime` — период с точностью до секунды. При повторном запуске time entries с `created_on` и `updated_on` ранее `last_used.to` исключаются (AND-логика: запись исключается только если **оба** поля раньше cutoff). Это предотвращает дублирование при отправке отчёта внутри рабочего дня. `last_used.from` / `last_used.to` записываются автоматически при `--commit`. Вручную редактировать не требуется. +### `--commit` — автофиксация периода + +Флаг `--commit` сохраняет использованный период в YAML-конфиг, чтобы следующий запуск автоматически начинался с нового периода. + +**Что делает:** + +1. Генерирует отчёт как обычно. +2. Сохраняет отчёт в файл: + - Если указан `--output` — по явному пути. + - Если `--output` не указан — по шаблону из `output.dir` / `output.filename`. +3. Записывает `period.last_used.from` / `period.last_used.to` в YAML-конфиг. +4. При `period.precision: datetime` сохраняет текущий момент времени (ISO с секундами). +5. При `period.precision: date` сохраняет даты периода. + +**Поведение `period.dynamic`:** + +- `dynamic: true` — следующий запуск (без `--date`) вычисляет период от `last_used`: + - Полный календарный месяц → следующий полный месяц. + - Произвольный диапазон → та же длительность, начиная со дня после `last_used.to`. +- `dynamic: false` — `--commit` перезаписывает `default_from`/`default_to` на использованный период. + +**Примеры:** + +```bash +# Июнь 2026 → следующий запуск (без --date) → июль 2026 +redmine-reporter --date 2026-06-01--2026-06-30 --commit + +# Произвольный диапазон: 15-20 июня → следующий запуск → 21-26 июня +redmine-reporter --date 2026-06-15--2026-06-20 --commit + +# С datetime-точностью: повторный запуск не дублирует записи +redmine-reporter --commit +``` + ### `output` — путь и имя файла по умолчанию Секция управляет тем, куда и с каким именем сохраняется отчёт, когда `--output` не содержит полного пути.