Add CP source adapter registry with multi-worker queues and LLM extract.
Replace legacy root backend/frontend with Telegram, Crawl4AI, and VIINA adapters routed by Redis job families. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
# MapMil Platform (ЦП → ЦА → ПИ)
|
||||
|
||||
Единая платформа: ЦА (аналитика и карта) + ЦП (парсинг Telegram).
|
||||
Единая платформа: ЦА (аналитика и карта) + ЦП (адаптеры парсинга: Telegram, Crawl4AI, VIINA).
|
||||
|
||||
## Архитектура
|
||||
|
||||
@@ -10,7 +10,7 @@ flowchart LR
|
||||
CP[ЦП Parsing Center]
|
||||
PI[ПИ External Consumers]
|
||||
|
||||
CA -->|jobs via Redis| CP
|
||||
CA -->|jobs via Redis families| CP
|
||||
CP -->|POST /internal/ingest| CA
|
||||
CA -->|GET /api/v1/events| PI
|
||||
```
|
||||
@@ -18,8 +18,10 @@ flowchart LR
|
||||
| Центр | Контейнеры | Назначение |
|
||||
|-------|------------|------------|
|
||||
| **ЦА** | `ca-db`, `ca-api`, `ca-frontend` | PostgreSQL, ingest API, карта, distribution API |
|
||||
| **ЦП** | `cp-workers` | Парсинг Telegram: real-time listener (Telethon) + batch-задания из Redis |
|
||||
| **Общее** | `redis` | Очередь заданий ЦА → ЦП |
|
||||
| **ЦП** | `cp-workers`, `cp-workers-web`, `cp-workers-nlp` | Адаптеры: Telegram / Crawl4AI / VIINA |
|
||||
| **Общее** | `redis` | Очереди `cp:jobs:{telegram\|web\|nlp}` |
|
||||
|
||||
Подробности ЦП: [`centers/parsing/ARCHITECTURE.md`](centers/parsing/ARCHITECTURE.md).
|
||||
|
||||
## Структура monorepo
|
||||
|
||||
@@ -30,11 +32,12 @@ MapMil/
|
||||
│ │ ├── api/ # CA backend (FastAPI + PostgreSQL)
|
||||
│ │ └── frontend/ # CA admin UI (Vue + Leaflet)
|
||||
│ └── parsing/
|
||||
│ └── workers/ # CP workers (Telethon)
|
||||
├── contracts/ # Shared schemas (ingest, jobs)
|
||||
│ ├── ARCHITECTURE.md
|
||||
│ └── workers/ # CP workers + adapters
|
||||
├── contracts/ # Shared schemas (ingest, jobs, sources, queues)
|
||||
├── data/ # telegram.session (локально, не в git)
|
||||
├── docker-compose.yml
|
||||
└── .env # TELEGRAM_API_ID, TELEGRAM_API_HASH, …
|
||||
└── .env
|
||||
```
|
||||
|
||||
## Быстрый старт
|
||||
@@ -67,7 +70,7 @@ docker compose up --build
|
||||
| Раздел | Путь | Описание |
|
||||
|--------|------|----------|
|
||||
| **Карта** | `/` | Интерактивная карта событий: навигация по датам (flatpickr), пресеты периода, фильтры региона/темы/источника, подложки Яндекс/OSM/Topo/ESRI, линейка, полноэкранный режим, центрирование по координатам и городам, поиск населённых пунктов (Nominatim). CRUD для ручных объектов (ПКМ). Поддерживает `?eventId=` |
|
||||
| **Парсеры** | `/parsers` | Telegram-парсеры с периодическим запуском, настройка интервала, редактирование и удаление; дубликаты по `source_url` не записываются |
|
||||
| **Парсеры** | `/parsers` | Адаптеры `telegram` / `crawl4ai` / `viina`, интервал, CRUD; дедуп по `source_url` |
|
||||
| **События** | `/events` | Фильтрация, пагинация, просмотр деталей, ссылка «На карте» для событий с координатами |
|
||||
| **Аналитика** | `/analytics` | KPI-карточки, график динамики ingest за 30 дней, топ населённых пунктов и регионов |
|
||||
| **ПИ** | `/consumers` | CRUD подписчиков distribution API, ротация ключей, тест среза через `/api/v1/events` |
|
||||
@@ -198,7 +201,3 @@ docker compose down
|
||||
```
|
||||
|
||||
Данные PostgreSQL сохраняются в volume `pgdata`.
|
||||
|
||||
## Legacy
|
||||
|
||||
Старые каталоги `backend/` и `frontend/` в корне оставлены для справки; активная разработка — в `centers/`.
|
||||
|
||||
Reference in New Issue
Block a user