Fix adaptive medication timing and update README
- Fix double notifications: remove redundant check_medication_reminders() call, use adaptive path as primary with basic as fallback - Fix nag firing immediately: require nag_interval minutes after scheduled dose time before first nag - Fix missing schedules: create on-demand if midnight window was missed - Fix wrong timezone: use user_now_for() instead of request-context user_now() in calculate_adjusted_times() - Fix immutable schedules: recalculate pending schedules on wake event detection so adaptive timing actually adapts - Fix take/skip not updating schedule: API endpoints now call mark_med_taken/skipped so nags stop after logging a dose - Fix skipped doses still triggering reminders: check both taken and skipped in adaptive reminder and log queries - Update README with tasks, AI step generation, auth refresh tokens, knowledge base improvements, and current architecture Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -13,6 +13,7 @@ from psycopg2.extras import Json
|
||||
import core.auth as auth
|
||||
import core.postgres as postgres
|
||||
import core.tz as tz
|
||||
import core.adaptive_meds as adaptive_meds
|
||||
|
||||
|
||||
def _get_user_uuid(token):
|
||||
@@ -264,6 +265,11 @@ def register(app):
|
||||
"notes": data.get("notes"),
|
||||
}
|
||||
log = postgres.insert("med_logs", log_entry)
|
||||
# Update adaptive schedule status so nags stop
|
||||
try:
|
||||
adaptive_meds.mark_med_taken(user_uuid, med_id, data.get("scheduled_time"))
|
||||
except Exception:
|
||||
pass # Don't fail the take action if schedule update fails
|
||||
# Advance next_dose_date for interval meds
|
||||
if med.get("frequency") == "every_n_days" and med.get("interval_days"):
|
||||
next_date = _compute_next_dose_date(med)
|
||||
@@ -290,6 +296,11 @@ def register(app):
|
||||
"notes": data.get("reason"),
|
||||
}
|
||||
log = postgres.insert("med_logs", log_entry)
|
||||
# Update adaptive schedule status so nags stop
|
||||
try:
|
||||
adaptive_meds.mark_med_skipped(user_uuid, med_id, data.get("scheduled_time"))
|
||||
except Exception:
|
||||
pass # Don't fail the skip action if schedule update fails
|
||||
# Advance next_dose_date for interval meds
|
||||
if med.get("frequency") == "every_n_days" and med.get("interval_days"):
|
||||
next_date = _compute_next_dose_date(med)
|
||||
|
||||
Reference in New Issue
Block a user