P1: API приглашений специалистов (specialist_invite) #55

Closed
opened 2026-07-22 18:28:40 +03:00 by cursor-ai · 4 comments
Owner

Проблема

Сейчас POST /v1/calendars/:id/specialists требует известный user_id. Нужен flow приглашения специалиста (in-app + email) по утверждённому Spec.

Влияние

Владелец не может нормально добавить специалиста в проде.

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

Реализация контракта specialist_invite из Spec:

  • создание invite по email / user_id;
  • accept/decline invitee;
  • notification + email;
  • lookup пользователей для typeahead;
  • после accept — calendar_specialist.

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

  • Миграция / модель invite
  • API owner + invitee по Spec
  • Lookup q (email/nickname), только verified/active, rate-limit
  • In-app notification + email на invite
  • Eunit/CT на happy-path и decline/expire
  • UI-путь без сырого id (прямой POST specialists — не для клиентского UI)

Зависимости

Сначала Spec-контракт. Front — после Back на stage.

Приоритет

P1

## Проблема Сейчас `POST /v1/calendars/:id/specialists` требует известный `user_id`. Нужен flow приглашения специалиста (in-app + email) по утверждённому Spec. ## Влияние Владелец не может нормально добавить специалиста в проде. ## Ожидаемый результат Реализация контракта `specialist_invite` из Spec: - создание invite по email / user_id; - accept/decline invitee; - notification + email; - lookup пользователей для typeahead; - после accept — `calendar_specialist`. ## Критерии приёмки - [ ] Миграция / модель invite - [ ] API owner + invitee по Spec - [ ] Lookup `q` (email/nickname), только verified/active, rate-limit - [ ] In-app notification + email на invite - [ ] Eunit/CT на happy-path и decline/expire - [ ] UI-путь без сырого id (прямой POST specialists — не для клиентского UI) ## Зависимости Сначала Spec-контракт. Front — после Back на stage. ## Приоритет P1
cursor-ai added the Task label 2026-07-22 18:28:40 +03:00
cursor-ai self-assigned this 2026-07-22 18:28:40 +03:00
Author
Owner

Контракт: EventHub/EventHubSpec#7. UI: EventHub/EventHubFront#16. Ждём Spec, затем реализация.

Контракт: EventHub/EventHubSpec#7. UI: EventHub/EventHubFront#16. Ждём Spec, затем реализация.
Author
Owner

Spec готов: EventHubSpec#7 / commit 6a9daff. Можно брать в работу API specialist_invite + lookup + notification/email.

Spec готов: EventHubSpec#7 / commit `6a9daff`. Можно брать в работу API specialist_invite + lookup + notification/email.
Author
Owner

Беру в работу. Реализую Spec#7: specialist_invite + lookup + notification/email.

Беру в работу. Реализую Spec#7: specialist_invite + lookup + notification/email.
Author
Owner

Смержено в master (571f047).

Реализовано по Spec#7:

  • specialist_invite + миграция
  • GET /v1/users/lookup
  • owner invites / cancel; invitee accept/decline / token accept
  • notification (persist + WS) + email stub

Тесты: make test-all979 eunit + 40 CT.

Дальше: EventHubFront#16 (UI).

Смержено в `master` (`571f047`). Реализовано по Spec#7: - `specialist_invite` + миграция - `GET /v1/users/lookup` - owner invites / cancel; invitee accept/decline / token accept - notification (persist + WS) + email stub Тесты: `make test-all` — **979 eunit + 40 CT**. Дальше: EventHubFront#16 (UI).
Sign in to join this conversation.