docs(spec): calendar_share co-editor/deputy and Time Arc alignment.

Back §2.1.3 API/ACL; Front §3.3 share busy/ghost. Refs EventHub/EventHubBack#73
This commit is contained in:
2026-08-15 23:20:39 +03:00
parent 1182568c9d
commit 4dd741ba48
7 changed files with 342 additions and 161 deletions
+9 -3
View File
@@ -151,9 +151,9 @@ CONTROL→bookings. Контент: free gaps / события сегодня /
### 3.3. Time Arc (живая сетка, Front#50)
На commercial week/day в режиме Студия клиент считает предложенный час без LLM и без Back: свободные слоты студии ∩ занятость пользователя (personal + confirmed bookings) × mood (FLOW — воздух и середина дня, MOMENTUM — ближайший, CONTROL — доля свободных мест). Одна ячейка — `data-time-arc`; коллизии — `data-collided`. Тап — обычный Book.
На commercial week/day в режиме Студия клиент считает предложенный час без LLM и без Back: свободные слоты студии ∩ занятость пользователя (personal + confirmed bookings + **mirror** shared-personal) × mood (FLOW — воздух и середина дня, MOMENTUM — ближайший, CONTROL — доля свободных мест). Одна ячейка — `data-time-arc`; коллизии — `data-collided`. Тап — обычный Book.
Владелец: черновики слотов из прошлой ISO-недели в дырах текущей; «Создать неделю» —
Владелец **или** share `write|admin` (заместитель): черновики слотов из прошлой ISO-недели в дырах текущей; «Создать неделю» —
preview, затем существующий POST events. После создания черновик снимается сразу
(без F5), в том числе если время в форме сдвинули (прошлый час → +1 день / правка start).
Фраза с часом уже в прошлом («11» в 14:00) ставит черновик на следующий день, тот же час.
@@ -169,6 +169,11 @@ preview, затем существующий POST events. После созда
**v4 (Front#53):** pending occupancy тянет demand-черновики на тот же час в свободные дни текущей ISO-недели (`data-time-arc-demand`). Long-press пустого часа week/day у владельца commercial — локальный разбор фразы → phrase-черновик (`data-time-arc-phrase`); клик и long-press месяца по-прежнему открывают create. Специалист на чужой студии: дуга на своём будущем pending-слоте. Без LLM / AiRouter.
**Share / заместитель (Back#73, согласование Front#49):** `GET /v1/calendars` включает shared;
busy Time Arc += события personal с `mirror_to_default`; ghost/demand/phrase у share
`write|admin`; Following не смешивать с share. Confirmed foreign bookings overlay на
default personal — только `role=owner` ids в ownSet.
## 4. Маршруты
Публичные:
@@ -379,7 +384,8 @@ legal stubs; позиция по подписке **владельца**; DNS/SP
- waitlist: API Back#72; включение — чекбокс «Лист ожидания»
(`settings.waitlist_enabled`) в настройках commercial; join/leave на
карточке события при полном слоте — Front#70
- шаринг календаря с правами (`calendar_share`) — низкий приоритет, не путать со specialist_invite
- шаринг календаря с правами (`calendar_share`) — Back#73 API + Front list/invites/mirror;
не путать со specialist_invite / Following
- явный `client_type=mobile` — хвост (фаза 3 бэка / нативный клиент)
**Вне горизонта (не фаза 2):** оплата услуги клиентом (B2C).