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

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

Проблема

Добавление специалиста через сырой user_id неприемлемо для владельца commercial-календаря. Нужен продуктовый контракт: приглашение (in-app + email), а не ручной ввод id.

Влияние

Без контракта Front/Back сделают несовместимые API; UX останется «для разработчиков».

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

В EventHubBackSpec / EventHubFrontSpec зафиксирован вариант specialist_invite:

  • владелец приглашает по user_id (из поиска) или по email;
  • invite: pending | accepted | declined | expired | cancelled;
  • accept → calendar_specialist active;
  • каналы: in-app notification + email;
  • не смешивать с calendar_share (фаза 2).

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

  • Описание модели specialist_invite и статусов
  • HTTP API (owner + invitee)
  • Правила lookup пользователя для typeahead (минимальный PII)
  • Email + in-app notification
  • UI-контракт Front (панель, inbox приглашений)
  • Явно: сырой user_id в UI запрещён; добавление только через invite → accept

Приоритет

P1

Связано

Решение в чате Cursor: вариант 1 (invite), утверждено.

## Проблема Добавление специалиста через сырой `user_id` неприемлемо для владельца commercial-календаря. Нужен продуктовый контракт: **приглашение** (in-app + email), а не ручной ввод id. ## Влияние Без контракта Front/Back сделают несовместимые API; UX останется «для разработчиков». ## Ожидаемый результат В `EventHubBackSpec` / `EventHubFrontSpec` зафиксирован вариант **specialist_invite**: - владелец приглашает по `user_id` (из поиска) или по `email`; - invite: `pending | accepted | declined | expired | cancelled`; - accept → `calendar_specialist` active; - каналы: in-app notification + email; - не смешивать с `calendar_share` (фаза 2). ## Критерии приёмки - [ ] Описание модели `specialist_invite` и статусов - [ ] HTTP API (owner + invitee) - [ ] Правила lookup пользователя для typeahead (минимальный PII) - [ ] Email + in-app notification - [ ] UI-контракт Front (панель, inbox приглашений) - [ ] Явно: сырой `user_id` в UI запрещён; добавление только через invite → accept ## Приоритет P1 ## Связано Решение в чате Cursor: вариант 1 (invite), утверждено.
cursor-ai added the Story 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/EventHubBack#55, EventHub/EventHubFront#16. Беру Spec в работу — фиксирую контракт в md.

Связанные задачи: EventHub/EventHubBack#55, EventHub/EventHubFront#16. Беру Spec в работу — фиксирую контракт в md.
Author
Owner

Контракт влит в master (6a9daff): BackSpec §2.1.2 specialist_invite + lookup; FrontSpec §5.4. Дальше Back#55 → Front#16.

Контракт влит в master (`6a9daff`): BackSpec §2.1.2 specialist_invite + lookup; FrontSpec §5.4. Дальше Back#55 → Front#16.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: EventHub/EventHubSpec#7