Поддержка времени в периоде отчёта (datetime precision) #47
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?
Контекст
Задачи #44 и #45 предполагают автоматическую фиксацию последнего периода и отправку отчётов. Сейчас период задаётся с точностью до даты. Если отчёт сформирован и отправлен в 12:00, а после этого пользователь продолжает работать, следующий отчёт захватит time entries за весь текущий день — включая те, что уже попали в предыдущий отчёт. Это приведёт к дублированию.
Предложение
Поддерживать период с точностью до даты и времени (
datetime) и хранить момент последнего «коммита» в YAML-конфиге (#46).Структура в конфиге
Режимы
precision: date— текущее поведение.last_usedокругляется до даты, следующий период начинается со следующего дня.precision: datetime—last_usedхранится какdatetime. Следующий период начинается с точки остановки.Проблема Redmine API
Redmine time entries фильтруются по
spent_on, который, скорее всего, представляет собой дату, а неdatetime. Это означает, что на уровне API нельзя запросить записи только после 12:00.Возможная реализация
last_used.toи новее.created_on/updated_on) раньше сохранённогоlast_used.to.created_on/updated_onвключаются в следующий отчёт.Альтернативы
last_time_entry_idвместо времени. Это точно отсекает уже учтённые записи, но не спасает от записей, добавленных или отредактированных задним числом.--commitработает с дневной точностью.Связанные задачи
period.last_used.--commitдолжен записыватьlast_usedс учётомprecision.--commitили сама фиксирует момент отправки.Критерии приёмки
config.ymlподдержано полеperiod.precision(date/datetime).precision: datetime--commitсохраняетlast_used.toкакdatetime.spent_on— дата).datetime.