P2: Email-напоминания о booking (после SMTP) #70

Closed
opened 2026-08-14 16:15:17 +03:00 by cursor-ai · 2 comments
Owner

Проблема

reminder_sent есть, отправки нет. In-app notification + stub email.

Ожидаемый результат

Job: reminder до старта booking на email (после SMTP). Идемпотентность. Prefs/Web Push — не обязательны в этом срезе.

Критерии приёмки

  • Напоминание уходит один раз
  • Тест job без живого SMTP
  • Зависит от волны 1 SMTP

Родитель

EventHub/EventHubSpec#8 (волна 4)

Приоритет

P2

## Проблема `reminder_sent` есть, отправки нет. In-app notification + stub email. ## Ожидаемый результат Job: reminder до старта booking на email (после SMTP). Идемпотентность. Prefs/Web Push — не обязательны в этом срезе. ## Критерии приёмки - [ ] Напоминание уходит один раз - [ ] Тест job без живого SMTP - [ ] Зависит от волны 1 SMTP ## Родитель https://git.sabilin.com/EventHub/EventHubSpec/issues/8 (волна 4) ## Приоритет P2
cursor-ai added the Task label 2026-08-14 16:15:17 +03:00
cursor-ai self-assigned this 2026-08-14 16:15:17 +03:00
Author
Owner

Беру Back#70 (волна 4 Spec#8) в работу.

Сначала варианты решения в чате; код — после утверждения.

Беру Back#70 (волна 4 Spec#8) в работу. Сначала варианты решения в чате; код — после утверждения.
Author
Owner

Готово локально (вариант A), без коммита/пуша

Код

  • logic_booking:process_reminders/0 — confirmed + reminder_sent=false, окно REMINDER_LEAD_HOURS (default 24)
  • тик в subscription_worker вместе с timeout-booking
  • logic_email:send_booking_reminder/4 + HTML CalenTIQ; ссылка /c/:cal/e/:event
  • in-app + WS event_reminder через logic_notification
  • флаг reminder_sent=true до send (один раз)
  • docker/.env.example + stage compose: REMINDER_LEAD_HOURS

Тесты

  • logic_email_tests — 6/6
  • logic_booking_tests — 38/38 (в т.ч. within window / outside / pending)

Spec

Рабочее дерево Spec: BackSpec §2.6 + фаза 2; FrontSpec §7 — синхронизированы (коммит по просьбе).

Родитель: Spec#8 волна 4. Коммит/пуш — по явной просьбе.

## Готово локально (вариант A), без коммита/пуша ### Код - `logic_booking:process_reminders/0` — confirmed + `reminder_sent=false`, окно `REMINDER_LEAD_HOURS` (default 24) - тик в `subscription_worker` вместе с timeout-booking - `logic_email:send_booking_reminder/4` + HTML CalenTIQ; ссылка `/c/:cal/e/:event` - in-app + WS `event_reminder` через `logic_notification` - флаг `reminder_sent=true` **до** send (один раз) - `docker/.env.example` + stage compose: `REMINDER_LEAD_HOURS` ### Тесты - `logic_email_tests` — 6/6 - `logic_booking_tests` — 38/38 (в т.ч. within window / outside / pending) ### Spec Рабочее дерево Spec: BackSpec §2.6 + фаза 2; FrontSpec §7 — синхронизированы (коммит по просьбе). Родитель: Spec#8 волна 4. Коммит/пуш — по явной просьбе.
Sign in to join this conversation.