diff --git a/EventHubBackSpec.md b/EventHubBackSpec.md index 7773685..eee4451 100644 --- a/EventHubBackSpec.md +++ b/EventHubBackSpec.md @@ -252,7 +252,10 @@ Legacy: прямой `POST /v1/calendars/:id/specialists` **не использ cancel/decline/expire + email/in-app `waitlist_promoted`. UI join — Front#70. - Серверный logout / revoke session; загрузка файлов avatar/cover — **сделано** (Back#71); вложения к событию — позже. -- Email-reminder booking — **сделано** (Back#70, §2.6); Web Push / prefs — позже. +- Email-reminder booking — **сделано** (Back#70, §2.6); Web Push + prefs — + **сделано** (Back#75): `GET/PUT /v1/notifications/prefs`, + `GET /v1/push/vapid-public-key`, `POST/DELETE /v1/push/subscriptions`; + UI — Front#71. - `calendar_share` (`read` | `write` | `admin`): низкий приоритет; не путать с follow, specialist_invite и платной subscription. User HTTP API и UI — до отдельной задачи (таблица в схеме есть, см. §2.1.3). @@ -387,7 +390,13 @@ Legacy: прямой `POST /v1/calendars/:id/specialists` **не использ клиенту записи и in-app `event_reminder`, если `status=confirmed`, `reminder_sent=false`, событие `active` и старт в окне `REMINDER_LEAD_HOURS` (default 24). Флаг ставится до отправки (один раз). - Шаблон CalenTIQ; ссылка `/c/:calendarId/e/:eventId`. Без prefs / Web Push. + Шаблон CalenTIQ; ссылка `/c/:calendarId/e/:eventId`. + Prefs: `user.preferences.notify_email` / `notify_push` (default true); + `GET/PUT /v1/notifications/prefs` → `{ email, push }`. + Web Push (Back#75): таблица `push_subscription`; VAPID env + `VAPID_PUBLIC_KEY` / `VAPID_PRIVATE_KEY` / `VAPID_SUBJECT`; send на reminder + и waitlist promote (если `notify_push`); 404/410 удаляет subscription. + Verify / invite / reset password — email всегда (не через prefs). ### 2.7. Модерация и безопасность - Пользователи могут отправлять жалобы (`report`) на календари, события, отзывы. diff --git a/EventHubFrontSpec.md b/EventHubFrontSpec.md index d19d31d..d691fa7 100644 --- a/EventHubFrontSpec.md +++ b/EventHubFrontSpec.md @@ -374,8 +374,8 @@ legal stubs; позиция по подписке **владельца**; DNS/SP - серверный logout / revoke session (`POST /v1/logout` + `{ refresh_token }`; клиент зовёт до clear storage) - загрузка файлов: avatar `POST /v1/user/me/avatar`, cover `POST /v1/calendars/:id/cover` (Back#71); UI — Front#69; вложения — позже -- полноценный push / reminders (email-reminder booking: Back#70 / - `process_reminders`; Web Push / prefs — позже) +- полноценный push / reminders (email-reminder: Back#70; Web Push + prefs: + Back#75 / Front#71 — тумблеры в профиле, SW `/sw-push.js`) - waitlist: API Back#72; включение — чекбокс «Лист ожидания» (`settings.waitlist_enabled`) в настройках commercial; join/leave на карточке события при полном слоте — Front#70