period.default_to приводит к устаревшему периоду при --send без --date #50
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Команда:
redmine-reporter --send(без--date)Фактический результат:
Отчёт сгенерирован за
2026-06-30--2026-07-31, хотя сегодня 10 июля 2026.Ожидаемый результат:
При
--sendбез--dateпериод должен быть актуальным относительно текущей даты (например, текущий месяц или с начала месяца до сегодня).Корневая причина
В
redmine_reporter/config.py:get_default_date_range()приоритет такой:DEFAULT_FROM_DATE/DEFAULT_TO_DATEperiod.dynamic=trueи естьperiod.last_used— вычислить следующий периодperiod.default_from/period.default_toЕсли
dynamic=true, ноlast_usedещё нет (потому что--commitещё не вызывался), инструмент берёт зашитыеdefault_from/default_to, которые со временем устаревают.Проблема концептуальная
Поле
period.default_toпо смыслу означает «до этого момента», но в реальности момент меняется каждый день. Хранить фиксированную дату окончания в конфиге некорректно для режима автоматических отчётов.Возможные решения
period.dynamic=trueи отсутствующемlast_usedигнорироватьdefault_from/default_toи использовать текущий месяц.period.default_toиз конфигурации;default_fromоставить как стартовую точку, конец периода вычислять автоматически (сегодня или конец месяца).default_toнаходится в прошлом/будущем относительно текущей даты.Релевантный код
redmine_reporter/config.py:370-399—get_default_date_range()redmine_reporter/cli.py:371-377— разбор периода при отсутствии--dateУточнение по предпочтительному фиксу:
Если
period.default_toне указан в конфиге, использовать текущую дату (today) в качестве конца периода по умолчанию.period.default_fromостаётся заданным вручную.Пример:
При запуске
--send10 июля 2026 без--dateпериод должен быть2026-07-01--2026-07-10, а не2026-07-01--2026-07-31и не устаревшийdefault_to.Это сохраняет обратную совместимость: если
default_toзадан явно — используется он. Если нет — берётся сегодня.