Align specs with implementation. Refs EventHub/EventHubSpec#2

This commit is contained in:
2026-07-07 21:02:49 +03:00
parent 74c39289e2
commit a2526ffb25
2 changed files with 7 additions and 6 deletions
+5 -4
View File
@@ -262,15 +262,15 @@ src/
- `GET /v1/calendars/:calendar_id/view?month=YYYY-MM` — HTML-календарь (владелец), включая архив.
### Административные (порт 8445)
- `GET /v1/admin/health` — состояние сервера.
- `GET /v1/admin/stats`статистика.
- `GET /admin/health` — состояние сервера (без префикса `/v1`; используется в CT и Traefik healthcheck).
- `GET /v1/admin/stats`агрегированная статистика дашборда.
- `POST /v1/admin/login` — вход администратора.
- `POST /v1/admin/refresh` — обновление пары access/refresh JWT администратора.
- `GET /v1/admin/users`, `GET /v1/admin/users/:id` — пользователи.
- `GET /v1/admin/reports`, `GET /v1/admin/reports/:id` — жалобы.
- `DELETE /v1/admin/reviews/:id` — удалить отзыв.
- `GET /v1/admin/banned-words`, `POST /v1/admin/banned-words` — запрещённые слова.
- `GET /v1/admin/tickets/stats` — статистика тикетов.
- `GET /v1/admin/tickets/stats` — статистика тикетов: `total_tickets`, `open`, `in_progress`, `resolved`, `closed`, `total_errors`.
- `GET /v1/admin/tickets`, `GET /v1/admin/tickets/:id` — управление тикетами.
- `GET /v1/admin/subscriptions`, `POST /v1/admin/subscriptions/:id` — подписки.
- `PUT /v1/admin/:target_type/:id` — модерация.
@@ -282,9 +282,10 @@ src/
### Общие принципы
- Пользователи и администраторы используют разные эндпоинты и JWT-секреты.
- Access-токен — короткоживущий stateless JWT (HS256).
- Access-токен — короткоживущий stateless JWT (HS256), **TTL 86400 с (24 ч)**`eventhub_auth:generate_token/4`.
- Refresh-токен — 30 дней; подписанный JWT в единой session-модели (`auth_session`).
- Все защищённые эндпоинты требуют заголовок `Authorization: Bearer <access_token>`.
- **Source of truth:** `EventHubSpec` (этот документ); Swagger в репозитории — вторичная справка, синхронизируется по факту кода.
### Единая session-модель (`auth_session`)
+2 -2
View File
@@ -9,7 +9,7 @@
| Модератор | `moderator` | Работа с жалобами и отзывами. Остальные разделы недоступны. |
| Поддержка | `support` | Работа с тикетами (баг-трекер). Остальные разделы недоступны. |
Права проверяются на уровне фронтенда: пункты меню и маршруты отображаются или скрываются в зависимости от роли, полученной из `GET /v1/admin/me`.
Права проверяются на уровне фронтенда: пункты меню и маршруты (`RoleGuard` в `App.tsx`, конфиг `src/config/adminAccess.ts`) ограничены по роли из `GET /v1/admin/me`; при прямом URL без прав — страница 403.
## 2. Аутентификация и авторизация
@@ -184,7 +184,7 @@
Эндпоинт: `wss://<домен>/admin/ws?token=<jwt>`
Функциональность:
- При входе устанавливается WebSocket-соединение.
- При входе устанавливается WebSocket-соединение; при logout или смене `accessToken` сокет явно закрывается, reconnect отменяется, метрики в store сбрасываются.
- Подписка на каналы `reports` и `tickets`.
- При получении сообщения `{ type: "report_created" }` или `{ type: "ticket_created" }` показывается уведомление со ссылкой на соответствующую страницу.
- Автоматическое переподключение при разрыве соединения.