# 05 · Гид администратора

[← Home](Home.md)

Обход всех разделов админки: что где лежит и как этим пользоваться каждый день.
Админка доступна ролям `admin` (всё) и `operator` (жители, касса, шлагбаум,
рассылки — без настроек/пользователей/системы).

## Дашборд (`/admin`)

* Сводка: активные жители, собираемость за период, долг, открытия за сегодня.
* График открываний по дням, последние события, должники-топ.
* Быстрые действия: открыть шлагбаум, создать начисление, гостевой пропуск.
* Статус устройств и очереди уведомлений.

## Жители (`/admin/residents`)

**Список**: по умолчанию только **активные**; фильтры — статус
(активные/отключённые/все/без доступа/должники/удалённые), корпус, поиск
(ФИО, квартира, телефон, e-mail, госномер — всё сразу). Колонки: квартира,
ФИО, контакты, баланс/долг, флаги. Массовые операции над выделенными:
включить/выключить, доступ, уведомления, участие в оплатах.

**Карточка жителя** — всё в одном месте:

* данные: ФИО, квартира/корпус/этаж, площадь, число жителей, доля, роль
  (собственник/арендатор), комментарии;
* чекбоксы: **«доступ»** (разрешено открывать), **«включен»** (участвует во
  всём: списках, расчётах, рассылках), «участвует в оплатах», «гостевой
  доступ», «уведомления»;
* **контакты**: несколько телефонов и e-mail (метки: мобильный/домашний/
  рабочий, флаг «слать уведомления», верификация);
* **машины**: несколько на жителя — госномер (валидация формата РФ/кириллица)
  + марка/модель + цвет, активные/архивные;
* **оплаты**: счета и оплаты жителя, баланс, кнопка «Принять оплату»,
  «Выставить счёт» (ручной);
* **журнал**: открывания жителя, гостевые пропуска, история изменений карточки;
* **учётная запись**: создать/привязать кабинет жителя (логин, временный
  пароль, требование смены при первом входе);
* быстрое открытие шлагбаума «от имени квартиры».

**Форма жителя**: обязательны фамилия и квартира; телефоны нормализуются
в E.164; e-mail валидируется; госномера — с подсказкой формата; площадь/доля —
для распределения сумм. Удаление — мягкое (восстанавливается из фильтра
«удалённые»).

## Оплаты (`/admin/billing`)

Вкладки: **Начисления** · **Счета** · **Платежи** · **Должники** · **Мастер**.

**Мастер начисления** (главный сценарий месяца):

1. Общая сумма (запоминается между запусками) → предпросмотр: сколько
   активных участников, сколько с каждого, сумма счетов (сходится до копейки).
2. Способ распределения: **поровну** (default), **по площади**, **по числу
   жителей**, **по доле**.
3. Период (метка + даты), срок оплаты (дней или точная дата), ссылка на
   оплату (с подстановками `{id}`, `{apartment}`, `{sum}`, `{period}`),
   сообщение рассылки (или автогенерируемое из шаблона `payment_new`).
4. «Выставить счета» → счета у всех активных + очередь уведомлений.

**Начисление (charge)** — групповая операция: статусы `draft → issued →
closed/cancelled`; внутри — счета участников. Действия: **перерасчёт**
(новая сумма/состав → корректирующие счета, выставленные не трогаются),
**рассылка** (повторно/выборочно), **экспорт**, закрыть/отменить.

**Счета (invoices)**: номер, житель, сумма, оплачено, остаток, срок, статус
(`pending/partial/paid/overdue/void`), связь с начислением. Операции: принять
оплату, сторнировать (void), ручная корректировка.

**Платежи (payments)**: дата, сумма, метод (наличные/перевод/карта/онлайн/
бартер), внешний ID (из платёжки), комментарий; оплата распределяется FIFO
по старейшим счетам; переплата падает на баланс жителя. Удаление платежа
откатывает счёт обратно.

**Должники**: все активные с непогашенными счетами, сортировка по долгу/
просрочке, кнопка **«Напомнить»** — рассылка `payment_overdue` всем сразу.

Подробнее о деньгах: [08 · Биллинг](08-Billing.md).

## Шлагбаум (`/admin/gate`)

* **Журнал** (`/admin/gate`): каждое открытие — время, кто (житель/гость/
  оператор/API), тип доступа (`own/guest/manual/remote/emergency/api`),
  квартира, устройство, результат (успех/отказ/ошибка). Фильтры по датам/
  типу/результату/жителю, экспорт CSV. На панели оператора рядом с кнопкой —
  живой кадр камеры (события хранят текст, а не фото).
* **Статистика** (`/admin/gate/stats`): по дням/часам, пики, доли типов доступа.
* **Устройства** (`/admin/gate/devices`): панели и реле — добавление, проверка
  связи, токен/статус SIP, каналы замка, снимок камеры, перезагрузка;
  несколько устройств (основное + дополнительные ворота). В карточке
  устройства — раздел **«Камера шлагбаума и видеопоток»**: включение,
  режим (кадры через сервер / поток через сервер / прямой поток / выкл),
  snapshot-endpoint панели (BAS-IP `security/ipcam`), URL видеопотока
  (MJPEG/HTTP), кэш кадра и ширина. Камера привязана к шлагбауму и
  автоматически появляется в пульте жителя (`/remote`) и панели оператора;
  для прямого режима нужные хосты автоматически разрешаются в CSP.
