# Руководство пользователя: модуль «Ежедневные инструктажи» (daily_briefing)

## 1. Назначение

Модуль предназначен для учёта **ежедневных инструктажей** (в текущей конфигурации — **«Инструктаж техника»**): регистрация участников по номеру пропуска, проведение сеанса и фиксация **электронной подписи** на планшете или сенсорном экране. Данные привязываются к сотрудникам из справочника персонала и к аккаунтам инструкторов в системе.

Раздел в интерфейсе: **«Ежедневные инструктажи»** → **«Рабочее место техника»**  
Базовый адрес: `/cab/daily_briefing/`

---

## 2. Кто может пользоваться

| Роль | Возможности |
|------|-------------|
| **Администратор** (роль с полным доступом к кабинету, обычно `rol = 1`) | Всё, включая создание инструктажей, переименование, «мягкое» удаление (скрытие из списка), просмотр всей статистики и журналов без ограничения по инструктору. |
| **Техник инструктажа** (роль `9`, выдаётся при установке модуля) | Работа со списком и карточками инструктажей, проведение инструктажа, подписи. **Статистика и отчёты** для этой роли фильтруются: учитываются только записи, где вы зарегистрировали прибытие или зафиксировали подпись. |
| **Другие роли** | Доступ возможен только если администратор выдал право на соответствующие страницы в настройках прав. |

---

## 3. Рабочее место техника (`/cab/daily_briefing/`)

### 3.1. Список инструктажей

В таблице отображаются активные инструктажи типа «Инструктаж техника»:

- **ID**, **наименование**, **тип**, дата создания;
- **«Сегодня прошло»** — число сотрудников, у которых за **текущие сутки** зафиксирован статус «инструктаж пройден» (с подписью);
- ссылка **«Карточка инструктажа»**.

**Администратор** видит кнопку **«Создать инструктаж»**: открывается окно, вводится название (по умолчанию подставляется «Инструктаж техника»), после создания выполняется переход в карточку нового инструктажа.

**Техник инструктажа:** если в системе **ровно один** такой инструктаж, при открытии раздела выполняется **автоматический переход** в его карточку (чтобы не выбирать из списка вручную).

---

## 4. Карточка инструктажа

Адрес: `/cab/daily_briefing/card/<ID>/`

Вторичное меню карточки:

| Пункт | Назначение |
|-------|------------|
| **Рабочее место техника** | Возврат к общему списку |
| **Статистика** | Текущая страница (обзор) |
| **Проведение** | Пошаговый сценарий сеанса |
| **Отчёт** | Журнал за выбранную дату с печатным видом таблицы |
| **Редактировать** | Только администратор: имя инструктажа и удаление из списка |

### 4.1. Блоки на вкладке «Статистика»

1. **Сводные карточки** — за **сегодня**, **вчера** и **неделю**: сколько человек **прибыло** (зарегистрировано) и сколько **прошло** инструктаж (завершено с подписью). Для роли техника инструктажа цифры считаются **по вашему участию** (регистрация / подпись).

2. **По инструкторам** — таблица по аккаунтам: сколько сотрудников каждый инструктор зарегистрировал при прибытии и сколько завершил с подписью, за те же периоды. Для роли `9` в таблице фактически отражается **только ваш** аккаунт.

3. **Последние прохождения** — краткий журнал (последние записи): время прибытия, ФИО, организация, должность, статус, миниатюра подписи при наличии.

---

## 5. Проведение инструктажа

Адреса этапов:

- Шаг 1: `.../conduct/`
- Шаг 2: `.../conduct/step2/`
- Шаг 3: `.../conduct/step3/`

Над формой выводится пояснение: одна страница отражает **один сеанс** для группы; инструктаж **можно проводить несколько раз в день**.

Переключение между этапами — **ссылками в шапке-«степпере»** (Сбор группы → Текущий сеанс → Подписи). Логика этапов **не блокирует** переход: порядок соблюдается организационно.

### 5.1. Этап 1. Регистрация участников

- Поле **«Номер пропуска»** должно быть в фокусе (система периодически возвращает фокус в поле — удобно для **сканера штрихкода / RFID**).
- После ввода номера система ждёт **короткую паузу** (около 300 мс без новых нажатий клавиш), затем **автоматически** отправляет номер на регистрацию.
- Пропуск **нормализуется** (убираются пробелы, скобки и т. п.). Если номер не найден в справочнике, показывается ошибка, поле очищается.
- **Один сотрудник — одна запись на этот инструктаж за календарные сутки.** Если человек уже зарегистрирован или уже прошёл инструктаж сегодня, выводится соответствующее сообщение, без дубля записи.

**Статусы записи:**

- **Прибыл на инструктаж** — зарегистрирован, подписи ещё нет.
- **Инструктаж пройден** — сохранена подпись.

### 5.2. Боковая панель на экране проведения

- **Сводка инструктажа** за сегодня: всего прибыло, подписано, ожидают подписи.
- **Список зарегистрированных** — сотрудники со статусом «ожидает подписи» за **сегодня**; для техника инструктажа — только те, кого зарегистрировали **вы**.

Внизу страницы дублируется **журнал инструктажа** (последние события), он обновляется после регистрации и подписи.

### 5.3. Этап 2. Текущий сеанс

- Кнопка **«Начать инструктаж»** запускает **локальный таймер** на экране (для ориентира по длительности). Повторное нажатие останавливает таймер.
- Поле **«Заметки инструктора»** хранится **только в браузере** (`localStorage`) — это черновик для себя, в отчёты и базу не передаётся.
- Блок **прогресса за сегодня** показывает отношение «подписано / прибыло».

