Add public map with JWT admin login and protect admin APIs.
Keep map reads open; gate admin UI/nav and object mutations behind env-based admin credentials, and default parser batch limit to 10. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -67,20 +67,22 @@ cp ../SocialParser/data/telegram.session data/
|
||||
docker compose up --build
|
||||
```
|
||||
|
||||
4. Откройте UI: [http://localhost:8080](http://localhost:8080)
|
||||
4. Откройте UI: [http://localhost:8080](http://localhost:8080) — карта публичная; разделы админки — после входа (`ADMIN_USER` / `ADMIN_PASSWORD` из `.env`).
|
||||
|
||||
## Admin UI
|
||||
|
||||
Веб-интерфейс ЦА доступен по тем же адресу. Навигация в шапке:
|
||||
Веб-интерфейс ЦА доступен по тому же адресу. Карта (`/`) открыта всем. Остальные пункты навигации видны после логина (`/login`).
|
||||
|
||||
| Раздел | Путь | Описание |
|
||||
|--------|------|----------|
|
||||
| **Карта** | `/` | Интерактивная карта событий: навигация по датам (flatpickr), пресеты периода, фильтры региона/темы/источника, подложки Яндекс/OSM/Topo/ESRI, линейка, полноэкранный режим, центрирование по координатам и городам, поиск населённых пунктов (Nominatim). CRUD для ручных объектов (ПКМ). Поддерживает `?eventId=` |
|
||||
| **Карта** | `/` | Интерактивная карта событий (публичный просмотр). CRUD ручных объектов — только для админа (ПКМ). Поддерживает `?eventId=` |
|
||||
| **Парсеры** | `/parsers` | Адаптеры `telegram` / `crawl4ai` / `viina`, интервал, CRUD; дедуп по `source_url` |
|
||||
| **События** | `/events` | Фильтрация, пагинация, просмотр деталей, ссылка «На карте» для событий с координатами |
|
||||
| **Аналитика** | `/analytics` | KPI-карточки, график динамики ingest за 30 дней, топ населённых пунктов и регионов |
|
||||
| **ПИ** | `/consumers` | CRUD подписчиков distribution API, ротация ключей, тест среза через `/api/v1/events` |
|
||||
|
||||
Авторизация админки: `POST /admin/auth/login` → JWT Bearer. Все `/admin/*` (кроме login) и мутации `/api/objects` требуют токен. `GET /api/map/*` публичен.
|
||||
|
||||
## Сохранение Telegram-сессии
|
||||
|
||||
**Важно:** существующий файл сессии **не удаляется и не пересоздаётся**.
|
||||
@@ -132,10 +134,15 @@ docker compose up --build
|
||||
| PATCH | `/admin/consumers/{id}` | Обновить подписчика |
|
||||
| POST | `/admin/consumers/{id}/rotate-key` | Сменить API-ключ |
|
||||
|
||||
Пример задания Telegram:
|
||||
Пример задания Telegram (нужен JWT после `POST /admin/auth/login`):
|
||||
|
||||
```bash
|
||||
TOKEN=$(curl -s -X POST http://localhost:8080/admin/auth/login \
|
||||
-H 'Content-Type: application/json' \
|
||||
-d '{"username":"admin","password":"change-me"}' | jq -r .access_token)
|
||||
|
||||
curl -X POST http://localhost:8080/admin/jobs \
|
||||
-H "Authorization: Bearer $TOKEN" \
|
||||
-H 'Content-Type: application/json' \
|
||||
-d '{"source_type":"telegram","source_config":{"channel":"creamy_caprice","limit":50}}'
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user