Направление работ: Widget Код раздела: 1.4 Раздел: Календарь > Дополнительные сценарии отображения часов Статус: черновик Ответственный: Панкова Л.А. Версия: 0.1 Обновлено: 11.08.26
1. Назначение
Раздел описывает дополнительные правила представления времени в календаре виджета: состояния часовых ячеек, отображение цены и акций по часам, строгие интервалы бронирования, слияние выбранных часов, рабочие часы и минимальную длительность бронирования.
Раздел дополняет варианты отображения календаря 1.1–1.3 в части представления часов и не описывает сам выбор варианта календаря.
Состав рабочих часов, правил бронирования и цен определяется связанными разделами Back: 2.2 Площадки партнеров, Back: 2.4.1 Условия создания и Back: 2.6 Цены.
2. Ключевые понятия
Часовая ячейка — элемент сетки календаря, соответствующий одному часу, с ценой и состоянием.
Строгий интервал — фиксированный интервал бронирования, который бронируется целиком; в сетке показывается слитой ячейкой.
Рабочие часы — интервал доступного времени площадки по дням недели.
Минимальная длительность бронирования — минимальное число часов, необходимое для бронирования.
Акционный час — час со скидочной ценой, выделяемый в сетке.
3. Scope
Входит
S1: Состояния и представление часовых ячеек
S2: Строгие интервалы и слияние выбранных часов
S3: Рабочие часы и минимальная длительность
S4: Ручной выбор времени и режим «Весь день»
Не входит
- Widget 1.1 Отображение по партнерской зоне — вариант отображения календаря.
- Widget 1.2 Отображение по объекту — вариант отображения календаря.
- Widget 1.3 Отображение по площадке — вариант отображения календаря.
- Back: 2.2 Площадки партнеров — рабочие часы площадки.
- Back: 2.4.1 Условия создания — правила бронирования и минимальная длительность.
- Back: 2.6 Цены — цены и акции по слотам.
4. BR
Указаны в пункте 4 разделов Back: 2.2 Площадки партнеров, Back: 2.4.1 Условия создания и Back: 2.6 Цены.
5. Функциональные требования (UC + FR)
| ID | Сценарий | Функциональное требование | BR | Вес | Статус |
|---|---|---|---|---|---|
| S1: FR1.4-1 | Клиент просматривает часы в сетке | Интерфейс показывает состояния часовых ячеек: доступна с ценой, выбрана, занята или перерыв (серая некликабельная), нерабочие часы (недоступна с бордером). | 1 | Реализовано | |
| S1: FR1.4-2 | Клиент видит часы горящего предложения | Интерфейс помечает часы горящего предложения иконкой в ячейке; по наведению или нажатию показывается тултип: название предложения, размер скидки (в процентах или рублях), цена до скидки и условие применения — скидка действует только при бронировании интервала предложения целиком, частичное пересечение ее не активирует. Отдельный цвет цены не используется. Правила предложения — Back: 2.7.2 Горящие предложения. | 2 | Не реализовано — иконки и тултипа нет, части данных в ячейке недостает, см. OQ1.4-4 | |
| S2: FR1.4-3 | Клиент видит строгий интервал | Интерфейс показывает строгий интервал бронирования слитой ячейкой с диапазоном времени и суммарной ценой; такой интервал выбирается целиком. | 1 | Реализовано | |
| S2: FR1.4-4 | Клиент выбирает несколько часов | Интерфейс сливает несколько выбранных подряд часов в один блок с диапазоном времени и суммарной стоимостью. | 1 | Реализовано | |
| S3: FR1.4-5 | Клиент выбирает время в рамках рабочих часов | Интерфейс ограничивает доступные для выбора часы рабочими часами площадки по дням недели; часы вне рабочего окна показываются недоступными. | 1 | Реализовано | |
| S3: FR1.4-6 | Клиент выбирает интервал меньше минимального | Интерфейс учитывает минимальную длительность бронирования по дню: короче минимальной длительности выбор не завершается (автоматический добор соседних часов описан в 1.1). | 1 | Не проверено — требуется прогон QA, см. OQ1.4-3 | |
| S4: FR1.4-7 | Клиент задает время вручную | Интерфейс позволяет выбрать время вручную в пределах рабочих часов и поддерживает режим «Весь день», который подставляет рабочее окно площадки или полный день. | 2 | Частично реализовано — требуется уточнение QA, что именно не работает: ручной ввод времени или режим «Весь день», см. OQ1.4-3 |
6. Открытые вопросы
| ID | Источник | Вопрос | Кому | Статус |
|---|---|---|---|---|
| OQ1.4-1 | Код | Состояния «занята» и «перерыв» показываются одинаково (общий серый вид), без визуального различия. Подтвердить, нужно ли различать перерыв и занятость в сетке. \ features/booking-grid/types/booking-grid.types.ts:9 Решение: различать не требуется — для клиента оба случая означают одно и то же: час недоступен для брони. Состояние ячейки остаётся общим (occupied). Доработок не требуется. | Бизнес | Закрыт |
| OQ1.4-3 | QA | Два требования раздела нуждаются в уточнении от QA: FR1.4-6 (минимальная длительность бронирования по дню) не проверялось — статус пуст; FR1.4-7 (ручной выбор времени и режим «Весь день») помечен «Частично реализовано» без пояснения, что именно расходится. Требуется прогон и детализация расхождений. | Разработка | Закрыт |
| OQ1.4-2 | Решение 11.08.26 | Оформление акционных часов уточнено: вместо выделения цены цветом — иконка в ячейке с тултипом о скидке (FR1.4-2). Решение: акционные часы — это горящие предложения (Back: 2.7.2). Состав тултипа определен по правилам предложения: название, размер скидки в процентах или рублях, цена до скидки и условие применения. Условие обязательно, потому что скидка срабатывает только при полном совпадении начала и окончания заказа с интервалом предложения — без этого пояснения клиент выберет часть интервала, не получит скидку и не поймет причину. Требование зафиксировано в FR1.4-2; вид иконки и верстка тултипа — за дизайном. | Бизнес | Закрыт |
| OQ1.4-4 | Код / контракт | Что нашли: в ячейке сетки виджета есть только признак акции и цена до скидки (isAction, priceBefore), но нет названия горящего предложения, размера скидки и его временного интервала — то есть трех из четырех частей тултипа (FR1.4-2). Требуется уточнить у бэкенда, отдает ли подбор слотов эти данные и под какими полями; если нет — дополнить контракт. \ features/booking-grid/types/booking-grid.types.ts:14-30 | Разработка (бэкенд) | Open |