add retroactive check for yesterday's missed habits on /today

Users often only realize a habit was missed the next day; a same-day-only
check made it impossible to record it after the fact.
This commit is contained in:
2026-07-17 20:15:38 +09:00
parent cee589bb3e
commit d0dd530e26
6 changed files with 111 additions and 0 deletions
+27
View File
@@ -123,6 +123,33 @@ def test_get_today_items_excludes_habits_not_scheduled_today(db_session, test_us
assert quit_items == []
# ---- get_yesterday_missed_items ----
def test_get_yesterday_missed_items_includes_unchecked_scheduled_habit(db_session, test_user):
habit = _make_habit(db_session, test_user.id, name="어제 놓친 습관")
missed = log_service.get_yesterday_missed_items(db_session, test_user.id)
assert [item.habit_id for item in missed] == [habit.id]
def test_get_yesterday_missed_items_excludes_already_checked(db_session, test_user):
habit = _make_habit(db_session, test_user.id)
_check(db_session, habit.id, date.today() - timedelta(days=1))
missed = log_service.get_yesterday_missed_items(db_session, test_user.id)
assert missed == []
def test_get_yesterday_missed_items_excludes_habits_not_scheduled_yesterday(db_session, test_user):
yesterday = date.today() - timedelta(days=1)
other_day_mask = 1 << ((yesterday.weekday() + 1) % 7) # 어제가 아닌 요일 하나만 선택
_make_habit(db_session, test_user.id, weekdays_mask=other_day_mask)
missed = log_service.get_yesterday_missed_items(db_session, test_user.id)
assert missed == []
# ---- get_habit_stats: completion_rate ----