Rotation check schedule (Feature 20)
CI / ci (push) Successful in 8m10s
CI / ci (pull_request) Successful in 7m22s

Register rotation_check: daily at review_time, claimed as
rotation_check:YYYY-MM-DD, it calls plan.MarkTried for yesterday.
MarkTried now emits rotation_review:{dinnerId}:{planDate} ("How was
{dinner}? Keep it in rotation?", URL /) for each Rotation check it
opens, in the same transaction. Nothing promotes a dinner to Regular.

Task: 58095ae5-ed4b-4494-b8f0-206c4c0a3f1a

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-10 16:59:20 -04:00
co-authored by Claude Opus 5.5
parent 54a55bf5c3
commit fdd694d1ef
7 changed files with 286 additions and 30 deletions
+1 -1
View File
@@ -308,7 +308,7 @@ func TestSendThreadsByWeek(t *testing.T) {
ListReady(week, 19, 7),
DayOfReminder(mustDate(t, "2026-10-18"), "01J9DINNER", "Tacos"),
NewSuggestions("01J9BATCH", week, []string{"Pho"}),
RotationReview("01J9DINNER", "Pho", week),
RotationReview("01J9DINNER", "Pho", mustDate(t, "2026-10-14")),
}
for _, ev := range events {
if err := svc.Send(ctx, notify.Message{ID: "n1", EventKey: ev.Key, Channel: notify.ChannelChat, Payload: payloadOf(ev), Attempt: 1}); err != nil {