Конечные точки посещаемости
Модуль посещаемости управляет местоположениями кампусов, служениями, временем служений, сессиями посещаемости, визитами и сессиями визитов. Он обеспечивает инфраструктуру для отслеживания, кто присутствовал на каком служении или встрече группы, поддерживает рабочие процессы регистрации и предлагает тренды посещаемости и итоговые отчёты.
Базовый путь: /attendance
Кампусы
Базовый путь: /attendance/campuses
Стандартный контроллер CRUD (расширяет GenericCrudController). Предоставляет маршруты getById, getAll, post и delete через базовый класс CRUD.
| Метод | Путь | Аут. | Разрешение | Описание |
|---|---|---|---|---|
| GET | / | JWT | — | Список всех кампусов для церкви |
| GET | /:id | JWT | — | Получить кампус по ID |
| POST | / | JWT | Services.Edit | Создать или обновить кампусы |
| DELETE | /:id | JWT | Services.Edit | Удалить кампус |
Служения
Базовый путь: /attendance/services
Расширяет GenericCrudController с маршрутами CRUD getById, getAll, post и delete. Конечные точки getAll (GET /) и search переопределены с пользовательскими реализациями.
| Метод | Путь | Аут. | Разрешение | Описание |
|---|---|---|---|---|
| GET | / | JWT | — | Список всех служений (включает информацию о кампусе) |
| GET | /:id | JWT | — | Получить служение по ID |
| GET | /search?campusId= | JWT | — | Поиск служений по ID кампуса |
| POST | / | JWT | Services.Edit | Создать или обновить служения |
| DELETE | /:id | JWT | Services.Edit | Удалить служение |
Пример: поиск служений по кампусу
GET /attendance/services/search?campusId=abc-123
Authorization: Bearer <token>
[
{
"id": "svc-001",
"churchId": "church-123",
"campusId": "abc-123",
"name": "Sunday Morning"
}
]
Время служений
Базовый путь: /attendance/servicetimes
Расширяет GenericCrudController с маршрутами CRUD getById, post и delete. Конечные точки getAll и search — это пользовательские реализации.
| Метод | Путь | Аут. | Разрешение | Описание |
|---|---|---|---|---|
| GET | / | JWT | — | Список всех времён служений. Фильтр по ?serviceId=. Добавьте ?include=groups для добавления данных группы |
| GET | /:id | JWT | — | Получить время служения по ID |
| GET | /search?campusId=&serviceId= | JWT | — | Поиск времён служений по кампусу и служению |
| GET | /public/:churchId | Public | — | Получить дерево кампус → служение → время для церкви. Питает элемент serviceTimes конструктора веб-сайта |
| POST | / | JWT | Services.Edit | Создать или обновить время служений |
| DELETE | /:id | JWT | Services.Edit | Удалить время служения |
Время служения группы
Базовый путь: /attendance/groupservicetimes
Связывает группы с определённым временем служения.
| Метод | Путь | Аут. | Разрешение | Описание |
|---|---|---|---|---|
| GET | / | JWT | — | Список всех ассоциаций группа-время служения. Фильтр по ?groupId= для получения ассоциаций с названиями служений |
| GET | /:id | JWT | — | Получить ассоциацию группа-время служения по ID |
| POST | / | JWT | Services.Edit | Создать или обновить ассоциации группа-время служения |
| DELETE | /:id | JWT | Services.Edit | Удалить ассоциацию группа-время служения |
Записи посещаемости
Базовый путь: /attendance/attendancerecords
Предоставляет представления только для чтения данных посещаемости для отчётности и отображения.
| Метод | Путь | Аут. | Разрешение | Описание |
|---|---|---|---|---|
| GET | / | JWT | Attendance.View | Загрузить записи посещаемости для человека. Требует ?personId= |
| GET | /tree | JWT | — | Загрузить полное дерево посещаемости (кампусы, служения, время служений, группы) |
| GET | /trend?campusId=&serviceId=&serviceTimeId=&groupId= | JWT | Attendance.View Summary | Загрузить данные тренда посещаемости с опциональными фильтрами |
| GET | /groups?serviceId=&week= | JWT | Attendance.View | Загрузить посещаемость группы для служения на указанную неделю |
| GET | /search?campusId=&serviceId=&serviceTimeId=&groupId=&startDate=&endDate= | JWT | Attendance.View | Поиск записей посещаемости с фильтрами (кампус, служение, время служения, группа, диапазон дат) |
Пример: тренд посещаемости
GET /attendance/attendancerecords/trend?serviceId=svc-001
Authorization: Bearer <token>
[
{ "week": "2025-01-05", "count": 142 },
{ "week": "2025-01-12", "count": 156 },
{ "week": "2025-01-19", "count": 138 }
]
Сессии
Базовый путь: /attendance/sessions
Расширяет GenericCrudController с маршрутами CRUD getById и delete. Конечные точки getAll и save — это пользовательские реализации, которые также позволяют лидерам групп управлять сессиями для своих групп.
| Метод | Путь | Аут. | Разрешение | Описание |
|---|---|---|---|---|
| GET | / | JWT | Attendance.View или Group Leader | Список всех сессий. Фильтр по ?groupId= (включает названия). Лидеры групп могут просматривать сессии для своих групп |
| GET | /:id | JWT | Attendance.View | Получить сессию по ID |
| POST | / | JWT | Attendance.Edit или Group Leader | Создать или обновить сессии. Лидеры групп могут сохранять сессии для своих групп |
| DELETE | /:id | JWT | Attendance.Edit | Удалить сессию |
Визиты
Базовый путь: /attendance/visits
Управляет отдельными записями визитов (человек, присутствовавший в определённую дату) и предоставляет рабочий процесс регистрации.
| Метод | Путь | Аут. | Разрешение | Описание |
|---|---|---|---|---|
| GET | / | JWT | Attendance.View | Список всех визитов. Фильтр по ?personId= |
| GET | /:id | JWT | Attendance.View | Получить визит по ID |
| GET | /checkin?serviceId=&peopleIds= | JWT | Attendance.View или Attendance.Checkin | Загрузить данные регистрации для людей на служении. Возвращает визиты с сессиями визитов с последней залогированной даты |
| POST | / | JWT | Attendance.Edit | Создать или обновить визиты |
| POST | /checkin?serviceId=&peopleIds= | JWT | Attendance.Edit или Attendance.Checkin | Отправить данные регистрации. Создаёт/обновляет визиты и сессии визитов, удаляет устаревшие записи |
| DELETE | /:id | JWT | Attendance.Edit | Удалить визит |
Пример: поток регистрации
Шаг 1 — загрузить существующие данные регистрации:
GET /attendance/visits/checkin?serviceId=svc-001&peopleIds=person-1,person-2
Authorization: Bearer <token>
[
{
"id": "visit-001",
"personId": "person-1",
"visitDate": "2025-01-19T00:00:00.000Z",
"visitSessions": [
{
"id": "vs-001",
"sessionId": "sess-001",
"visitId": "visit-001",
"session": {
"id": "sess-001",
"groupId": "group-001",
"serviceTimeId": "st-001",
"sessionDate": "2025-01-19T00:00:00.000Z"
}
}
]
}
]
Шаг 2 — отправить регистрацию:
POST /attendance/visits/checkin?serviceId=svc-001&peopleIds=person-1,person-2
Authorization: Bearer <token>
[
{
"personId": "person-1",
"visitSessions": [
{
"session": { "serviceTimeId": "st-001", "groupId": "group-001" }
}
]
}
]
Сессии визитов
Базовый путь: /attendance/visitsessions
Управляет ассоциацией между визитами и сессиями (какую определённую сессию человек посетил во время визита). Также предоставляет быструю конечную точку логирования и конечную точку загрузки/экспорта.
| Метод | Путь | Аут. | Разрешение | Описание |
|---|---|---|---|---|
| GET | / | JWT | Attendance.View или Group Leader | Список сессий визитов. Фильтр по ?sessionId=. Лидеры групп могут просматривать сессии визитов для своих групп |
| GET | /:id | JWT | Attendance.View | Получить сессию визита по ID |
| GET | /download/:sessionId | JWT | Attendance.View | Загрузить посещаемость для сессии (возвращает имена людей со статусом присутствия/отсутствия) |
| POST | / | JWT | Attendance.Edit | Создать или обновить сессии визитов |
| POST | /log | JWT | Attendance.Edit или Group Leader | Быстрое логирование посещаемости человека в сессию. Автоматически создаёт визит, если необходимо. Лидеры групп могут логировать посещаемость для своих групп |
| DELETE | /:id | JWT | Attendance.Edit | Удалить сессию визита по ID |
| DELETE | /?personId=&sessionId= | JWT | Attendance.Edit или Group Leader | Удалить человека из сессии. Удаляет сессию визита и родительский визит, если не остаются сессии. Лидеры групп могут удалять посещаемость для своих групп |
Пример: быстрое логирование посещаемости
POST /attendance/visitsessions/log
Authorization: Bearer <token>
{
"personId": "person-001",
"visitSessions": [
{ "sessionId": "sess-001" }
]
}
{}
Пример: загрузка посещаемости сессии
GET /attendance/visitsessions/download/sess-001
Authorization: Bearer <token>
[
{
"id": "vs-001",
"personId": "person-001",
"visitId": "visit-001",
"sessionDate": "2025-01-19T00:00:00.000Z",
"personName": "John Smith",
"status": "present"
},
{
"id": "",
"personId": "person-002",
"visitId": "",
"sessionDate": "2025-01-19T00:00:00.000Z",
"personName": "Jane Doe",
"status": "absent"
}
]
Полосы
Базовый путь: /attendance/streaks
Отслеживает полосы посещаемости для отдельных лиц — последовательные недели, когда человек посещал. Полезно для метрик взаимодействия и геймификации.
| Метод | Путь | Аут. | Разрешение | Описание |
|---|---|---|---|---|
| GET | /person/:personId | JWT | — | Загрузить полосы посещаемости для человека |
Связанные страницы
- Конечные точки членства — люди, группы, роли и управление церковью
- Аутентификация и разрешения — поток входа, JWT, модель разрешений
- Структура модуля — шаблоны организации кода