--- компонент: Чешуйка «Отпуска и больничные» статус: черновик v1 обновлено: 2026-09-11 имя во вселенной: Штиль (предложено) — пауза, когда корабль стоит поверхность: карман (главный дом) · артефакт (календарь отсутствий отдела) связано: [[chesuyka]] · [[cheshuyka-tasks]] — красные даты от дедлайнов · [[cheshuyka-ciferblat]] — календарь --- # Штиль · Отпуска и больничные Отпуск без неловких разговоров: в календаре видно, кто когда отдыхает, красные и зелёные даты считаются сами, больничный отмечается одной кнопкой, а «почему нельзя в августе» — честный ответ по правилам, а не отказ лично от начальника. ## Имя: Штиль В выпуске №4 (кадр 6 «Календарь отпусков») Алина в **капитанской фуражке** — морская метафора уже там. Штиль — когда корабль стоит, и это нормально. Одно слово, без бюрократии. Запасные: **Отгул** (узко), **Гавань** (красиво, но про место, а не про время). ## Что реально есть | | | |---|---| | График отсутствий Б24 за 2026 | **0 записей** | | `timeman` (рабочее время) | нет скоупа у вебхука | | Канон #4, кадр 6 | «в красные даты нельзя (коллега отдела уже в отпуске, идёт сдача проекта), в зелёные — пожалуйста»; можно отметить больничный; попросить отпуск; правила прозрачны | **Вывод:** отпуска в Б24 **не ведутся**. Штиль — источник истины сам, а в график отсутствий Б24 пишет по настройке, для тех, кому нужно видеть это там. --- ## Модель | Сущность | Поля | |---|---| | `absence` | человек · тип: отпуск / больничный / отгул / удалёнка · с — по · статус: запрошен / одобрен / отклонён / отменён · комментарий (не причина болезни) | | `balance` | остаток дней по типу на год, начисления | | `rule` | правило из SSI: минимум людей в отделе, лимит дней подряд, за сколько дней просить, чёрные периоды | | `blackout` | красный период: откуда пришёл (дедлайн эпика, сделка на установке, чужой отпуск в отделе, праздник) | | `verdict` | ответ на запрос: можно / нельзя + **почему**, по каким правилам | ## Красные и зелёные даты — считаются, а не назначаются | Сигнал | Откуда | Красный, если | |---|---|---| | Чужой отпуск в отделе | Штиль | в отделе остаётся меньше минимума | | Сдача проекта | **Задачи**: дедлайн эпика, стадия сделки «Установка» из CRM | в окне ± N дней | | Спринт | Вече: обзор / планирование спринта | по настройке | | Праздники | производственный календарь | — | | Лимит | баланс дней | превышение | Ответ на запрос всегда объясняет себя: «Август — красный: 12–20 сдача проекта ResFood, 5–15 в отпуске Тарчинский. Октябрь свободен». Никто не отказывает лично, обид нет. ## Сценарии - **Попросить отпуск** — выбрал даты в кармане → мгновенный вердикт по правилам → если зелёный, запрос уходит руководителю одним касанием; если красный — видно, почему, и ближайшее зелёное окно. - **Больничный** — задним числом, без одобрения; руководитель и отдел получают уведомление; задачи с дедлайном в эти дни подсвечиваются в Задачах как «исполнитель на больничном». - **Одобрение** — руководитель видит запрос с вердиктом правил и отдел на эти даты. - **Отмена** — своё можно всегда, одобренное — с уведомлением. ## Что уходит соседям - в **Циферблат** — слой отсутствий; - в **Задачи** — флаг «исполнитель отсутствует» на задачах с дедлайном в период; - в **Вече** — участник недоступен для слотов планировщика; - в **Б24** — график отсутствий, по настройке; - в **Казну** — дни для расчёта, если оплата зависит от отсутствий. --- ## Экраны - **Карман (главный дом):** «Мои отсутствия» — баланс, запросы, кнопка «Попросить отпуск» и «Больничный сегодня». Календарь месяца с красными и зелёными датами. - **Артефакт в папке отдела:** кто когда отсутствует, минимум людей по дням, конфликты. - **Док у чата:** нет — отсутствия к клиентскому чату не относятся. Исключение: в чате проекта показать «аккаунт в отпуске до 20-го». ## Компоненты — React + shadcn/ui | Компонент | shadcn | Заметка | |---|---|---| | `AbsenceCalendar` | `Calendar` с модификаторами дней | красный / зелёный / мой / чужой | | `Verdict` | `Alert` вариант по ответу | обязательно с причинами списком | | `RequestSheet` | `Sheet` + `Calendar` (диапазон) + `Textarea` | карман | | `BalanceTile` | `Card` + `Progress` | | | `TeamGrid` | `Table` + `Tooltip` | артефакт | | `SickToday` | `Button` крупная + `AlertDialog` | одно касание | ## MCP-инструменты `my_absences` · `team_absences` · `check_dates` (вердикт с причинами) · `request_absence` · `approve_absence` / `decline_absence` · `report_sick` · `cancel_absence` · `free_windows` (ближайшие зелёные окна) · `balance` · `request_feature`. Агент может **проверить** даты и **подать** запрос от имени человека; одобрить — только руководитель-человек. ## SSI | Группа | Поля | |---|---| | Отделы | состав, минимум людей на смене | | Правила | лимит дней подряд, за сколько дней просить, чёрные периоды | | Баланс | дней в году по типу, перенос | | Источники красного | учитывать ли дедлайны эпиков, стадии сделок, спринты | | Экспорт | писать ли в график отсутствий Б24 | | Видимость | отдел видит даты; причины — только руководитель | ## Права - Отдел видит **даты и тип**, не комментарии. Причина болезни **не хранится вообще** — не нужна. - Одобряет руководитель по SSI, не по роли Кобры. - Скоупы Кобры: `chats:write` только для уведомления в чат проекта. ## Чек-лист - [ ] Штиль — источник истины; Б24 — экспорт по настройке - [ ] красные даты считаются из Задач, CRM, Вече и чужих отпусков - [ ] вердикт всегда с причинами и ближайшим зелёным окном - [ ] больничный — без одобрения, задним числом, с уведомлением - [ ] причина болезни не хранится - [ ] отсутствие видно в Задачах и Циферблате ## Где обычно ломается 1. **Отказ без причины** — «нельзя, и всё»; ровно то, от чего Штиль должен избавить. 2. **Красные даты руками** — их забывают обновлять; они должны считаться. 3. **Больничный через одобрение** — человек болеет, а не ждёт согласования. 4. **Причина болезни в базе** — персональные данные, которые никому не нужны. 5. **Отсутствие не видно в Задачах** — дедлайн на больничном, и никто не знает. ## Источники - Канон: выпуск №4, кадр 6 «Календарь отпусков» - Разведка Б24 11.09.2026: график отсутствий пуст, `timeman` без скоупа - [Задачи](manifest-cheshuyka-tasks.md) · [Циферблат](manifest-cheshuyka-ciferblat.md) · [Казна](manifest-cheshuyka-kazna.md) --- _Источник: `cobra-components/cheshuyka-shtil.md` в репозитории audio-talks. Эта копия обновляется скриптом `sync-components.mjs` — правки вносить в источник, не здесь._