Перейти к содержанию

План тестирования уведомлений по всем ролям

Тестовые пользователи (SMS-код везде 1111)

Роль Телефон UUID Имя
admin +79990000010 aaaaaaaa-0000-0000-0000-000000000010 Демо Администратор
admin +79773266909 fce4e9e3-5d86-441d-960b-95c721b2d1e5 Roma VV
hotelier +79990000003 Демо Отельер
tour_operator +79990000004 Демо Турагент
transfer_provider +79990000005 Демо Трансфер
restaurateur +79990000006 Демо Ресторатор
instructor +79990000007 Демо Инструктор
tourist +79990000001 850d5b6d-0ad6-53e6-97dd-ca779de164ff Алиса
tourist +79990000002 6d478b3f-da26-5e31-a8b2-95388de74f82 Борис

События которые должны генерировать уведомления

Booking lifecycle (все 5 типов: hotel/tour/transfer/restaurant/instructor)

  • ✅ Tourist создал → notify TOURIST + PROVIDER
  • ✅ Provider/Admin подтвердил → notify TOURIST
  • ✅ Tourist оплатил (ЮKassa webhook) → notify TOURIST + PROVIDER
  • ✅ Tourist отменил → notify PROVIDER
  • ✅ Provider отменил → notify TOURIST
  • ✅ Refund выполнен → notify TOURIST + PROVIDER
  • ✅ Reminder за 24h → notify TOURIST

Chats

  • ✅ Сообщение в чате → notify получателю (push если в фоне)
  • ✅ Пропущенный звонок → notify

Stories (туристский UGC)

  • ✅ Лайк на истории → notify автору
  • ✅ Комментарий к истории → notify автору
  • ✅ Подписка на пользователя → notify на кого подписались
  • ✅ Story создана → notify админу/модератору (для модерации)

Comments / Reviews

  • ✅ Отзыв на отель/тур → notify владельцу
  • ✅ Ответ на отзыв → notify автору отзыва

SOS (критично)

  • ✅ POST /sos/ → notify спасателям + админам

Платежи

  • ✅ Успешная оплата → notify TOURIST + PROVIDER
  • ✅ Неудачная оплата → notify TOURIST
  • ✅ Возврат → notify TOURIST + PROVIDER

Друзья / соц

  • ✅ Друг рядом на склоне → notify
  • ✅ Заявка в друзья → notify

Каналы доставки

Все события идут по 4 каналам (если разрешены в user_notification_channels): 1. In-apppublic.notifications → колокольчик в SPA 2. WebSocket — Redis publish → real-time без F5 3. Telegram — если у юзера привязан telegram_chat_id 4. Email — если у юзера реальный email (не @phone.arkhyz.local)

Тест-план (5 фаз)

Фаза 1 — Tourist booking E2E (есть)

infra/e2e-bookings.py — 3 типа × 5 событий = 15 нотификаций

Фаза 2 — Provider notifications (НОВОЕ)

  • Hotelier создаёт отель через UI
  • Tourist бронирует → hotelier получает «Новая бронь #1234»
  • Hotelier confirm/cancel → tourist получает
  • Скрипт: infra/e2e-provider.py

Фаза 3 — Stories + likes + comments (НОВОЕ)

  • Tourist Алиса создаёт story
  • Tourist Борис лайкает → Алиса получает
  • Борис комментирует → Алиса получает
  • Алиса отвечает на комментарий → Борис получает
  • Скрипт: infra/e2e-stories.py

Фаза 4 — Chats (НОВОЕ)

  • Алиса пишет в чат с отелем → hotelier получает
  • Hotelier отвечает → Алиса получает
  • Звонок принят/пропущен → notify

Фаза 5 — Reviews + SOS (НОВОЕ)

  • Алиса оставляет отзыв на отель → hotelier получает
  • Hotelier отвечает → Алиса получает
  • Алиса жмёт SOS → admin + спасатели получают

Реализация

Каждая фаза — отдельный py-скрипт + хук в соответствующем svc: - bookings → notify провайдера (нужен provider_id + user_id mapping) - stories → notify автора (новый файл services/stories-svc/app/notify.py) - chats → notify получателя (хук в chat-svc/app/routers/chats_native.py:messages_send) - reviews → notify автора и владельца - sos → notify админов и спасателей (хук в rtc-svc/app/routers/sos_native.py:sos_create)