﻿---
title: Передача дежурства
description: "Доска на Laravel + Filament: обязательная сводка при смене дежурного, открытые инциденты с владельцами, риски и незавершённые действия."
---

## Что это за сервис

Доска передачи дежурства для инженеров на ротации, лидов дежурства и руководителей. При каждой смене она фиксирует, что передаёт уходящий дежурный: открытые инциденты, начатые действия, известные риски и следующий шаг по каждому пункту.

Без неё уходящий дежурный пишет заметку в чат, которую следующая смена не читает. На каждой пересменке активные инциденты теряют 15–30 минут реакции. Три человека думают, что P1 занимается кто-то другой. Руководитель, согласующий деплой, не знает, какие сервисы сейчас в состоянии инцидента, а контекст для разбора разбросан по четырём инструментам.

## Что он делает

- **Фиксирует каждую передачу смены.** Запись передачи содержит открытые инциденты, незавершённые действия, риски и следующие шаги, с автором и принимающим.
- **Показывает принимающему полную картину.** Новый дежурный видит, что активно, что уже пробовали и что требует продолжения, не перечитывая чат.
- **Требует единственного владельца.** Каждый открытый инцидент выше P3 имеет одного названного ответственного к моменту закрытия передачи.
- **Поднимает зависшие дела.** Инциденты, открытые больше двух суток без обновлений, стоят первыми в сводке передачи.
- **Показывает состояние перед деплоем.** Руководитель видит, какие сервисы в инциденте, прежде чем согласовать выкатку.

## Нюансы и особенности

- **Пейджинг остаётся на месте.** PagerDuty или Opsgenie ведут расписание и будят людей; доска их не заменяет. Расписание ротации подтягивается из них по API, а если его ведут вручную — из таблицы или CSV. Если у команды одна ротация и мало инцидентов, хватит шаблона передачи в пейджинге или в трекере.
- **Сводка обязательна.** Передача не переходит в «Завершена», пока уходящий дежурный не заполнил число открытых инцидентов и следующие шаги, а принимающий не подтвердил получение. Необязательная заметка превращается в пустую.
- **Контекст по ссылкам, а не копиями.** К инциденту прикрепляют ссылки на обсуждение в чате, алерт и деплой, а не пересказ. Доска собирает контекст, но источником фактов остаются исходные системы.
- **Эскалация посреди смены.** Если P3 стал P1 во время смены, запись инцидента обновляется сразу, и в передаче видно текущее состояние, а не то, что было при открытии.
- **У команд разные правила.** Платформенной и прикладной командам могут понадобиться разные поля, уровни серьёзности и правила. Модель данных это допускает, но общий минимум полей держат одинаковым для сводной картины.
- **Связь со штабом инцидентов.** Если в компании есть штаб управления инцидентами, доска берёт инциденты оттуда, а не заводит второй список. Два учёта одних и тех же инцидентов быстро расходятся.
- **Доступ.** Передачи своей ротации меняют её участники, лиды видят все ротации, остальные — только чтение.

## Как сгенерировать через ИИ-агентов

Промпты рассчитаны на AI-агента (Claude Code, Cursor и аналоги) в Laravel-проекте с установленным **Filament 4.x**. Отправляйте их по одному и проверяйте результат каждого шага.

### 1. Данные и модели

```text
Создай модели и миграции для передачи дежурства: Rotation (название,
команда), Shift (ротация, дежурный, начало, окончание), Handoff (ротация,
уходящий и принимающий дежурный, время, статус: черновик, отправлена,
принята; сводка, риски, следующие шаги), HandoffItem (передача, инцидент
или задача, владелец, последнее действие, следующий шаг, ссылки на
чат, алерт и деплой). Инциденты бери из существующей таблицы инцидентов,
если она есть. Добавь фабрики.
```

### 2. Форма передачи

```text
Сгенерируй Filament-ресурс для Handoff. При создании автоматически
подставляй в пункты передачи все открытые инциденты ротации и их текущих
владельцев. Сводка и следующие шаги обязательны для отправки. Добавь
действие «Принять смену» для принимающего дежурного.
```

Проверьте, что передачу нельзя отправить, если у инцидента выше P3 нет владельца.

### 3. Сводка для принимающего

```text
Сделай страницу Filament «Моя смена»: открытые пункты последней принятой
передачи, сначала зависшие дольше 48 часов без обновлений, затем по
серьёзности. Для каждого пункта покажи последнее действие, следующий шаг
и ссылки на контекст.
```

### 4. Расписание и напоминания

```text
Добавь синхронизацию расписания ротаций из API системы пейджинга
по расписанию, с запасным импортом из CSV. За 30 минут до конца смены
отправляй уходящему дежурному напоминание о передаче; если передача
не принята через час после начала смены, уведоми лида ротации.
```

Проверьте, что при недоступном API пейджинга текущее расписание не стирается, а синхронизация записывает ошибку.

### 5. Роли и виджет для руководителя

```text
Настрой роли: участники ротации создают и принимают передачи своей
ротации, лиды видят все ротации, остальные — только чтение. Добавь
виджет «Сервисы в инциденте сейчас» для руководителей, согласующих
деплои, и долю передач, принятых вовремя, за месяц.
```

## Похожие сценарии

- [Разбор входящих багов](https://wpcraft.ru/kb/stacks/filament/use-cases/engineering/bug-triage-panel.md) — открытые баги как часть передаваемого контекста.
- [Карта зависимостей сервисов](https://wpcraft.ru/kb/stacks/filament/use-cases/engineering/service-dependency-map.md) — влияние на соседние сервисы.
- [График смен](https://wpcraft.ru/kb/stacks/filament/use-cases/operations/shift-scheduling-board.md) — планирование смен за пределами инженерного дежурства.
- Чем отличается от [штаба управления инцидентом](https://wpcraft.ru/kb/stacks/filament/use-cases/engineering/incident-command-center.md): доска переносит контекст всех открытых дел между сменами, а штаб координирует реагирование на конкретный инцидент, пока он идёт.

## Материалы и источники

- [Refine: On-Call Handoff Board](https://refine.dev/use-cases/engineering/on-call-handoff-board/)
- [Filament 4.x: ресурсы](https://filamentphp.com/docs/4.x/resources/overview)
- [Filament 4.x: связи и relation managers](https://filamentphp.com/docs/4.x/resources/managing-relationships)
- [Filament 4.x: уведомления](https://filamentphp.com/docs/4.x/notifications/overview)
- [Filament 4.x: виджеты](https://filamentphp.com/docs/4.x/widgets/overview)