fix: preserve deadline calendar days (Closes #719)
CI / lint (pull_request) Successful in 1m23s
CI / build-release (pull_request) Successful in 4s
CI / release-candidate (pull_request) Has been skipped

This commit is contained in:
timmy committed 2026-08-13 07:56:26 +00:00
1 parent 9ec88179c3
commit dce9ae04c9
7 files changed
+135 -26

No files matched your search

+9 -8
View File
@@ -306,20 +306,17 @@ async def _dispatch_deadline_reminders_unlocked(
snapshot = await assigned()
if snapshot.get("complete") is False:
return 0
due_cutoff = current + timedelta(hours=48)
due_count = 0
due_days = []
for item in snapshot.get("items", []):
if not isinstance(item, dict) or not item.get("due_date"):
continue
raw_due = str(item["due_date"])
try:
due = datetime.fromisoformat(str(item["due_date"]).replace("Z", "+00:00"))
due_day = datetime.strptime(raw_due[:10], "%Y-%m-%d").date()
except ValueError:
continue
if due.tzinfo is None:
due = due.replace(tzinfo=timezone.utc)
if due <= due_cutoff:
due_count += 1
if not due_count:
due_days.append(due_day)
if not due_days:
return 0
semaphore = asyncio.Semaphore(max(1, max_concurrency))
@@ -335,6 +332,10 @@ async def _dispatch_deadline_reminders_unlocked(
or device.delivered_local_day == local_day
):
return 0
local_cutoff = local_now.date() + timedelta(days=2)
due_count = sum(due_day <= local_cutoff for due_day in due_days)
if not due_count:
return 0
if session_active is not None and not await session_active(device.session_id):
await asyncio.to_thread(store.delete_session, device.session_id)
return 0