### 5.4. Этап 3. Подписи участников

1. Введите или отсканируйте **номер пропуска** того, кто подписывается (логика ввода как на этапе 1).
2. Откроется карточка сотрудника (ФИО, фото при наличии, пропуск, организация, подразделение, должность; для уволенных — предупреждение).
3. Если статус «прибыл» — отображается **поле подписи** (рисование пальцем / стилусом). Кнопка **«Очистить»** сбрасывает поле.
4. **«Инструктаж проведен»** — отправка подписи на сервер; сохраняются изображение и технические данные штриха. После успеха статус становится **«Инструктаж пройден»**, подпись видна в журнале и отчёте.

Если сотрудник **уже прошёл** инструктаж сегодня, вместо подписи отображается подтверждение с сохранённой подписью.

---

## 6. Отчёт

Пункт **«Отчёт»** (`.../report/`): форма **«Дата инструктажа»** (календарь), кнопка построения отчёта.

В таблице: дата/время прибытия, сотрудник, организация, подразделение, должность, статус, изображение подписи.

Для **техника инструктажа** в отчёт попадают только строки, где вы участвовали как при регистрации прибытия или при подписании.

Фильтрация по **пространству/группе** может включаться общими настройками отчётов системы (`view_by_space_filter`).

### 6.1. Отчёт за смену: сохранение в документах и подпись (ЭЦП)

Чтобы зафиксировать журнал инструктажа за выбранный день как **официальный документ** с возможностью **усиленной квалифицированной электронной подписи** (КриптоПро и т. п., в зависимости от настроек вашей организации), выполните шаги по порядку.

**1. Сформировать отчёт**

- На странице **«Отчёт»** укажите **дату инструктажа** — календарная дата смены, за которую нужен журнал.
- Нажмите **«Сформировать отчёт»**. Убедитесь, что таблица на экране заполнена корректно (сотрудники, статусы, подписи участников).

**2. Сохранить в документах**

- Не меняя параметры даты, нажмите **«Сохранить в документах»**.
- Дождитесь окончания **подготовки PDF** (модальное окно с ходом конвертации). После успешного формирования откроется **карточка документа** с PDF (или станет доступна ссылка для перехода / открытия файла — в зависимости от сценария в вашей сборке).
- При необходимости документ позже можно найти в общем разделе **«Документы»** кабинета (`/cab/docs/` и связанные списки), если у вашей роли есть к ним права.

**3. Подписать документ**

- На странице просмотра сохранённого PDF в боковом или вторичном меню выберите **«Подписать документ»** (пункт доступен, пока документ **не подписан** и не открыт в режиме редактирования исходных полей).
- Далее следуйте инструкциям панели **электронной подписи**: выбор сертификата, ввод PIN, подтверждение операции. На учебных/тестовых стендах может быть включена **эмуляция ЭЦП** — тогда подписание выполняется отдельной кнопкой на этой странице.
- После подписания в меню может появиться пункт **«ЭЦП документа»** для просмотра сведений о подписи. Точный вид шагов зависит от политики ИБ и плагинов, подключённых администратором.

*Примечание.* Кнопка **«Сохранить в документах»** не отображается у роли **«Суперчитатель»** (роль `20`): такой пользователь может только формировать отчёт на экран, без сохранения в документы.

---

## 7. Редактирование и удаление (администратор)

Страница `.../edit/`:

- **Сохранить** — изменить **наименование** инструктажа.
- **Удалить инструктаж** — инструктаж **скрывается из списка** (признак «отключён»). Записи о прохождениях в базе **сохраняются**; уточняйте у администратора БД при необходимости архивации или выборок по старым ID.

---

## 8. Типичные проблемы

| Симптом | Что проверить |
|---------|----------------|
| «Пропуск не найден» | Номер в справочнике персонала, раскладка клавиатуры, лишние символы; при кириллице в номере система может пробовать транслитерацию. |
| Нет автоматической регистрации после сканирования | Поле пропуска должно получить «тишину» ~300 мс после скана; при ручном вводе завершите ввод и сделайте паузу или переключите фокус. |
| Не сохраняется подпись | Убедитесь, что подпись нарисована (не пустое поле); проверьте права на запись в каталоги подписей на сервере (зона ответственности администратора). |
| Пустая статистика у техника | Учитываются только **ваши** регистрации и **ваши** подписи; чужие сеансы в сводках не отображаются. |
| Нет пункта меню | Роль не назначена или не выдано право на страницу в настройках системы. |
| Нет кнопки «Сохранить в документах» | У роли «Суперчитатель» (`20`) сохранение в документы отключено; либо отчёт не сформирован (не заданы параметры фильтра). |
| Нет пункта «Подписать документ» | Документ уже подписан, открыт в режиме редактирования или у аккаунта нет прав на подписание; проверьте плагин КриптоПро и сертификат пользователя. |

---

## 9. Техническая справка (для сопровождения)

- Таблицы: список инструктажей `daily_briefing_list`, прохождения `daily_briefing_pass`.
- Файлы подписей: каталоги `/public/daily_briefing_sign/` (PNG) и `/public/daily_briefing_sign_data/` (JSON).
- AJAX-команды: `daily_briefing/register_arrive`, `daily_briefing/sign_pass`, создание инструктажа через модальное окно (только администратор).
- Сохранение журнала в PDF-документ: кнопка формы отчёта `docs/doc_create` (модуль документов); подписание: страницы `c_docs_pdf_sign` / раздел ЭЦП.

---

*Текст соответствует коду модулей `engine_moduls/daily_briefing` и расширения `ext/daily_briefing` на момент составления руководства.*
