Add accepted-routine timestamps to the store (Vikunja #366)

Data layer only. Migration #8 adds accepted_ts and last_fired_ts to
proposed_routines, plus ListAcceptedRoutines and MarkRoutineFired so the
tick loop can own the schedule. Accepting no longer links a reminder id.
Look at the TODO(vikunja#366) in cmd/mavend/tick.go for the next commit.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CGeSZxh1DCtRxmFVSYVGvJ
This commit is contained in:
kami
2026-07-31 02:41:49 +04:00
parent abe9b28719
commit 54dc43516b
5 changed files with 124 additions and 22 deletions
+4
View File
@@ -186,6 +186,10 @@ func (t *tickLoop) tick(ctx context.Context, now time.Time) {
// LLM-phrased — so a routine can't hallucinate. severity comes from config.
t.fireRoutines(ctx, now, state)
// TODO(vikunja#366): fire accepted routines here — read
// store.ListAcceptedRoutines, pick the ones whose interval has passed, nudge
// them through the gate, then MarkRoutineFired.
// morning routines: daily checklists (medicine/water/pets/...), nagged at
// most once per day per routine, and only for items still unevidenced at
// nudge time. See internal/morning for the "why not four timers" rationale.
+2 -1
View File
@@ -1429,7 +1429,8 @@ func (h *reactiveHandler) resolveConfirm(ctx context.Context, text string) (stri
log.Printf("voice: create routine reminder: %v", err)
return "не получилось поставить напоминание.", true
}
if err := h.dataStore.AcceptProposedRoutine(ctx, pr.routineID, remID); err != nil {
_ = remID // TODO(vikunja#366): stop creating a reminder here; the tick loop fires accepted routines.
if err := h.dataStore.AcceptProposedRoutine(ctx, pr.routineID, h.now()); err != nil {
log.Printf("voice: accept proposed routine: %v", err)
}
return "буду напоминать.", true