Docs: sync Front#35 D9 B guest schedule + confirmed personal overlay. Fixes EventHub/EventHubSpec#15

Refs EventHub/EventHubFront#35 (57cfcf3).
This commit is contained in:
2026-07-28 13:26:15 +03:00
parent a81262b3e0
commit a7132b9b64
4 changed files with 52 additions and 5 deletions
+22 -2
View File
@@ -25,6 +25,9 @@ SoT: [`boards/calentiq-ui-board-final.png`](boards/calentiq-ui-board-final.png).
| Bookings past/expired | — | `expired` бейдж + Cancel скрыт; empty-state с CTA Discover / календари; soft list time |
| Agenda empty copy | — | personal «Нет событий»; commercial «Нет слотов» |
| More invites | пункт меню | скрыт при pending=0; badge счётчика при pending > 0 |
| D9 guest specialist schedule | — | **модель B (Front#35):** roster карточек → тап → фильтр слотов по `event.specialist_id`; «Все слоты студии»; book без specialist в body; **не** chip-filter |
| Confirmed на personal | — | Front-only overlay confirmed чужих commercial на default personal; title `событие · студия · спец`; клик → `/c/:foreignCalId/e/:eventId` |
| SpecialistsPanel density | — | mobile: имя/теги сверху, actions снизу full-width (Front#33/#35) |
| Stage | полный smoke на stage | **done** 2026-07-27: Login×3 / Calendar×3 + agenda / Discover / CONTROL commercial + Confirm·Decline / More moods |
| Домены calentiq.* | — | публичный stage: `stage.calentiq.com` / `admin.stage.calentiq.com` (канон STAGE-BROWSER.md) |
@@ -38,7 +41,9 @@ IA без sidebar / без Creator mood — совпадает с non-goals (п
**Front#31 (2026-07-27):** desktop one-row chrome (logo|nav|logout); header nickname; bookings `expired` + soft list time + empty CTA; agenda personal vs commercial empty copy; Discover cover photo/fallback; More invites badge.
**Remaining intentional:** no pixel-perfect phone chrome; Discover без photo-hero grid (cover via `image_url` when API returns it; broken URL → wash+initials); §E specialist schedule card vs panel — не pixel-perfect board mocks (follow-up).
**Front#35 (2026-07-28, SHA `57cfcf3`):** D9 модель B (guest roster → schedule filter); confirmed foreign overlay на personal; SpecialistsPanel mobile density; F6 EventActionCard past+pending → expired / no Cancel, Book скрыт на past.
**Remaining intentional:** no pixel-perfect phone chrome; Discover без photo-hero grid (cover via `image_url` when API returns it; broken URL → wash+initials); §E specialist schedule card vs panel — не pixel-perfect board mocks (follow-up). Product flow D9 B — documented; board pixel mock — Future.
### Bookings inbox + More invites (locked 2026-07-27)
@@ -57,18 +62,32 @@ IA без sidebar / без Creator mood — совпадает с non-goals (п
5. **Past-pending / `expired`:** Back#60 помечает past-pending → `expired` и исключает из
`booking-requests`; Confirm/Decline → `409`. UI: бейдж «истекла», Cancel скрыт
(Bookings + EventActionCard); defensive map past+pending → expired badge.
Front#35 F6: на past Book скрыт; past+pending на карточке → expired label.
API: `GET /v1/user/booking-requests` (Back) + существующий `PUT /v1/bookings/:id`
(`409` на expired / full).
### Guest specialist schedule + confirmed overlay (locked Front#35)
1. **D9 модель B (guest на commercial):** roster активных специалистов (карточки) →
тап → сетка только со слотами выбранного `event.specialist_id`; CTA «Все слоты
студии» сбрасывает фильтр. **Не** chip-filter на shared grid. Book body без
specialist. Owner `SpecialistsPanel` (invite/CRUD) не менять этим флоу.
2. **Confirmed на personal (Front-only):** `GET /v1/user/bookings` (confirmed) +
догрузка events/calendars → overlay на **default personal** grid; title
`event · studio · specialist`; клик → `/c/:foreignCalId/e/:eventId`. Back без
изменений.
3. **SpecialistsPanel density (mobile):** имя/теги сверху, actions снизу full-width.
### Follow-ups (вне этого fix-pass или частично)
| Тема | Статус |
|------|--------|
| Discover `image_url` в search serialization | Back отдаёт поле; upload API **нет** — только URL field / seed; Front#31: photo vs fallback media classes + onError fallback |
| Stage Popular clutter (e2e calendars) | filter notes: см. `EventHubSpec/STAGE-POPULAR-CLEANUP.md`; не трогать реальные smoke данные без фильтра по e2e-паттернам |
| §E specialist schedule card vs panel | deviation: EventActionCard + SpecialistsPanel; отдельный pixel mock — Future |
| §E specialist schedule card vs panel | deviation: EventActionCard + SpecialistsPanel; pixel mock — Future; **product D9 B** — done Front#35 |
| Desktop one-row chrome | **done** Front#31 — logo \| nav \| nickname+logout |
| D9 B + confirmed personal overlay | **done** Front#35 (`57cfcf3`) |
## Mood concept = product surface
@@ -195,6 +214,7 @@ CSS-токены и chrome на mood beyond primary hex: surfaces, gradients, ev
| 5 | Polish + stage smoke | [Front#29](https://git.sabilin.com/EventHub/EventHubFront/issues/29) |
| — | P1/P2 UX polish + expired + desktop chrome | [Front#31](https://git.sabilin.com/EventHub/EventHubFront/issues/31) |
| — | Past-pending → `expired` | [Back#60](https://git.sabilin.com/EventHub/EventHubBack/issues/60) |
| — | P2: D9 B + confirmed personal + density/F6 | [Front#35](https://git.sabilin.com/EventHub/EventHubFront/issues/35) |
Эпик: [Spec#10](https://git.sabilin.com/EventHub/EventHubSpec/issues/10).