Add CA admin UI and extend admin API for the unified platform.
Deliver parsers, events, analytics, and PI management in Vue; fix Telegram session mount and map navigation to events by eventId. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -58,7 +58,19 @@ ls -la data/telegram.session
|
||||
docker compose up --build
|
||||
```
|
||||
|
||||
4. Откройте карту: [http://localhost:8080](http://localhost:8080)
|
||||
4. Откройте UI: [http://localhost:8080](http://localhost:8080)
|
||||
|
||||
## Admin UI
|
||||
|
||||
Веб-интерфейс ЦА доступен по тем же адресу. Навигация в шапке:
|
||||
|
||||
| Раздел | Путь | Описание |
|
||||
|--------|------|----------|
|
||||
| **Карта** | `/` | Интерактивная карта с объектами, таймлайном и CRUD. Поддерживает `?eventId=` для перехода к событию |
|
||||
| **Парсеры** | `/parsers` | Создание заданий Telegram-парсинга, таблица статусов с автообновлением (5 с), повтор failed-заданий |
|
||||
| **События** | `/events` | Фильтрация, пагинация, просмотр деталей, ссылка «На карте» для событий с координатами |
|
||||
| **Аналитика** | `/analytics` | KPI-карточки, график динамики ingest за 30 дней, топ населённых пунктов и регионов |
|
||||
| **ПИ** | `/consumers` | CRUD подписчиков distribution API, ротация ключей, тест среза через `/api/v1/events` |
|
||||
|
||||
## Сохранение Telegram-сессии
|
||||
|
||||
@@ -66,11 +78,11 @@ docker compose up --build
|
||||
|
||||
- Оригинал: `SocialParser/data/telegram.session`
|
||||
- В репозитории MapMil: `data/telegram.session` — симлинк для локальной разработки
|
||||
- В Docker `cp-workers`: файл монтируется напрямую как `../SocialParser/data/telegram.session:/data/telegram.session:ro`
|
||||
- В Docker `cp-workers`: каталог `../SocialParser/data` монтируется как `/data` (read-write; Telethon обновляет SQLite-сессию)
|
||||
- Путь в контейнере: `/data/telegram.session`
|
||||
- Переменные из `.env`: `TELEGRAM_API_ID`, `TELEGRAM_API_HASH`, `TELEGRAM_SESSION_PATH=/data/telegram.session`
|
||||
|
||||
> Симлинк не работает внутри Docker — compose монтирует исходный файл из SocialParser.
|
||||
> Симлинк не работает внутри Docker — compose монтирует каталог `SocialParser/data` целиком.
|
||||
|
||||
Файл сессии и `.env` добавлены в `.gitignore` и не коммитятся.
|
||||
|
||||
@@ -90,8 +102,16 @@ docker compose up --build
|
||||
|-------|------|----------|
|
||||
| POST | `/admin/jobs` | Создать задание парсинга (ставится в Redis) |
|
||||
| GET | `/admin/jobs` | Список заданий |
|
||||
| GET | `/admin/events` | Все события |
|
||||
| POST | `/admin/jobs/{id}/retry` | Повторить failed-задание |
|
||||
| GET | `/admin/events` | События с фильтрами (`{ items, total }`) |
|
||||
| GET | `/admin/analytics/summary` | KPI-сводка |
|
||||
| GET | `/admin/analytics/timeline?days=` | Динамика ingest по дням |
|
||||
| GET | `/admin/analytics/top-localities?limit=` | Топ населённых пунктов |
|
||||
| GET | `/admin/analytics/top-regions?limit=` | Топ регионов |
|
||||
| GET | `/admin/consumers` | Список подписчиков ПИ |
|
||||
| POST | `/admin/consumers` | Создать подписчика ПИ |
|
||||
| PATCH | `/admin/consumers/{id}` | Обновить подписчика |
|
||||
| POST | `/admin/consumers/{id}/rotate-key` | Сменить API-ключ |
|
||||
|
||||
Пример задания Telegram:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user