Модель данных
Всё начинается с входящего сообщения и обрастает разметкой по мере прохождения пайплайна. Ключевые сущности и как они связаны.
raw_item — входящее событие
Сырое сообщение из источника (пост, новость, объявление). Поля статуса: triage_status (pending → triaged → processed или filtered), triage_score (уверенность), geo_event_type (тип события от AI), territory_id (привязка к району), human_verdict (вердикт оператора).
content_signal — что выцепили
Результаты анализа сообщения: classification (тип контента), geo_event, deal_intent (намерение сделки), sentiment, topic, keyword и др. У сигнала есть value, score, confidence.
entity_mention — упоминания (NER)
Извлечённые из текста сущности — люди (PER), места (LOC), организации (ORG), даты, суммы. Связываются с реестрами Person, Building, GeoUnit. На основе общих упоминаний строятся «связанные события» и граф.
incident — инцидент
Сгруппированное подтверждённое событие (несколько raw_item об одном происшествии). Имеет severity (low/medium/high/critical), тип, адрес, источники.
geo_unit + map_annotation — территории
geo_unit — иерархия гео (регион → город → район → микрорайон) с границами (PostGIS). map_annotation — ручная разметка: anchor (точка) или zone(полигон) — например, зона вокруг детского сада, где события приоритетны.
alert_subscription / notification — алерты
Подписка на территорию + типы событий + минимальную важность + каналы (telegram/push/email). При совпадении инцидента создаётся уведомление и реально отправляется подписчику (дружине).