* **Расписания** (`/admin/gate/schedules`): окна свободного прохода и «тихие
  часы» (например, ночной режим с запретом гостевых открытий).
* **Открыть/закрыть** вручную (с комментарием в журнал).

## Гостевой доступ (`/admin/guest`)

* Все пропуска дома: активные/истёкшие/отозванные, кто выдал, гость, срок,
  использования (сколько раз и когда открыли).
* Создание от имени любого жителя (админом), отзыв, экспорт.
* Настройки лимитов — в Настройках и `config.guest`.

Механика с точки зрения жителя — [07 · Гостевой доступ](07-Guest-Access.md).

## Пользователи (`/admin/users`)

* Учётные записи staff и жителей: роль, привязка к жителю, **телефон**
  (по нему житель входит), статус, 2FA, последний вход; создание/сброс
  пароля/блокировка/удаление. Учётка жителя создаётся одной кнопкой из его
  карточки: логин = цифры телефона, пароль генерируется и показывается один
  раз, при первом входе — обязательная смена.
* **Сессии**: активные сессии (устройство, IP, возраст) — отзыв любой или
  «все, кроме текущей».
* **Журнал входов**: успехи и неудачки с IP/агентом, блокировки.

## Уведомления (`/admin/notifications`)

* **Рассылка**: произвольное сообщение всем активным / выборочным (фильтр по
  корпусу, должникам, наличию e-mail), каналы на выбор, предпросмотр с
  подстановками, тестовая отправка себе.
* **Шаблоны**: редактирование текстов `payment_new` и др. из UI (хранятся в
  БД, переопределяют конфиг), список доступных плейсхолдеров, сброс к дефолту.
* **Очередь**: состояние outbox (pending/sent/failed), ретрай failed,
  статистика батчей, «разобрать сейчас».
* **Объявления**: баннеры в кабинете жителя и на панели (текст, срок, важность).

## Данные (`/admin/data`)

* **Экспорт**: жители (CSV/JSON, с контактами/машинами/оплатами или без),
  оплаты, журнал ворот, гостевые, аудит.
* **Импорт**: загрузка CSV/JSON/Excel → **инспекция** (предпросмотр, маппинг
  колонок, обнаружение дублей по квартире/ФИО) → режим (upsert/insert/
  replace/dry-run) → отчёт по строкам. Отдельный импорт оплат.
* **Бэкапы**: создать сейчас, список (размер, способ, статус), скачать,
  **восстановить** (с предупреждением), удалить; настройка авто-бэкапа.
* Образцы файлов для импорта.

## Настройки (`/admin/settings`)

Группы (хранятся в БД, применяются сразу):

* **Интерфейс**: название ЖК, логотип/фавикон, тема по умолчанию, язык,
  размер страницы, поддержка (телефон/e-mail для писем).
* **Биллинг**: валюта/символ, способ распределения, срок оплаты, префиксы,
  ссылка на оплату, напоминания, пени.
* **Гостевой доступ**: TTL по умолчанию и максимум, пресеты, лимиты,
  обязательные поля, PIN.
* **Уведомления**: каналы и реквизиты (SMTP, Telegram-бот, SMS, webhook —
  секреты шифруются), шаблоны, очередь.
* **Устройство**: параметры панели (можно править из UI: адрес, логин,
  канал, камера).
* **Бэкапы**: расписание, количество, шифрование.
* Скачать текущий `.bas-ip.config.local.php` (для переноса установки).

## Система (`/admin/system`)

* **Состояние**: версия, PHP, БД, драйвер устройства, очередь, диск;
  `/health` для мониторинга.
* **Диагностика (doctor)**: проверки прав, ключей, 2FA, устройства — с
  подсказками и автофиксом части проблем.
* **Журналы**: просмотр каналов (app/audit/gate/device/notify/error/access/
  update) с фильтрами по уровню и тексту, очистка.
* **Обслуживание**: включить/выключить maintenance (шлагбаум продолжает
  работать), запустить cron-задачи вручную, очистка кэша, prune старых
  данных по политике хранения.
* **API-токены** (`/admin/api-tokens`): создание с областями доступа и сроком
  (показывается один раз), список, отзыв.
* **Обновления** (`/admin/updates`): текущая версия, проверка, changelog
  новой версии, установка (с бэкапом), снимки и откат.
* **Аудит** (`/admin/audit`): кто что менял (жители, оплаты, настройки,
  входы, API), фильтр по актёру/действию/датам, экспорт.

## Кабинет оператора

Оператор (консьерж/охрана) работает на `/panel`: большая кнопка открытия,
статус устройства, снимок камеры, поиск жителя по квартире/ФИО/номеру машины
с открытием в один тап, последние события, гостевой код. Всё — только
активные жители с флагом «доступ».

---
Дальше: [06 · Кабинет жителя](06-Resident-Cabinet.md)
