Модель данных

Полная спецификация онтологии платформы «Сфера» — все типы объектов, свойства, связи и ограничения

~90
типов объектов
~900
полей
~30
типов связей
7
ведомств

Полная модель данных платформы “Сфера”

Версия: 2.0 | Дата: 19 апреля 2026 г. Данный документ определяет полную схему всех типов сущностей платформы “Сфера” со всеми полями, типами данных, ограничениями, индексами и связями.


Соглашения

Типы данных

Тип Описание Пример
uuid UUID v7 (time-ordered) 019078a4-3f2b-7c1e-8a4d-...
string(N) Строка длиной до N символов string(255)
text Неограниченный текст
int Целое число (64-bit signed)
float Число с плавающей точкой (64-bit double)
boolean Логическое true / false
datetime ISO 8601 с таймзоной 2026-04-19T14:32:00Z
duration ISO 8601 duration PT2H30M
date Дата без времени 2026-04-19
enum(values) Перечисление enum(высокий, средний, низкий)
geometry.point Точка, SRID 4326 POINT(37.567 48.234)
geometry.polygon Полигон, SRID 4326
geometry.linestring Линия, SRID 4326
geometry.point3d 3D-точка (lat, lon, alt), SRID 4326
geometry.polygon3d 3D-полигон (с высотой), SRID 4326
reference(Type) Ссылка на сущность типа Type reference(Персона)
list(type) Список элементов указанного типа list(string(50))
json Произвольный JSON-документ
binary Бинарные данные (файл)
money Денежная сумма (decimal 19,4 + код валюты)

Уровни классификации

Код Наименование (РФ) Наименование (экспорт)
О Открыто UNCLASSIFIED
ДСП Для служебного пользования RESTRICTED
С Секретно CONFIDENTIAL
СС Совершенно секретно SECRET
ОВ Особой важности TOP SECRET

Общие мета-поля (присутствуют у ВСЕХ сущностей)

meta_properties:
  - name: id
    type: uuid
    required: true
    unique: true
    indexed: true
    description: Глобальный уникальный идентификатор объекта
  - name: _type
    type: string(100)
    required: true
    indexed: true
    description: Тип объекта в онтологии
  - name: _classification
    type: enum(О, ДСП, С, СС, ОВ)
    required: true
    indexed: true
    description: Гриф секретности объекта
  - name: _owner
    type: reference(Персона)
    required: false
    description: Владелец объекта (кто создал / отвечает)
  - name: _org_unit
    type: reference(Организация)
    required: false
    indexed: true
    description: Организационная принадлежность
  - name: _created_at
    type: datetime
    required: true
    description: Время создания записи
  - name: _updated_at
    type: datetime
    required: true
    description: Время последнего обновления
  - name: _created_by
    type: reference(Персона)
    required: true
    description: Кто создал запись
  - name: _updated_by
    type: reference(Персона)
    required: true
    description: Кто последний обновил
  - name: _version
    type: int
    required: true
    default: 1
    description: Номер версии объекта (оптимистическая блокировка)
  - name: _deleted
    type: boolean
    required: true
    default: false
    indexed: true
    description: Мягкое удаление
  - name: _provenance
    type: json
    required: false
    description: "Происхождение: {source, confidence, timestamp, author}"
  - name: _tags
    type: list(string(50))
    required: false
    indexed: true
    description: Произвольные теги для поиска и фильтрации

Общая структура связи (Edge)

edge_meta:
  - name: id
    type: uuid
    required: true
  - name: link_type
    type: string(100)
    required: true
    indexed: true
    description: Тип связи из каталога
  - name: source_id
    type: uuid
    required: true
    indexed: true
  - name: source_type
    type: string(100)
    required: true
  - name: target_id
    type: uuid
    required: true
    indexed: true
  - name: target_type
    type: string(100)
    required: true
  - name: directed
    type: boolean
    required: true
    default: true
    description: Направленная связь (true) или двусторонняя (false)
  - name: confidence
    type: float
    required: false
    description: "Достоверность связи: 0.0 - 1.0"
  - name: source_info
    type: string(255)
    required: false
    description: Источник информации о связи
  - name: valid_from
    type: datetime
    required: false
  - name: valid_until
    type: datetime
    required: false
  - name: _classification
    type: enum(О, ДСП, С, СС, ОВ)
    required: true
  - name: _created_at
    type: datetime
    required: true
  - name: _created_by
    type: reference(Персона)
    required: true
  - name: properties
    type: json
    required: false
    description: Дополнительные свойства связи

1. Базовые типы (общие для всех заказчиков)

1.1 Персона

type: Персона
description: Любой человек в системе - военнослужащий, подозреваемый, пострадавший, агент, оператор
classification_default: ДСП
extends: null
properties:
  - name: фио
    type: string(255)
    required: false
    indexed: true
    description: Фамилия, имя, отчество (полностью)
  - name: фамилия
    type: string(100)
    required: false
    indexed: true
  - name: имя
    type: string(100)
    required: false
    indexed: true
  - name: отчество
    type: string(100)
    required: false
  - name: позывной
    type: string(50)
    required: false
    indexed: true
    unique: false
    description: Позывной (может меняться со временем)
  - name: дата_рождения
    type: date
    required: false
    indexed: true
  - name: пол
    type: enum(мужской, женский, неизвестно)
    required: false
  - name: гражданство
    type: list(string(3))
    required: false
    description: Коды стран ISO 3166-1 alpha-3
  - name: документы
    type: json
    required: false
    description: "Массив: [{тип, серия, номер, кем_выдан, дата_выдачи}]"
  - name: звание
    type: string(100)
    required: false
    indexed: true
  - name: должность
    type: string(255)
    required: false
    indexed: true
  - name: специальность
    type: string(255)
    required: false
    description: Военная учётная специальность (ВУС) или гражданская
  - name: принадлежность
    type: enum(свой, противник, нейтральный, неизвестный)
    required: false
    indexed: true
    default: неизвестный
  - name: статус
    type: enum(действующий, резерв, погибший, ранен, пленный, пропал_без_вести, демобилизован, уволен)
    required: false
    indexed: true
  - name: фото
    type: list(binary)
    required: false
    description: Фотографии (для распознавания лиц)
  - name: биометрия
    type: json
    required: false
    description: "Биометрические данные: {отпечатки, радужка, голос_embedding}"
    classification_override: С
  - name: контакты
    type: json
    required: false
    description: "Телефоны, email, мессенджеры: [{тип, значение, подтверждён}]"
  - name: адрес_регистрации
    type: string(500)
    required: false
    classification_override: ДСП
  - name: адрес_фактический
    type: string(500)
    required: false
    classification_override: ДСП
  - name: координаты
    type: geometry.point
    required: false
    indexed: true
    description: Последнее известное местоположение
  - name: координаты_время
    type: datetime
    required: false
    description: Время фиксации последнего местоположения
  - name: рост_см
    type: int
    required: false
  - name: вес_кг
    type: float
    required: false
  - name: приметы
    type: text
    required: false
    description: Словесное описание примет
  - name: группа_крови
    type: string(10)
    required: false
    description: "Например: A(II) Rh+"
  - name: аллергии
    type: text
    required: false
  - name: допуск
    type: enum(О, ДСП, С, СС, ОВ)
    required: false
    description: Уровень допуска к секретной информации
  - name: примечание
    type: text
    required: false
links:
  - type: владеет
    target: [Транспорт, Объект]
    description: Право собственности
  - type: входит_в
    target: [Организация, Подразделение, Группировка]
    description: Членство / служба
  - type: подчиняется
    target: [Персона]
    description: Прямой начальник
  - type: участвует_в
    target: [Событие, Операция, Дело]
  - type: связан_с
    target: [Персона, Организация]
    description: Установленная связь (с типом и достоверностью)
  - type: финансирует
    target: [Персона, Организация]
  - type: находится_в
    target: [Локация, Объект]
  - type: управляет
    target: [БПЛА, Ударный_БПЛА, НРТК, НБЭК, АНПА, Боевая_платформа]
  - type: автор
    target: [Документ, Разведсводка]

1.2 Организация

type: Организация
description: Любая организация - подразделение, компания, группировка, ведомство, НКО
classification_default: О
extends: null
properties:
  - name: название
    type: string(500)
    required: true
    indexed: true
  - name: название_сокращённое
    type: string(100)
    required: false
    indexed: true
  - name: тип
    type: enum(воинская_часть, ведомство, компания, НКО, группировка, партия, СМИ, террористическая, иное)
    required: true
    indexed: true
  - name: страна
    type: string(3)
    required: false
    indexed: true
    description: Код страны ISO 3166-1 alpha-3
  - name: ИНН
    type: string(20)
    required: false
    indexed: true
    unique: true
  - name: ОГРН
    type: string(20)
    required: false
    unique: true
  - name: юридический_адрес
    type: string(500)
    required: false
  - name: фактический_адрес
    type: string(500)
    required: false
  - name: координаты
    type: geometry.point
    required: false
    indexed: true
    description: Координаты штаб-квартиры / основного объекта
  - name: численность
    type: int
    required: false
    description: Общая численность персонала
  - name: численность_штат
    type: int
    required: false
    description: Штатная численность (для воинских подразделений)
  - name: вышестоящая
    type: reference(Организация)
    required: false
    indexed: true
    description: Вышестоящая организация в иерархии
  - name: статус
    type: enum(действующая, ликвидирована, реорганизована, запрещена, неизвестно)
    required: false
    indexed: true
  - name: дата_создания
    type: date
    required: false
  - name: дата_ликвидации
    type: date
    required: false
  - name: контакты
    type: json
    required: false
  - name: описание
    type: text
    required: false
  - name: принадлежность
    type: enum(свой, противник, нейтральный, неизвестный)
    required: false
    indexed: true
    default: неизвестный
  - name: логотип
    type: binary
    required: false
links:
  - type: подчиняется
    target: [Организация]
    description: Иерархия подчинённости
  - type: входит_в
    target: [Организация]
    description: Структурная принадлежность
  - type: финансирует
    target: [Организация, Персона]
  - type: владеет
    target: [Транспорт, Объект]
  - type: расположена_в
    target: [Локация, Объект]
  - type: связана_с
    target: [Организация, Персона]

1.3 Транспорт

type: Транспорт
description: Любое транспортное средство - автомобиль, танк, самолёт, корабль, БПЛА
classification_default: О
extends: null
properties:
  - name: тип
    type: enum(легковой, грузовой, автобус, бронетехника, артиллерия, самолёт, вертолёт, БПЛА, корабль, катер, подводная_лодка, ж/д, мотоцикл, иное)
    required: true
    indexed: true
  - name: подтип
    type: string(100)
    required: false
    indexed: true
    description: "Уточнение типа: танк, БМП, БТР, истребитель, бомбардировщик..."
  - name: модель
    type: string(200)
    required: false
    indexed: true
    description: "Марка и модель: Т-90М, Ми-28Н, КамАЗ-5350"
  - name: госномер
    type: string(50)
    required: false
    indexed: true
    description: Государственный регистрационный номер
  - name: бортовой_номер
    type: string(50)
    required: false
    indexed: true
    description: Бортовой / тактический номер
  - name: VIN
    type: string(50)
    required: false
    unique: true
  - name: год_выпуска
    type: int
    required: false
  - name: цвет
    type: string(50)
    required: false
  - name: принадлежность
    type: enum(свой, противник, нейтральный, неизвестный)
    required: false
    indexed: true
    default: неизвестный
  - name: статус
    type: enum(исправен, повреждён, уничтожен, на_обслуживании, на_хранении, утрачен, захвачен, неизвестно)
    required: false
    indexed: true
  - name: координаты
    type: geometry.point
    required: false
    indexed: true
  - name: координаты_время
    type: datetime
    required: false
  - name: курс
    type: float
    required: false
    description: Курс в градусах (0-360)
  - name: скорость
    type: float
    required: false
    description: Скорость в км/ч
  - name: высота
    type: float
    required: false
    description: Высота в метрах (для воздушных/подводных)
  - name: ЭПР
    type: float
    required: false
    description: Эффективная площадь рассеивания (м2)
  - name: владелец
    type: reference(Персона)
    required: false
  - name: подразделение
    type: reference(Организация)
    required: false
    indexed: true
  - name: описание
    type: text
    required: false
  - name: фото
    type: list(binary)
    required: false
links:
  - type: принадлежит
    target: [Персона, Организация, Подразделение]
  - type: находится_в
    target: [Локация]
  - type: перемещается_по
    target: [Маршрут_движения]
  - type: участвует_в
    target: [Событие, Операция]
  - type: перевозит
    target: [Персона, Груз]

1.4 Объект

type: Объект
description: Здание, сооружение, инфраструктурный объект, любой физический объект
classification_default: О
extends: null
properties:
  - name: название
    type: string(500)
    required: false
    indexed: true
  - name: тип
    type: enum(здание, сооружение, мост, дорога, аэродром, порт, электростанция, нефтебаза, склад, завод, казарма, КПП, антенна, иное)
    required: true
    indexed: true
  - name: подтип
    type: string(100)
    required: false
    indexed: true
  - name: адрес
    type: string(500)
    required: false
  - name: координаты
    type: geometry.point
    required: false
    indexed: true
  - name: контур
    type: geometry.polygon
    required: false
    description: Контур объекта на карте
  - name: высота_м
    type: float
    required: false
    description: Высота сооружения в метрах
  - name: этажей
    type: int
    required: false
  - name: площадь_м2
    type: float
    required: false
  - name: материал
    type: string(100)
    required: false
    description: Основной материал конструкции
  - name: статус
    type: enum(действующий, строится, заброшен, разрушен, повреждён, неизвестно)
    required: false
    indexed: true
  - name: степень_разрушения
    type: enum(нет, незначительная, частичная, значительная, полная)
    required: false
  - name: принадлежность
    type: enum(свой, противник, нейтральный, неизвестный)
    required: false
    indexed: true
    default: неизвестный
  - name: защищённый_МГП
    type: boolean
    required: false
    default: false
    indexed: true
    description: Объект, защищённый международным гуманитарным правом
  - name: тип_защиты_МГП
    type: enum(медицинский, культурный, религиозный, образовательный, гражданский, дипломатический, нет)
    required: false
  - name: владелец
    type: reference(Организация)
    required: false
  - name: описание
    type: text
    required: false
  - name: фото
    type: list(binary)
    required: false
links:
  - type: принадлежит
    target: [Персона, Организация]
  - type: находится_в
    target: [Локация]
  - type: связан_с
    target: [Объект, Событие]

1.5 Локация

type: Локация
description: Географическое место - точка, район, маршрут, зона
classification_default: О
extends: null
properties:
  - name: название
    type: string(500)
    required: false
    indexed: true
  - name: тип
    type: enum(точка, район, город, село, регион, страна, водоём, гора, лес, дорога, мост, перевал, зона, маршрут, иное)
    required: true
    indexed: true
  - name: геометрия_точка
    type: geometry.point
    required: false
    indexed: true
    description: Для точечных локаций
  - name: геометрия_полигон
    type: geometry.polygon
    required: false
    indexed: true
    description: Для площадных локаций (районы, зоны)
  - name: геометрия_линия
    type: geometry.linestring
    required: false
    indexed: true
    description: Для линейных локаций (маршруты, дороги)
  - name: высота_м
    type: float
    required: false
    description: Высота над уровнем моря
  - name: адрес
    type: string(500)
    required: false
  - name: МГРС
    type: string(30)
    required: false
    indexed: true
    description: Координаты в системе МГРС (MGRS)
  - name: СК42
    type: json
    required: false
    description: "Координаты СК-42: {X, Y, зона}"
  - name: описание
    type: text
    required: false
  - name: проходимость
    type: enum(легко_проходимо, проходимо, труднопроходимо, непроходимо, неизвестно)
    required: false
  - name: рельеф
    type: enum(равнина, холмистая, горная, болотистая, лесистая, городская, пустыня, водная, иное)
    required: false
  - name: населённость
    type: enum(ненаселено, малонаселено, среднее, густонаселено, мегаполис)
    required: false
links:
  - type: содержит
    target: [Объект, Локация]
  - type: граничит_с
    target: [Локация]
  - type: часть_от
    target: [Локация]

1.6 Событие

type: Событие
description: Любое происшествие - бой, ДТП, пожар, митинг, обнаружение, обстрел
classification_default: ДСП
extends: null
properties:
  - name: название
    type: string(500)
    required: false
    indexed: true
  - name: тип
    type: enum(бой, обстрел, авиаудар, обнаружение, перехват, ДТП, пожар, взрыв, митинг, теракт, арест, эвакуация, переговоры, переход_границы, диверсия, иное)
    required: true
    indexed: true
  - name: подтип
    type: string(100)
    required: false
  - name: время_начала
    type: datetime
    required: true
    indexed: true
  - name: время_окончания
    type: datetime
    required: false
    indexed: true
  - name: длительность
    type: duration
    required: false
    description: Рассчитывается автоматически при наличии начала и конца
  - name: координаты
    type: geometry.point
    required: false
    indexed: true
  - name: зона
    type: geometry.polygon
    required: false
    description: Зона охвата события
  - name: описание
    type: text
    required: false
  - name: результат
    type: text
    required: false
  - name: значимость
    type: enum(критическая, высокая, средняя, низкая, информационная)
    required: false
    indexed: true
  - name: подтверждено
    type: boolean
    required: false
    default: false
    indexed: true
  - name: количество_участников
    type: int
    required: false
  - name: потери_свои
    type: json
    required: false
    description: "{убитые, раненые, пропавшие, техника: [{тип, количество}]}"
  - name: потери_противника
    type: json
    required: false
    description: "Аналогично, оценочно"
  - name: источник_информации
    type: string(255)
    required: false
  - name: достоверность
    type: float
    required: false
    description: "0.0 - 1.0"
links:
  - type: участвует_в
    target: [Персона, Подразделение, Организация]
    reverse: true
  - type: произошло_в
    target: [Локация, Объект]
  - type: связано_с
    target: [Событие, Операция]
  - type: зафиксировано
    target: [Сенсор, Медиа]
    reverse: true
  - type: описано_в
    target: [Документ, Разведсводка]

1.7 Документ

type: Документ
description: Любой документ - отчёт, разведсводка, протокол, приказ, декларация
classification_default: ДСП
extends: null
properties:
  - name: название
    type: string(1000)
    required: true
    indexed: true
  - name: тип
    type: enum(приказ, распоряжение, донесение, разведсводка, протокол, справка, отчёт, акт, декларация, доклад, рапорт, план, инструкция, иное)
    required: true
    indexed: true
  - name: номер
    type: string(100)
    required: false
    indexed: true
    description: Регистрационный номер документа
  - name: дата
    type: date
    required: false
    indexed: true
  - name: DTG
    type: datetime
    required: false
    description: Дата-время группа (военный формат)
  - name: автор
    type: reference(Персона)
    required: false
    indexed: true
  - name: подразделение_автор
    type: reference(Организация)
    required: false
    indexed: true
  - name: содержание
    type: text
    required: false
    description: Полный текст документа
  - name: содержание_структурированное
    type: json
    required: false
    description: Структурированное содержание (для формализованных документов)
  - name: аннотация
    type: text
    required: false
    description: Краткое содержание (может генерироваться LLM)
  - name: формат_файла
    type: string(20)
    required: false
    description: "Формат: pdf, docx, odt, txt"
  - name: файл
    type: binary
    required: false
  - name: язык
    type: string(3)
    required: false
    default: rus
    description: Код языка ISO 639-3
  - name: статус
    type: enum(черновик, на_согласовании, утверждён, отменён, устарел)
    required: false
    indexed: true
  - name: адресаты
    type: list(reference(Организация))
    required: false
  - name: ссылки_на_документы
    type: list(reference(Документ))
    required: false
    description: Документы, на которые ссылается
links:
  - type: автор
    target: [Персона]
    reverse: true
  - type: касается
    target: [Персона, Организация, Событие, Объект, Операция]
  - type: ссылается_на
    target: [Документ]
  - type: приложение_к
    target: [Документ]

1.8 Сенсор

type: Сенсор
description: Радар, камера, датчик, пеленгатор, SIGINT-приёмник, метеостанция
classification_default: ДСП
extends: null
properties:
  - name: название
    type: string(255)
    required: false
    indexed: true
  - name: тип
    type: enum(РЛС, камера_видео, камера_ИК, тепловизор, пеленгатор, SIGINT, гидроакустический, сейсмический, химический, радиационный, метеостанция, лидар, SAR, ALPR, иное)
    required: true
    indexed: true
  - name: модель
    type: string(200)
    required: false
    indexed: true
  - name: координаты
    type: geometry.point
    required: true
    indexed: true
  - name: высота_установки_м
    type: float
    required: false
  - name: азимут_начало
    type: float
    required: false
    description: Начало сектора обзора (градусы, 0-360)
  - name: азимут_конец
    type: float
    required: false
    description: Конец сектора обзора
  - name: дальность_обнаружения_м
    type: float
    required: false
    description: Максимальная дальность обнаружения (метры)
  - name: зона_покрытия
    type: geometry.polygon
    required: false
    description: Зона покрытия (полигон)
  - name: статус
    type: enum(активен, неактивен, обслуживание, повреждён, уничтожен, неизвестно)
    required: true
    indexed: true
  - name: подразделение
    type: reference(Организация)
    required: false
    indexed: true
  - name: платформа
    type: reference(Транспорт)
    required: false
    description: Если установлен на транспорт/БПЛА
  - name: частотный_диапазон
    type: string(100)
    required: false
    description: "Рабочий диапазон: L, S, C, X, Ku, Ka..."
  - name: поток_данных_url
    type: string(500)
    required: false
    description: URL видеопотока / потока данных
  - name: интервал_обновления_сек
    type: float
    required: false
    description: Период обновления данных (секунды)
  - name: последнее_обновление
    type: datetime
    required: false
links:
  - type: обнаружил
    target: [Цель, Персона, Транспорт, Объект, Событие]
  - type: установлен_на
    target: [Транспорт, Объект, БПЛА, НРТК, НБЭК, АНПА]
  - type: принадлежит
    target: [Организация, Подразделение]
  - type: покрывает
    target: [Локация]

1.9 Медиа

type: Медиа
description: Мультимедийный файл с привязкой к объекту - фото, видео, аудио
classification_default: ДСП
extends: null
properties:
  - name: тип
    type: enum(фото, видео, аудио, панорама_360, 3d_модель, тепловой_снимок, спутниковый_снимок, SAR_снимок, иное)
    required: true
    indexed: true
  - name: название
    type: string(500)
    required: false
  - name: формат
    type: string(20)
    required: true
    description: "Формат: jpg, png, mp4, mp3, wav, tiff..."
  - name: размер_байт
    type: int
    required: false
  - name: разрешение
    type: string(20)
    required: false
    description: "Разрешение: 1920x1080, 4096x4096..."
  - name: длительность
    type: duration
    required: false
    description: Для видео и аудио
  - name: время_съёмки
    type: datetime
    required: false
    indexed: true
  - name: координаты
    type: geometry.point
    required: false
    indexed: true
    description: Координаты точки съёмки
  - name: направление_съёмки
    type: float
    required: false
    description: Азимут направления камеры (градусы)
  - name: высота_съёмки_м
    type: float
    required: false
  - name: источник
    type: reference(Сенсор)
    required: false
    description: Датчик, сделавший снимок
  - name: файл
    type: binary
    required: true
  - name: миниатюра
    type: binary
    required: false
  - name: EXIF
    type: json
    required: false
    description: Метаданные EXIF/XMP
  - name: аннотации
    type: json
    required: false
    description: "Результаты CV: [{bbox, class, confidence, label}]"
  - name: транскрипция
    type: text
    required: false
    description: Транскрипция аудио (ASR)
  - name: GSD_м
    type: float
    required: false
    description: Ground Sample Distance (м/пиксель) для спутниковых снимков
links:
  - type: привязан_к
    target: [Персона, Транспорт, Объект, Событие, Цель, Локация]
  - type: сделан
    target: [Сенсор, БПЛА]
    reverse: true
  - type: содержит_распознанное
    target: [Персона, Транспорт]

1.10 Коммуникация

type: Коммуникация
description: Перехваченная или зафиксированная коммуникация - звонок, сообщение, радиоперехват
classification_default: С
extends: null
properties:
  - name: тип
    type: enum(телефонный_звонок, SMS, мессенджер, email, радиоперехват, видеозвонок, курьер, почта, иное)
    required: true
    indexed: true
  - name: время_начала
    type: datetime
    required: true
    indexed: true
  - name: время_окончания
    type: datetime
    required: false
  - name: длительность
    type: duration
    required: false
  - name: отправитель
    type: reference(Персона)
    required: false
    indexed: true
  - name: получатель
    type: list(reference(Персона))
    required: false
  - name: отправитель_идентификатор
    type: string(255)
    required: false
    indexed: true
    description: "Номер телефона, email, ник, частота..."
  - name: получатель_идентификатор
    type: list(string(255))
    required: false
  - name: содержание_текст
    type: text
    required: false
    description: Текстовое содержание или расшифровка
  - name: содержание_файл
    type: binary
    required: false
    description: Аудиозапись, файл
  - name: язык
    type: string(3)
    required: false
  - name: частота_МГц
    type: float
    required: false
    description: Частота радиоканала (для радиоперехвата)
  - name: канал
    type: string(100)
    required: false
    description: Наименование канала связи
  - name: зашифровано
    type: boolean
    required: false
    default: false
  - name: дешифровано
    type: boolean
    required: false
    default: false
  - name: пеленг
    type: float
    required: false
    description: Пеленг на источник (градусы)
  - name: координаты_источника
    type: geometry.point
    required: false
    indexed: true
  - name: ключевые_слова
    type: list(string(100))
    required: false
    indexed: true
    description: Выделенные ключевые слова / сущности (NER)
  - name: sentiment
    type: enum(позитивный, нейтральный, негативный, тревожный, неопределённый)
    required: false
  - name: перехвачено_средством
    type: reference(Сенсор)
    required: false
links:
  - type: участник
    target: [Персона]
  - type: упоминает
    target: [Персона, Организация, Объект, Событие, Локация]
  - type: перехвачено
    target: [Сенсор]
    reverse: true
  - type: связано_с
    target: [Коммуникация, Дело, Событие]

2. Военные сущности

2.1 Цель

type: Цель
description: Объект для поражения или наблюдения, обнаруженный средствами разведки
classification_default: С
extends: Объект
properties:
  - name: номер_цели
    type: string(20)
    required: true
    indexed: true
    unique: true
    description: "Тактический номер цели: Ц-0142"
  - name: тип_цели
    type: enum(точечная, площадная, линейная, подвижная)
    required: true
    indexed: true
  - name: категория
    type: enum(бронетехника, артиллерия, ПВО, пехота, КП, склад, коммуникации, транспорт, БПЛА, фортификация, РЛС, РЭБ, иное)
    required: true
    indexed: true
  - name: подкатегория
    type: string(100)
    required: false
    description: "Уточнение: танк_Т-72, ЗРК_Бук-М2..."
  - name: приоритет
    type: enum(критический, высокий, средний, низкий)
    required: true
    indexed: true
  - name: статус
    type: enum(обнаружена, подтверждена, назначена, поражена, уничтожена, потеряна, отклонена)
    required: true
    indexed: true
  - name: координаты
    type: geometry.point
    required: true
    indexed: true
  - name: координаты_МГРС
    type: string(30)
    required: false
  - name: высота_м
    type: float
    required: false
  - name: размеры_м
    type: json
    required: false
    description: "{ширина, глубина} для площадных целей"
  - name: курс
    type: float
    required: false
    description: Курс для подвижных целей (градусы)
  - name: скорость_кмч
    type: float
    required: false
    description: Скорость для подвижных целей
  - name: характер
    type: enum(открытая, укрытая, бронированная, заглублённая)
    required: false
  - name: степень_укрытия
    type: enum(не_укрыта, частично, полностью)
    required: false
  - name: время_обнаружения
    type: datetime
    required: true
    indexed: true
  - name: время_подтверждения
    type: datetime
    required: false
  - name: время_актуализации
    type: datetime
    required: false
    description: Последнее подтверждение актуальности координат
  - name: источник_обнаружения
    type: enum(БПЛА, РЛС, визуально, SIGINT, спутник, агентурный, OSINT, иное)
    required: false
    indexed: true
  - name: достоверность
    type: float
    required: false
    description: "0.0 - 1.0"
  - name: количество_источников
    type: int
    required: false
    description: Количество независимых источников, подтвердивших цель
  - name: принадлежность
    type: enum(противник, неизвестный)
    required: true
    indexed: true
    default: неизвестный
  - name: BDA
    type: json
    required: false
    description: "Battle Damage Assessment: {оценка_ущерба, фото, время_оценки}"
  - name: подтверждено_бпла
    type: boolean
    required: false
    default: false
links:
  - type: обнаружена
    target: [Сенсор, БПЛА]
    reverse: true
  - type: назначена_на
    target: [Средство_поражения, Огневое_средство, Ударный_БПЛА]
    reverse: true
  - type: часть_операции
    target: [Операция]
  - type: в_районе
    target: [Локация]

2.2 Средство_поражения

type: Средство_поражения
description: Оружие или система вооружения - автономная единица, способная поражать цели
classification_default: С
extends: null
properties:
  - name: тип
    type: enum(ствольная_артиллерия, РСЗО, ПТРК, ЗРК, миномёт, стрелковое, гранатомёт, ТР, КР, иное)
    required: true
    indexed: true
  - name: модель
    type: string(200)
    required: false
    indexed: true
  - name: калибр
    type: string(30)
    required: false
    description: "Калибр: 152 мм, 122 мм, 30 мм..."
  - name: дальность_мин_м
    type: float
    required: false
  - name: дальность_макс_м
    type: float
    required: false
  - name: боекомплект
    type: json
    required: false
    description: "По типам: {ОФС: 24, кумулятивный: 8, дымовой: 4, ...}"
  - name: боекомплект_процент
    type: float
    required: false
    indexed: true
    description: "Процент от полного БК: 0-100"
  - name: готовность
    type: enum(боеготово, в_пути, на_позиции, развёрнуто, неисправно, обслуживание)
    required: true
    indexed: true
  - name: координаты
    type: geometry.point
    required: false
    indexed: true
  - name: подразделение
    type: reference(Подразделение)
    required: false
    indexed: true
  - name: расчёт
    type: int
    required: false
    description: Количество человек расчёта
  - name: износ_ствола_процент
    type: float
    required: false
    description: "Износ ствола (0-100%)"
  - name: время_развёртывания
    type: duration
    required: false
    description: Время от марша до готовности к стрельбе
  - name: скорострельность
    type: float
    required: false
    description: Выстрелов в минуту
links:
  - type: назначено_на
    target: [Цель]
  - type: принадлежит
    target: [Подразделение]
  - type: расположено_на
    target: [Позиция]

2.3 Подразделение

type: Подразделение
description: Воинское подразделение любого уровня - от отделения до фронта
classification_default: С
extends: Организация
properties:
  - name: уровень
    type: enum(отделение, взвод, рота, батальон, дивизион, полк, бригада, дивизия, корпус, армия, фронт, иное)
    required: true
    indexed: true
  - name: род_войск
    type: enum(мотострелковые, танковые, артиллерия, ПВО, инженерные, связь, РЭБ, разведка, РХБЗ, тыл, медицинские, десантные, морская_пехота, спецназ, БПЛА, иное)
    required: true
    indexed: true
  - name: условный_номер
    type: string(50)
    required: false
    indexed: true
    description: Войсковая часть (в/ч) номер
  - name: позывной
    type: string(50)
    required: false
    indexed: true
  - name: численность_штатная
    type: int
    required: false
  - name: численность_списочная
    type: int
    required: false
    description: Фактическая численность
  - name: укомплектованность_процент
    type: float
    required: false
    indexed: true
    description: "Списочная / штатная * 100"
  - name: боеготовность
    type: enum(полная, ограниченная, небоеспособно, формируется, расформировано)
    required: false
    indexed: true
  - name: дислокация
    type: geometry.point
    required: false
    indexed: true
    description: Центр масс расположения
  - name: район_действий
    type: geometry.polygon
    required: false
    description: Полигон зоны ответственности
  - name: вышестоящее
    type: reference(Подразделение)
    required: false
    indexed: true
  - name: командир
    type: reference(Персона)
    required: false
  - name: начальник_штаба
    type: reference(Персона)
    required: false
  - name: техника
    type: json
    required: false
    description: "{танки: {штат: 10, наличие: 8}, БМП: {штат: 30, наличие: 25}, ...}"
  - name: боеприпасы_процент
    type: float
    required: false
    description: "Обеспеченность боеприпасами (% от нормы)"
  - name: ГСМ_процент
    type: float
    required: false
    description: "Обеспеченность ГСМ (% от нормы)"
  - name: продовольствие_процент
    type: float
    required: false
  - name: задача_текущая
    type: text
    required: false
    description: Краткая формулировка текущей боевой задачи
  - name: задача_выполнение_процент
    type: float
    required: false
  - name: потери_за_сутки
    type: json
    required: false
    description: "{убитые, раненые, пропавшие, техника}"
links:
  - type: подчиняется
    target: [Подразделение]
  - type: приданно_к
    target: [Подразделение]
    description: Временное подчинение
  - type: поддерживает
    target: [Подразделение]
  - type: развёрнуто_в
    target: [Локация]
  - type: выполняет
    target: [Боевая_задача]
  - type: участвует_в
    target: [Операция]
  - type: имеет_в_составе
    target: [Средство_поражения, Боевая_платформа, БПЛА, Сенсор, Средство_РЭБ, Средство_ПВО, НРТК]

2.4 Боевой_порядок

type: Боевой_порядок
description: Оперативное построение войск - схема расположения подразделений в бою
classification_default: С
extends: null
properties:
  - name: название
    type: string(255)
    required: false
  - name: подразделение
    type: reference(Подразделение)
    required: true
    indexed: true
    description: К какому подразделению относится построение
  - name: тип_действий
    type: enum(наступление, оборона, марш, отход, охранение, иное)
    required: true
    indexed: true
  - name: эшелоны
    type: json
    required: false
    description: "[{номер_эшелона, подразделения: [ref], задача}]"
  - name: направление_главного_удара
    type: geometry.linestring
    required: false
  - name: передний_край
    type: geometry.linestring
    required: false
  - name: зоны_ответственности
    type: json
    required: false
    description: "[{подразделение: ref, полигон: geometry.polygon}]"
  - name: рубежи
    type: list(reference(Рубеж))
    required: false
  - name: время_актуальности
    type: datetime
    required: true
  - name: статус
    type: enum(планируемый, действующий, выполнен, отменён)
    required: false
    indexed: true
  - name: графическое_решение
    type: json
    required: false
    description: Графические элементы на карте (стрелки, линии, условные знаки)
links:
  - type: включает
    target: [Подразделение]
  - type: определяет
    target: [Рубеж]
  - type: для_операции
    target: [Операция]

2.5 Маршрут_движения

type: Маршрут_движения
description: Маршрут перемещения сил - марш, патруль, разведка, колонна
classification_default: С
extends: null
properties:
  - name: название
    type: string(255)
    required: false
  - name: тип
    type: enum(марш, патруль, разведка, снабжение, эвакуация, отход, колонна, иное)
    required: true
    indexed: true
  - name: маршрут
    type: geometry.linestring
    required: true
    indexed: true
  - name: точки
    type: json
    required: false
    description: "[{порядковый_номер, координаты, время_прохождения_план, время_прохождения_факт, название}]"
  - name: расстояние_км
    type: float
    required: false
  - name: время_начала_план
    type: datetime
    required: false
  - name: время_окончания_план
    type: datetime
    required: false
  - name: время_начала_факт
    type: datetime
    required: false
  - name: время_окончания_факт
    type: datetime
    required: false
  - name: скорость_средняя_кмч
    type: float
    required: false
  - name: подразделение
    type: reference(Подразделение)
    required: false
    indexed: true
  - name: транспорт
    type: list(reference(Транспорт))
    required: false
  - name: статус
    type: enum(запланирован, выполняется, завершён, отменён, приостановлен)
    required: false
    indexed: true
  - name: угрозы
    type: json
    required: false
    description: "[{тип, координаты, описание}] - минные поля, засады, обстрелы"
links:
  - type: проходит_через
    target: [Локация]
  - type: выполняется
    target: [Подразделение, Транспорт]
    reverse: true
  - type: пересекает
    target: [Минное_поле, Зона_подавления, Зона_запрета_огня]

2.6 Зона_ПВО

type: Зона_ПВО
description: Зона действия системы ПВО - своя или противника
classification_default: С
extends: null
properties:
  - name: название
    type: string(255)
    required: false
  - name: тип_ЗРК
    type: string(100)
    required: false
    indexed: true
    description: "Тип системы: С-400, Бук-М3, Тор-М2..."
  - name: принадлежность
    type: enum(свой, противник, неизвестный)
    required: true
    indexed: true
  - name: центр
    type: geometry.point
    required: true
    indexed: true
  - name: радиус_макс_м
    type: float
    required: true
    description: Максимальный радиус поражения (метры)
  - name: радиус_мин_м
    type: float
    required: false
    description: Минимальный радиус (мёртвая зона)
  - name: высота_макс_м
    type: float
    required: false
    description: Максимальная высота поражения
  - name: высота_мин_м
    type: float
    required: false
    description: Минимальная высота поражения
  - name: зона_поражения
    type: geometry.polygon3d
    required: false
    description: 3D-полигон зоны поражения
  - name: мёртвые_зоны
    type: list(geometry.polygon)
    required: false
    description: Зоны, не покрываемые данным ЗРК (рельеф, мёртвые секторы)
  - name: средства
    type: list(reference(Средство_ПВО))
    required: false
  - name: статус
    type: enum(активна, неактивна, предполагаемая, уничтожена)
    required: false
    indexed: true
  - name: перекрытие_с
    type: list(reference(Зона_ПВО))
    required: false
    description: Зоны ПВО с перекрывающимся покрытием
links:
  - type: контролирует
    target: [Локация]
  - type: принадлежит
    target: [Подразделение]
  - type: включает
    target: [Средство_ПВО]

2.7 Зона_РЭБ

type: Зона_РЭБ
description: Зона радиоэлектронного подавления - активная или планируемая
classification_default: С
extends: null
properties:
  - name: название
    type: string(255)
    required: false
  - name: тип_воздействия
    type: enum(подавление_БПЛА, подавление_связи, подавление_навигации, подавление_РЛС, комплексное, иное)
    required: true
    indexed: true
  - name: центр
    type: geometry.point
    required: true
    indexed: true
  - name: радиус_м
    type: float
    required: false
  - name: зона
    type: geometry.polygon
    required: false
  - name: частотный_диапазон
    type: list(string(50))
    required: false
    description: "Подавляемые диапазоны: [2.4GHz, 5.8GHz, 900MHz, L1/L2]"
  - name: средство
    type: reference(Средство_РЭБ)
    required: false
    indexed: true
  - name: статус
    type: enum(активна, неактивна, планируемая, свёрнута)
    required: true
    indexed: true
  - name: влияние_на_свои
    type: json
    required: false
    description: "Побочное влияние: {GPS_деградация: true, связь_деградация: [частоты]}"
  - name: принадлежность
    type: enum(свой, противник, неизвестный)
    required: true
    indexed: true
links:
  - type: создана
    target: [Средство_РЭБ]
    reverse: true
  - type: контролирует
    target: [Локация]
  - type: влияет_на
    target: [Маршрут_движения, Подразделение]

2.8 Операция

type: Операция
description: Военная операция любого масштаба - от батальонного боя до стратегической операции
classification_default: СС
extends: null
properties:
  - name: название
    type: string(255)
    required: true
    indexed: true
  - name: кодовое_название
    type: string(100)
    required: false
    indexed: true
  - name: уровень
    type: enum(тактический, оперативно_тактический, оперативный, стратегический)
    required: true
    indexed: true
  - name: тип
    type: enum(наступательная, оборонительная, специальная, разведывательная, гуманитарная, контртеррористическая, иное)
    required: true
    indexed: true
  - name: фаза
    type: enum(планирование, подготовка, выполнение, завершение, оценка)
    required: true
    indexed: true
  - name: замысел
    type: text
    required: false
    description: Замысел операции (свободный текст)
  - name: цель_операции
    type: text
    required: false
  - name: время_начала_план
    type: datetime
    required: false
  - name: время_окончания_план
    type: datetime
    required: false
  - name: время_начала_факт
    type: datetime
    required: false
  - name: время_окончания_факт
    type: datetime
    required: false
  - name: район
    type: geometry.polygon
    required: false
    description: Район проведения операции
  - name: руководитель
    type: reference(Персона)
    required: false
  - name: штаб
    type: reference(Подразделение)
    required: false
  - name: статус
    type: enum(планируется, подготовка, выполняется, приостановлена, завершена, отменена)
    required: false
    indexed: true
  - name: результат
    type: enum(успешно, частично_успешно, не_выполнена, отменена)
    required: false
  - name: этапы
    type: json
    required: false
    description: "[{номер, название, начало_план, конец_план, статус}]"
  - name: приказ
    type: reference(Боевой_приказ)
    required: false
links:
  - type: включает_подразделения
    target: [Подразделение]
  - type: включает_задачи
    target: [Боевая_задача, Огневая_задача]
  - type: в_районе
    target: [Локация]
  - type: вышестоящая
    target: [Операция]
  - type: описана_в
    target: [Документ, Боевой_приказ]

2.9 Разведсводка

type: Разведсводка
description: Разведывательная информация - донесение, оценка обстановки
classification_default: С
extends: Документ
properties:
  - name: тип_разведки
    type: enum(агентурная, техническая, радиоэлектронная, воздушная, космическая, визуальная, OSINT, иное)
    required: true
    indexed: true
  - name: район_разведки
    type: geometry.polygon
    required: false
  - name: источник
    type: string(255)
    required: false
    description: Обозначение источника (позывной, индекс датчика)
  - name: достоверность_источника
    type: enum(A, B, C, D, E, F)
    required: false
    description: "A - полностью надёжный ... F - не поддаётся оценке"
  - name: достоверность_информации
    type: enum(1, 2, 3, 4, 5, 6)
    required: false
    description: "1 - подтверждено ... 6 - не поддаётся оценке"
  - name: время_актуальности
    type: datetime
    required: false
    description: Время, на которое актуальна информация
  - name: обнаруженные_цели
    type: list(reference(Цель))
    required: false
  - name: обнаруженные_подразделения
    type: list(reference(Подразделение))
    required: false
  - name: оценка_намерений
    type: text
    required: false
    description: Оценка вероятных намерений противника
links:
  - type: касается
    target: [Цель, Подразделение, Персона, Объект]
  - type: обнаружено_источником
    target: [Сенсор, БПЛА]
  - type: для_операции
    target: [Операция]

2.10 Огневая_задача

type: Огневая_задача
description: Задача на поражение конкретной цели конкретным огневым средством
classification_default: С
extends: null
properties:
  - name: номер
    type: string(30)
    required: true
    indexed: true
    unique: true
  - name: цель
    type: reference(Цель)
    required: true
    indexed: true
  - name: средство
    type: reference(Огневое_средство)
    required: false
    indexed: true
  - name: средство_поражения
    type: reference(Средство_поражения)
    required: false
  - name: тип_боеприпаса
    type: string(100)
    required: false
    description: "ОФС, кумулятивный, кассетный, Краснополь, дымовой..."
  - name: расход
    type: int
    required: false
    description: Плановый расход боеприпасов
  - name: расход_фактический
    type: int
    required: false
  - name: способ_стрельбы
    type: enum(беглый_огонь, методический, залп, пристрелка, огневой_налёт, иное)
    required: false
  - name: установки_стрельбы
    type: json
    required: false
    description: "{прицел, угломер, заряд, взрыватель}"
  - name: поправки
    type: json
    required: false
    description: "{метео, износ_ствола, деривация, температура_заряда}"
  - name: тип_задачи
    type: enum(подавление, уничтожение, ослепление, освещение, задымление)
    required: true
  - name: статус
    type: enum(создана, назначена, выполняется, выполнена, отменена)
    required: true
    indexed: true
  - name: результат
    type: enum(поражена, уничтожена, промах, корректировка, неизвестно)
    required: false
  - name: время_команды
    type: datetime
    required: false
  - name: время_открытия_огня
    type: datetime
    required: false
  - name: время_завершения
    type: datetime
    required: false
  - name: оператор
    type: reference(Персона)
    required: false
    description: Кто утвердил задачу
  - name: наблюдатель
    type: reference(Персона)
    required: false
    description: Кто корректирует огонь
  - name: FSCM_проверка
    type: json
    required: false
    description: "Результаты проверок FSCM: {зона_запрета: false, своих_в_радиусе: false, МГП: false}"
links:
  - type: на_цель
    target: [Цель]
  - type: средством
    target: [Огневое_средство, Средство_поражения]
  - type: часть_операции
    target: [Операция]
  - type: утверждена
    target: [Персона]
    reverse: true

2.11 Рубеж

type: Рубеж
description: Тактический рубеж - передний край, рубеж развёртывания, перехвата, обороны
classification_default: С
extends: null
properties:
  - name: название
    type: string(255)
    required: false
    indexed: true
    description: "Наименование: Рубеж Альфа, ПК 1-го МСБ..."
  - name: тип
    type: enum(передний_край, развёртывания, перехвата, обороны, рубеж_огня, рубеж_безопасного_удаления, рубеж_спешивания, рубеж_атаки, рубеж_регулирования, минирования, иное)
    required: true
    indexed: true
  - name: геометрия
    type: geometry.linestring
    required: true
    indexed: true
  - name: время_выхода_план
    type: datetime
    required: false
    description: Плановое время выхода на рубеж
  - name: время_выхода_факт
    type: datetime
    required: false
  - name: подразделение
    type: reference(Подразделение)
    required: false
    indexed: true
  - name: статус
    type: enum(планируемый, занят, оставлен)
    required: false
    indexed: true
links:
  - type: принадлежит
    target: [Боевой_порядок, Операция]
  - type: занимает
    target: [Подразделение]
    reverse: true

2.12 БПЛА

type: БПЛА
description: Беспилотный летательный аппарат - разведывательный, ударный, ретрансляционный
classification_default: С
extends: Транспорт
properties:
  - name: класс
    type: enum(мини, малый, средний, тяжёлый, стратегический, FPV, барражирующий)
    required: true
    indexed: true
  - name: назначение
    type: enum(разведка, ударный, разведывательно_ударный, ретранслятор, РЭБ, мишень, транспорт, иное)
    required: true
    indexed: true
  - name: оператор
    type: reference(Персона)
    required: false
    indexed: true
    description: Оператор / расчёт
  - name: подразделение
    type: reference(Подразделение)
    required: false
    indexed: true
  - name: статус_полёта
    type: enum(на_земле, взлёт, в_полёте, зависание, посадка, потерян, уничтожен)
    required: true
    indexed: true
  - name: режим
    type: enum(ручной, waypoint, зональный, целевой, роевой, RTB, аварийный)
    required: false
  - name: координаты
    type: geometry.point3d
    required: false
    indexed: true
  - name: высота_м
    type: float
    required: false
  - name: курс
    type: float
    required: false
  - name: скорость_кмч
    type: float
    required: false
  - name: маршрут
    type: geometry.linestring
    required: false
    description: Плановый маршрут (waypoints)
  - name: полезная_нагрузка
    type: json
    required: false
    description: "Камера, тепловизор, РЭБ-модуль, БЧ..."
  - name: канал_связи
    type: json
    required: false
    description: "{частота_управления, частота_видео, тип, шифрование}"
  - name: батарея_процент
    type: float
    required: false
    description: "Заряд батареи / остаток топлива: 0-100%"
  - name: время_полёта_оставшееся
    type: duration
    required: false
  - name: дальность_связи_м
    type: float
    required: false
  - name: макс_высота_м
    type: float
    required: false
  - name: макс_скорость_кмч
    type: float
    required: false
  - name: масса_кг
    type: float
    required: false
  - name: размах_крыла_м
    type: float
    required: false
  - name: принадлежность
    type: enum(свой, противник, неизвестный)
    required: true
    indexed: true
    default: неизвестный
links:
  - type: управляется
    target: [Персона]
    reverse: true
  - type: принадлежит
    target: [Подразделение]
  - type: несёт
    target: [Сенсор]
  - type: входит_в_рой
    target: [Рой_БПЛА]
  - type: выполняет
    target: [Задача_поражения]
  - type: обнаружил
    target: [Цель]

2.13 Позиция

type: Позиция
description: Оборудованная позиция - огневая, наблюдательная, командная
classification_default: С
extends: null
properties:
  - name: тип
    type: enum(огневая, наблюдательная, командная, КНП, ЗКП, стартовая, запасная, ложная, иное)
    required: true
    indexed: true
  - name: координаты
    type: geometry.point
    required: true
    indexed: true
  - name: контур
    type: geometry.polygon
    required: false
  - name: высота_м
    type: float
    required: false
  - name: маскировка
    type: enum(отлично, хорошо, удовлетворительно, плохо, без_маскировки)
    required: false
  - name: фортификация
    type: enum(капитальная, полевая, временная, нет)
    required: false
  - name: подразделение
    type: reference(Подразделение)
    required: false
    indexed: true
  - name: чем_занята
    type: list(reference(Средство_поражения))
    required: false
    description: Какие средства на позиции
  - name: статус
    type: enum(оборудована, занята, оставлена, уничтожена, ложная)
    required: false
    indexed: true
  - name: принадлежность
    type: enum(свой, противник, неизвестный)
    required: true
    indexed: true
    default: неизвестный
  - name: сектор_обстрела
    type: json
    required: false
    description: "{азимут_левый, азимут_правый, дальность_мин, дальность_макс}"
links:
  - type: занимает
    target: [Подразделение, Средство_поражения, Огневое_средство]
    reverse: true
  - type: находится_в
    target: [Локация]

2.14 Минное_поле

type: Минное_поле
description: Установленное минное заграждение - противотанковое, противопехотное, смешанное
classification_default: С
extends: null
properties:
  - name: тип_мин
    type: enum(ПТМ, ППМ, смешанное, противодесантное, управляемое, иное)
    required: true
    indexed: true
  - name: границы
    type: geometry.polygon
    required: true
    indexed: true
  - name: плотность
    type: float
    required: false
    description: Мин на погонный метр (или мин/м2)
  - name: количество_мин
    type: int
    required: false
  - name: модель_мин
    type: string(100)
    required: false
    description: "Тип мин: ТМ-62, МОН-50, ОЗМ-72..."
  - name: способ_установки
    type: enum(ручной, механический, дистанционный_ракетный, дистанционный_авиа)
    required: true
  - name: время_установки
    type: datetime
    required: false
  - name: срок_самоликвидации
    type: datetime
    required: false
    description: Дата самоликвидации (для мин с самоликвидатором)
  - name: проходы
    type: list(geometry.linestring)
    required: false
    description: Координаты безопасных проходов
  - name: ширина_прохода_м
    type: float
    required: false
  - name: установил
    type: reference(Подразделение)
    required: false
  - name: принадлежность
    type: enum(свой, противник, неизвестный)
    required: true
    indexed: true
  - name: статус
    type: enum(установлено, частично_обезврежено, обезврежено, самоликвидировалось)
    required: false
    indexed: true
  - name: обозначено_на_местности
    type: boolean
    required: false
    default: false
links:
  - type: установлено
    target: [Подразделение]
    reverse: true
  - type: в_районе
    target: [Локация]
  - type: пересекает_маршрут
    target: [Маршрут_движения]

2.15 Фортификация

type: Фортификация
description: Укреплённое сооружение - блиндаж, ДОТ, окоп, траншея, убежище
classification_default: С
extends: null
properties:
  - name: тип
    type: enum(окоп, траншея, ход_сообщения, блиндаж, ДОТ, ДЗОТ, убежище, КНП, укрытие_техники, бруствер, иное)
    required: true
    indexed: true
  - name: координаты
    type: geometry.point
    required: false
    indexed: true
  - name: контур
    type: geometry.polygon
    required: false
  - name: линия
    type: geometry.linestring
    required: false
    description: Для линейных сооружений (траншея, ход сообщения)
  - name: степень_защиты
    type: enum(от_осколков, от_прямого_попадания_мин, от_прямого_попадания_снарядов, противоатомная, иное)
    required: false
  - name: глубина_м
    type: float
    required: false
    description: Глубина заглубления
  - name: перекрытие
    type: enum(нет, одиночное, двойное, тройное)
    required: false
  - name: материал
    type: enum(земля, дерево, дерево_земля, бетон, железобетон, сталь, иное)
    required: false
  - name: вместимость_чел
    type: int
    required: false
  - name: вместимость_техники
    type: int
    required: false
  - name: гарнизон
    type: reference(Подразделение)
    required: false
  - name: статус
    type: enum(строится, готово, занято, оставлено, разрушено)
    required: false
    indexed: true
  - name: принадлежность
    type: enum(свой, противник, неизвестный)
    required: true
    indexed: true
    default: неизвестный
links:
  - type: принадлежит
    target: [Подразделение]
  - type: в_составе
    target: [Боевой_порядок]
  - type: находится_в
    target: [Локация]

3. Системы борьбы и робототехника

3.1 Средство_РЭБ

type: Средство_РЭБ
description: Система радиоэлектронной борьбы - подавление каналов управления БПЛА, связи, навигации
classification_default: С
extends: null
properties:
  - name: тип
    type: enum(противодроновое, подавление_связи, подавление_навигации, подавление_РЛС, комплексное, разведывательное, иное)
    required: true
    indexed: true
  - name: модель
    type: string(200)
    required: false
    indexed: true
    description: "Красуха-4, Поле-21, Борисоглебск-2..."
  - name: координаты
    type: geometry.point
    required: true
    indexed: true
  - name: секторы_обзора
    type: json
    required: false
    description: "[{азимут_начало, азимут_конец, дальность_м}]"
  - name: рабочие_диапазоны
    type: list(string(50))
    required: false
    description: "[2.4GHz, 5.8GHz, 900MHz, L1, L2, L5, УКВ, ДМВ]"
  - name: мощность_Вт
    type: float
    required: false
  - name: режим
    type: enum(направленный, площадной, секторный, круговой)
    required: false
  - name: статус
    type: enum(готово, работает, обслуживание, повреждено, уничтожено, на_марше)
    required: true
    indexed: true
  - name: боеготовность
    type: enum(полная, ограниченная, небоеготово)
    required: false
  - name: влияние_на_свои
    type: json
    required: false
    description: "Список побочных эффектов для своих систем: [{система, эффект, радиус}]"
  - name: подразделение
    type: reference(Подразделение)
    required: false
    indexed: true
  - name: расчёт
    type: int
    required: false
  - name: время_развёртывания
    type: duration
    required: false
links:
  - type: создаёт
    target: [Зона_подавления, Зона_РЭБ]
  - type: принадлежит
    target: [Подразделение]
  - type: расположено_на
    target: [Позиция]
  - type: выполняет
    target: [Задача_РЭБ]

3.2 Задача_РЭБ

type: Задача_РЭБ
description: Задача на радиоэлектронное подавление конкретной цели или района
classification_default: С
extends: null
properties:
  - name: номер
    type: string(30)
    required: true
    indexed: true
  - name: цель_track_id
    type: string(50)
    required: false
    indexed: true
    description: Track ID подавляемой цели (БПЛА, станция связи)
  - name: цель_объект
    type: reference(Цель)
    required: false
  - name: тип_воздействия
    type: enum(шум, спуфинг, имитация, подавление, перехват_управления, иное)
    required: true
  - name: частота_цели_МГц
    type: float
    required: false
  - name: диапазон
    type: string(50)
    required: false
  - name: мощность
    type: enum(минимальная, средняя, максимальная)
    required: false
  - name: длительность
    type: duration
    required: false
  - name: средство
    type: reference(Средство_РЭБ)
    required: false
    indexed: true
  - name: статус
    type: enum(создана, выполняется, выполнена, отменена)
    required: true
    indexed: true
  - name: результат
    type: enum(цель_потеряна, цель_посажена, цель_продолжает, подавление_эффективно, подавление_неэффективно, неизвестно)
    required: false
  - name: время_начала
    type: datetime
    required: false
  - name: время_окончания
    type: datetime
    required: false
  - name: оператор
    type: reference(Персона)
    required: false
links:
  - type: на_цель
    target: [Цель, БПЛА]
  - type: средством
    target: [Средство_РЭБ]
  - type: часть_операции
    target: [Операция]

3.3 Зона_подавления

type: Зона_подавления
description: Зона активного РЭБ-подавления с границами и параметрами воздействия
classification_default: С
extends: null
properties:
  - name: границы
    type: geometry.polygon
    required: true
    indexed: true
  - name: диапазоны
    type: list(string(50))
    required: true
    description: "Подавляемые диапазоны частот"
  - name: активность
    type: boolean
    required: true
    indexed: true
  - name: время_активации
    type: datetime
    required: false
  - name: время_деактивации
    type: datetime
    required: false
  - name: средство
    type: reference(Средство_РЭБ)
    required: true
    indexed: true
  - name: влияние_на_свои
    type: json
    required: false
    description: "{GPS_деградация, связь_деградация, навигация_деградация}"
  - name: эффективность
    type: float
    required: false
    description: "Оценка эффективности подавления: 0.0 - 1.0"
links:
  - type: создана
    target: [Средство_РЭБ]
    reverse: true
  - type: покрывает
    target: [Локация]
  - type: влияет_на
    target: [Подразделение, Маршрут_движения]

3.4 Средство_ПВО

type: Средство_ПВО
description: Зенитное средство - ЗРК, ЗРПК, ЗА, противодроновые системы
classification_default: С
extends: null
properties:
  - name: тип
    type: enum(ЗРК, ЗРПК, ЗА, ПЗРК, противодроновое_лазер, противодроновое_HPM, дрон_перехватчик, сетемёт, иное)
    required: true
    indexed: true
  - name: модель
    type: string(200)
    required: false
    indexed: true
    description: "С-400, Бук-М3, Тор-М2, Панцирь-С1..."
  - name: координаты
    type: geometry.point
    required: true
    indexed: true
  - name: боекомплект
    type: json
    required: false
    description: "{тип_ракеты: количество, тип_снаряда: количество}"
  - name: боекомплект_процент
    type: float
    required: false
    indexed: true
  - name: дальность_поражения_макс_м
    type: float
    required: false
  - name: дальность_поражения_мин_м
    type: float
    required: false
  - name: высота_поражения_макс_м
    type: float
    required: false
  - name: высота_поражения_мин_м
    type: float
    required: false
  - name: мёртвые_зоны
    type: list(geometry.polygon)
    required: false
  - name: статус
    type: enum(боеготово, на_марше, обслуживание, повреждено, уничтожено, неизвестно)
    required: true
    indexed: true
  - name: подразделение
    type: reference(Подразделение)
    required: false
    indexed: true
  - name: расчёт
    type: int
    required: false
  - name: время_реакции_сек
    type: float
    required: false
    description: Время от обнаружения до пуска
  - name: каналов_наведения
    type: int
    required: false
    description: Количество одновременно обстреливаемых целей
  - name: принадлежность
    type: enum(свой, противник, неизвестный)
    required: true
    indexed: true
    default: свой
links:
  - type: входит_в
    target: [Зона_ПВО]
  - type: принадлежит
    target: [Подразделение]
  - type: выполнил_перехват
    target: [Перехват]

3.5 Зона_поражения_ПВО

type: Зона_поражения_ПВО
description: Трёхмерная зона покрытия ПВО с учётом рельефа и мёртвых зон
classification_default: С
extends: null
properties:
  - name: средство
    type: reference(Средство_ПВО)
    required: true
    indexed: true
  - name: зона_2d
    type: geometry.polygon
    required: true
    indexed: true
    description: Проекция зоны поражения на плоскость
  - name: высота_мин_м
    type: float
    required: false
  - name: высота_макс_м
    type: float
    required: false
  - name: мёртвые_зоны
    type: list(geometry.polygon)
    required: false
    description: Зоны, не покрываемые (рельеф, конструктивные ограничения)
  - name: перекрытие_с
    type: list(reference(Зона_поражения_ПВО))
    required: false
  - name: уровень_покрытия
    type: enum(полное, частичное, пробелы)
    required: false
links:
  - type: обеспечивается
    target: [Средство_ПВО]
    reverse: true
  - type: покрывает
    target: [Локация]

3.6 Перехват

type: Перехват
description: Факт перехвата воздушной цели средством ПВО
classification_default: С
extends: Событие
properties:
  - name: цель_track_id
    type: string(50)
    required: true
    indexed: true
  - name: цель
    type: reference(Цель)
    required: false
    indexed: true
  - name: тип_цели
    type: string(100)
    required: false
    description: "Тип перехваченной цели: БПЛА, крылатая_ракета, самолёт..."
  - name: средство
    type: reference(Средство_ПВО)
    required: true
    indexed: true
  - name: время_обнаружения
    type: datetime
    required: false
  - name: время_пуска
    type: datetime
    required: false
  - name: время_поражения
    type: datetime
    required: false
  - name: результат
    type: enum(уничтожена, повреждена, промах, потеряна)
    required: true
    indexed: true
  - name: расход
    type: json
    required: false
    description: "{тип_ракеты: количество, тип_снаряда: количество}"
  - name: координаты_поражения
    type: geometry.point3d
    required: false
  - name: дальность_поражения_м
    type: float
    required: false
  - name: высота_поражения_м
    type: float
    required: false
  - name: оператор
    type: reference(Персона)
    required: false
links:
  - type: цель
    target: [Цель, БПЛА]
  - type: средством
    target: [Средство_ПВО]

3.7 Огневое_средство

type: Огневое_средство
description: Артиллерийское орудие, миномёт, РСЗО - отдельная огневая единица
classification_default: С
extends: Средство_поражения
properties:
  - name: калибр_мм
    type: int
    required: false
    indexed: true
  - name: тип_системы
    type: enum(гаубица, пушка, миномёт, РСЗО, безоткатное, иное)
    required: true
    indexed: true
  - name: модель
    type: string(200)
    required: false
    indexed: true
    description: "Мста-С, Коалиция-СВ, Д-30, Град..."
  - name: позиция
    type: geometry.point
    required: false
    indexed: true
  - name: позиция_запасная
    type: geometry.point
    required: false
  - name: подразделение
    type: reference(Подразделение)
    required: false
    indexed: true
  - name: боекомплект
    type: json
    required: true
    description: "{ОФС: 24, кумулятивный: 8, кассетный: 0, Краснополь: 2, дымовой: 4}"
  - name: боекомплект_процент
    type: float
    required: false
    indexed: true
  - name: износ_ствола_выстрелов
    type: int
    required: false
    description: Количество произведённых выстрелов (живучесть ствола)
  - name: износ_ствола_процент
    type: float
    required: false
    description: "Износ как процент от ресурса: 0-100"
  - name: отклонение_Vo
    type: float
    required: false
    description: Отклонение начальной скорости снаряда из-за износа
  - name: готовность
    type: enum(к_стрельбе, свёрнуто, на_марше, неисправно, уничтожено)
    required: true
    indexed: true
  - name: время_свёртывания
    type: duration
    required: false
  - name: мобильность
    type: enum(самоходное, буксируемое, стационарное)
    required: false
  - name: скорострельность_выстр_мин
    type: float
    required: false
  - name: расчёт
    type: int
    required: false
  - name: принадлежность
    type: enum(свой, противник, неизвестный)
    required: true
    indexed: true
    default: свой
links:
  - type: расположено_на
    target: [Позиция]
  - type: принадлежит
    target: [Подразделение]
  - type: выполняет
    target: [Огневая_задача]
  - type: использует_метео
    target: [Метеопост]

3.8 Метеопост

type: Метеопост
description: Метеорологические данные для расчёта баллистических поправок
classification_default: ДСП
extends: Сенсор
properties:
  - name: ветер_по_высотам
    type: json
    required: false
    description: "{0: {скорость_мс, направление}, 200: {...}, 400: {...}, 800, 1200, 1600, 2000, 3000, 4000}"
  - name: температура_воздуха_C
    type: float
    required: false
  - name: давление_мм
    type: float
    required: false
    description: Атмосферное давление (мм рт.ст.)
  - name: влажность_процент
    type: float
    required: false
  - name: температура_заряда_C
    type: float
    required: false
    description: Температура метательного заряда
  - name: время_измерения
    type: datetime
    required: true
    indexed: true
  - name: время_актуальности
    type: datetime
    required: false
    description: До какого времени данные считаются актуальными
  - name: бюллетень_номер
    type: string(30)
    required: false
    description: Номер метеобюллетеня (МБ)
links:
  - type: обслуживает
    target: [Огневое_средство, Подразделение]
  - type: расположен_в
    target: [Локация]

3.9 Зона_запрета_огня

type: Зона_запрета_огня
description: Зона, в которой запрещено применение оружия (свои войска, гражданские, МГП)
classification_default: С
extends: null
properties:
  - name: название
    type: string(255)
    required: false
  - name: границы
    type: geometry.polygon
    required: true
    indexed: true
  - name: причина
    type: enum(свои_войска, гражданские, МГП_объект, дипломатический, инфраструктура, экология, иное)
    required: true
    indexed: true
  - name: описание_причины
    type: text
    required: false
  - name: тип_FSCM
    type: enum(NFA, RFA, FFA, CFL, FSCL, ACA, иное)
    required: false
    indexed: true
    description: "Fire Support Coordination Measure: NFA - No Fire Area, RFA - Restricted, FFA - Free Fire..."
  - name: действует_с
    type: datetime
    required: true
  - name: действует_до
    type: datetime
    required: false
    description: Если не указано - бессрочно
  - name: установил
    type: reference(Персона)
    required: false
  - name: подразделение_установившее
    type: reference(Подразделение)
    required: false
  - name: может_отменить
    type: list(reference(Персона))
    required: false
    description: Кто уполномочен отменить зону
  - name: исключения
    type: text
    required: false
    description: Условия, при которых огонь всё-таки разрешён
  - name: статус
    type: enum(активна, снята, истекла)
    required: true
    indexed: true
links:
  - type: защищает
    target: [Объект, Подразделение, Локация]
  - type: проверяется_при
    target: [Огневая_задача]

3.10 Ударный_БПЛА

type: Ударный_БПЛА
description: БПЛА с вооружением - разведывательно-ударный, барражирующий, FPV-камикадзе
classification_default: С
extends: БПЛА
properties:
  - name: тип_БЧ
    type: enum(кумулятивная, осколочная, термобарическая, ОФ, без_БЧ, иное)
    required: false
    indexed: true
  - name: масса_БЧ_кг
    type: float
    required: false
  - name: способ_наведения
    type: enum(координатное, видео, автономный_CV, лазерное, радиокомандное, комбинированное)
    required: false
  - name: мин_уверенность_CV
    type: float
    required: false
    description: "Минимальный порог уверенности CV для автономной атаки: 0.0 - 1.0"
  - name: радиус_действия_км
    type: float
    required: false
  - name: время_барражирования
    type: duration
    required: false
  - name: частота_видеолинка_МГц
    type: float
    required: false
  - name: уровень_автономности
    type: enum(ручной, полуавтоматический, автоматический_с_подтверждением, автономный_с_ограничениями)
    required: false
    indexed: true
  - name: бортовой_ИИ
    type: json
    required: false
    description: "{чип, модель_CV, FPS, классы_целей}"
links:
  - type: выполняет
    target: [Задача_поражения]
  - type: входит_в_рой
    target: [Рой_БПЛА]

3.11 Задача_поражения

type: Задача_поражения
description: Задача на поражение цели ударным БПЛА или барражирующим боеприпасом
classification_default: С
extends: null
properties:
  - name: цель
    type: reference(Цель)
    required: true
    indexed: true
  - name: БПЛА
    type: reference(Ударный_БПЛА)
    required: true
    indexed: true
  - name: способ_наведения
    type: enum(координатное, видео_наведение, автономный_CV, лазерное, комбинированное)
    required: true
  - name: статус
    type: enum(назначена, в_полёте, атака, выполнена, отменена, прервана)
    required: true
    indexed: true
  - name: результат
    type: enum(поражена, уничтожена, промах, прервано, БПЛА_потерян)
    required: false
  - name: видеозапись
    type: reference(Медиа)
    required: false
  - name: кадр_поражения
    type: reference(Медиа)
    required: false
    description: Кадр момента поражения
  - name: время_вылета
    type: datetime
    required: false
  - name: время_поражения
    type: datetime
    required: false
  - name: оператор
    type: reference(Персона)
    required: false
  - name: BDA
    type: json
    required: false
    description: "Battle Damage Assessment после поражения"
links:
  - type: на_цель
    target: [Цель]
  - type: БПЛА
    target: [Ударный_БПЛА]
  - type: часть_операции
    target: [Операция]

3.12 Рой_БПЛА

type: Рой_БПЛА
description: Группа БПЛА, действующая как единое целое под общим управлением
classification_default: С
extends: null
properties:
  - name: название
    type: string(100)
    required: false
  - name: состав
    type: list(reference(БПЛА))
    required: true
    description: Все БПЛА в составе роя
  - name: количество
    type: int
    required: true
  - name: количество_активных
    type: int
    required: false
  - name: зона_действия
    type: geometry.polygon
    required: false
    indexed: true
  - name: формация
    type: enum(линия, клин, круг, сетка, эшелон, свободная)
    required: false
  - name: задача
    type: enum(разведка, атака, барражирование, патрулирование, оборона_периметра, иное)
    required: false
  - name: распределение_целей
    type: json
    required: false
    description: "[{БПЛА_id, цель_id, статус}]"
  - name: потери
    type: int
    required: false
    default: 0
  - name: причины_потерь
    type: json
    required: false
    description: "[{БПЛА_id, причина: сбит/отказ/потеря_связи}]"
  - name: статус
    type: enum(формируется, готов, в_полёте, выполняет_задачу, RTB, расформирован)
    required: true
    indexed: true
  - name: оператор
    type: reference(Персона)
    required: false
  - name: подразделение
    type: reference(Подразделение)
    required: false
    indexed: true
  - name: лидер
    type: reference(БПЛА)
    required: false
    description: БПЛА-лидер группы
links:
  - type: состоит_из
    target: [БПЛА, Ударный_БПЛА]
  - type: действует_в
    target: [Локация]
  - type: выполняет
    target: [Автономная_миссия]

3.13 Боевая_платформа

type: Боевая_платформа
description: Танк, БМП, БТР, другая бронетехника с вооружением
classification_default: С
extends: Транспорт
properties:
  - name: класс
    type: enum(ОБТ, БМП, БТР, МТЛБ, бронеавтомобиль, самоходная_артиллерия, ЗСУ, инженерная, иное)
    required: true
    indexed: true
  - name: модель
    type: string(200)
    required: false
    indexed: true
    description: "Т-90М, БМП-3, Курганец-25..."
  - name: экипаж
    type: int
    required: false
  - name: десант
    type: int
    required: false
    description: Максимальная вместимость десанта
  - name: позывной
    type: string(50)
    required: false
    indexed: true
  - name: вооружение
    type: json
    required: false
    description: "[{тип, калибр, модель}]"
  - name: боекомплект
    type: json
    required: false
    description: "{ОФС: 22, кумулятивный: 10, ПТУР: 4, 7.62: 2000, 12.7: 300}"
  - name: боекомплект_процент
    type: float
    required: false
    indexed: true
  - name: бронезащита
    type: json
    required: false
    description: "{лоб_мм, борт_мм, ДЗ, КАЗ: модель}"
  - name: ходовая_ресурс_км
    type: float
    required: false
    description: Остаток ресурса ходовой (км)
  - name: ходовая_ресурс_моточасов
    type: float
    required: false
  - name: ГСМ_литры
    type: float
    required: false
  - name: ГСМ_процент
    type: float
    required: false
  - name: статус
    type: enum(боеготова, на_марше, повреждена, уничтожена, на_обслуживании, захвачена, иное)
    required: true
    indexed: true
  - name: координаты
    type: geometry.point
    required: false
    indexed: true
  - name: подразделение
    type: reference(Подразделение)
    required: false
    indexed: true
links:
  - type: принадлежит
    target: [Подразделение]
  - type: на_позиции
    target: [Позиция]
  - type: выполнил
    target: [Применение_оружия]

3.14 Применение_оружия

type: Применение_оружия
description: Факт применения оружия с платформы по цели - для учёта расхода и результатов
classification_default: С
extends: Событие
properties:
  - name: платформа
    type: reference(Боевая_платформа)
    required: true
    indexed: true
  - name: цель
    type: reference(Цель)
    required: false
    indexed: true
  - name: цель_описание
    type: string(255)
    required: false
    description: Описание цели, если не привязана к онтологии
  - name: тип_боеприпаса
    type: string(100)
    required: false
  - name: калибр
    type: string(30)
    required: false
  - name: расход
    type: int
    required: false
  - name: дистанция_м
    type: float
    required: false
  - name: результат
    type: enum(поражена, уничтожена, повреждена, промах, неизвестно)
    required: false
    indexed: true
  - name: время
    type: datetime
    required: true
    indexed: true
  - name: координаты_цели
    type: geometry.point
    required: false
  - name: оператор
    type: string(100)
    required: false
    description: Позывной стрелка / наводчика
links:
  - type: с_платформы
    target: [Боевая_платформа]
  - type: по_цели
    target: [Цель]

3.15 НРТК

type: НРТК
description: Наземный робототехнический комплекс - разведывательный, боевой, сапёрный, транспортный
classification_default: С
extends: null
properties:
  - name: тип
    type: enum(разведка, боевой, штурмовой, сапёрный, транспорт, пожарный, РХБЗ, иное)
    required: true
    indexed: true
  - name: модель
    type: string(200)
    required: false
    indexed: true
    description: "Уран-6, Уран-9, Маркер, Нерехта..."
  - name: масса_кг
    type: float
    required: false
  - name: вооружение
    type: json
    required: false
    description: "[{тип, калибр, боекомплект}]"
  - name: боекомплект_процент
    type: float
    required: false
  - name: сенсоры
    type: list(reference(Сенсор))
    required: false
    description: Камеры, тепловизоры, лидары, радары
  - name: координаты
    type: geometry.point
    required: true
    indexed: true
  - name: курс
    type: float
    required: false
  - name: скорость_кмч
    type: float
    required: false
  - name: статус
    type: enum(готов, на_задаче, RTB, обслуживание, повреждён, уничтожен, потерян)
    required: true
    indexed: true
  - name: режим
    type: enum(ручной, полуавтоматический, автономный, follow, конвой)
    required: false
  - name: батарея_процент
    type: float
    required: false
    description: "Заряд батареи / остаток топлива: 0-100%"
  - name: топливо_процент
    type: float
    required: false
  - name: автономность_часов
    type: float
    required: false
  - name: оператор
    type: reference(Персона)
    required: false
    indexed: true
  - name: подразделение
    type: reference(Подразделение)
    required: false
    indexed: true
  - name: грузоподъёмность_кг
    type: float
    required: false
  - name: текущий_груз_кг
    type: float
    required: false
  - name: бортовой_ИИ
    type: json
    required: false
    description: "{чип, модель_CV, capabilities}"
links:
  - type: управляется
    target: [Персона]
    reverse: true
  - type: принадлежит
    target: [Подразделение]
  - type: входит_в_группу
    target: [Группа_НРТК]
  - type: выполняет
    target: [Автономная_миссия]
  - type: несёт
    target: [Сенсор]

3.16 Группа_НРТК

type: Группа_НРТК
description: Группа наземных роботов, действующих совместно
classification_default: С
extends: null
properties:
  - name: состав
    type: list(reference(НРТК))
    required: true
  - name: количество
    type: int
    required: true
  - name: задача
    type: enum(разведка, штурм, разминирование, охранение, транспортировка, иное)
    required: false
  - name: зона_действия
    type: geometry.polygon
    required: false
    indexed: true
  - name: формация
    type: enum(колонна, линия, клин, рассредоточенная, иное)
    required: false
  - name: статус
    type: enum(формируется, готова, на_задаче, завершила, расформирована)
    required: true
    indexed: true
  - name: оператор
    type: reference(Персона)
    required: false
links:
  - type: состоит_из
    target: [НРТК]
  - type: действует_в
    target: [Локация]
  - type: выполняет
    target: [Автономная_миссия]

3.17 НБЭК

type: НБЭК
description: Надводный безэкипажный катер - ударный, разведывательный, патрульный, транспортный
classification_default: С
extends: null
properties:
  - name: тип
    type: enum(ударный, разведка, патрульный, минный, транспорт, иное)
    required: true
    indexed: true
  - name: модель
    type: string(200)
    required: false
    indexed: true
  - name: водоизмещение_т
    type: float
    required: false
  - name: длина_м
    type: float
    required: false
  - name: скорость_макс_узлы
    type: float
    required: false
  - name: скорость_текущая_узлы
    type: float
    required: false
  - name: автономность_часов
    type: float
    required: false
  - name: дальность_плавания_км
    type: float
    required: false
  - name: вооружение
    type: json
    required: false
    description: "[{тип, калибр, боекомплект}]"
  - name: сенсоры
    type: list(reference(Сенсор))
    required: false
  - name: координаты
    type: geometry.point
    required: true
    indexed: true
  - name: курс
    type: float
    required: false
  - name: статус
    type: enum(готов, на_задаче, RTB, обслуживание, повреждён, уничтожен, потерян)
    required: true
    indexed: true
  - name: режим
    type: enum(ручной, waypoint, автономный, патрулирование)
    required: false
  - name: топливо_процент
    type: float
    required: false
  - name: оператор
    type: reference(Персона)
    required: false
  - name: подразделение
    type: reference(Подразделение)
    required: false
    indexed: true
  - name: AIS_MMSI
    type: string(20)
    required: false
    description: AIS идентификатор (если используется)
links:
  - type: управляется
    target: [Персона]
    reverse: true
  - type: входит_в_группу
    target: [Морская_группа]
  - type: принадлежит
    target: [Подразделение]
  - type: выполняет
    target: [Автономная_миссия]

3.18 АНПА

type: АНПА
description: Автономный необитаемый подводный аппарат - разведка, минирование, ударный, глайдер
classification_default: С
extends: null
properties:
  - name: тип
    type: enum(разведка, минный, ударный, глайдер, обследование, иное)
    required: true
    indexed: true
  - name: модель
    type: string(200)
    required: false
    indexed: true
  - name: глубина_текущая_м
    type: float
    required: false
  - name: глубина_макс_м
    type: float
    required: false
  - name: координаты
    type: geometry.point
    required: false
    indexed: true
    description: Последние известные координаты
  - name: координаты_время
    type: datetime
    required: false
  - name: курс
    type: float
    required: false
  - name: скорость_узлы
    type: float
    required: false
  - name: автономность_часов
    type: float
    required: false
  - name: сенсоры
    type: json
    required: false
    description: "[{тип: гидроакустический/магнитометр/камера, модель}]"
  - name: статус
    type: enum(готов, на_задаче, всплытие, RTB, обслуживание, потерян)
    required: true
    indexed: true
  - name: батарея_процент
    type: float
    required: false
  - name: время_последнего_контакта
    type: datetime
    required: false
    indexed: true
  - name: режим
    type: enum(программный, автономный, возврат)
    required: false
  - name: подразделение
    type: reference(Подразделение)
    required: false
    indexed: true
links:
  - type: входит_в_группу
    target: [Морская_группа]
  - type: принадлежит
    target: [Подразделение]
  - type: выполняет
    target: [Автономная_миссия]
  - type: обнаружил
    target: [Подводный_объект, Морская_цель]

3.19 Придонная_станция

type: Придонная_станция
description: Стационарный подводный сенсор - гидроакустический, магнитный, сейсмический
classification_default: СС
extends: null
properties:
  - name: координаты
    type: geometry.point
    required: true
    indexed: true
  - name: глубина_м
    type: float
    required: true
  - name: тип_сенсоров
    type: list(string(100))
    required: true
    description: "[гидроакустический, магнитометр, сейсмический, кабельный]"
  - name: режим
    type: enum(пассивный, активный, спящий)
    required: true
    indexed: true
  - name: батарея_процент
    type: float
    required: false
  - name: время_активации
    type: datetime
    required: false
  - name: расчётное_время_работы
    type: datetime
    required: false
  - name: радиус_обнаружения_м
    type: float
    required: false
  - name: статус
    type: enum(активна, спящая, обнаружена, уничтожена, разряжена)
    required: true
    indexed: true
  - name: подразделение
    type: reference(Подразделение)
    required: false
links:
  - type: обнаружила
    target: [Подводный_объект, Морская_цель]
  - type: принадлежит
    target: [Подразделение]
  - type: расположена_в
    target: [Локация]

3.20 Морская_группа

type: Морская_группа
description: Тактическая группа морских робототехнических платформ (НБЭК + АНПА)
classification_default: С
extends: null
properties:
  - name: состав_НБЭК
    type: list(reference(НБЭК))
    required: false
  - name: состав_АНПА
    type: list(reference(АНПА))
    required: false
  - name: количество
    type: int
    required: true
  - name: задача
    type: enum(разведка, патрулирование, минирование, разминирование, охранение, удар, иное)
    required: false
  - name: зона_действия
    type: geometry.polygon
    required: false
    indexed: true
  - name: формация
    type: enum(линия, завеса, рассредоточенная, конвой, иное)
    required: false
  - name: статус
    type: enum(формируется, готова, на_задаче, завершила, расформирована)
    required: true
    indexed: true
links:
  - type: состоит_из
    target: [НБЭК, АНПА]
  - type: действует_в
    target: [Локация]

3.21 Морская_цель

type: Морская_цель
description: Обнаруженная морская цель - корабль, катер, подлодка, мина
classification_default: С
extends: Цель
properties:
  - name: тип_морской
    type: enum(корабль, катер, подводная_лодка, мина, торпеда, НБЭК, иное)
    required: true
    indexed: true
  - name: класс
    type: enum(военный, гражданский, рыболовный, неизвестный)
    required: false
    indexed: true
  - name: водоизмещение_т
    type: float
    required: false
  - name: AIS_MMSI
    type: string(20)
    required: false
    indexed: true
    description: AIS идентификатор
  - name: AIS_название
    type: string(200)
    required: false
  - name: AIS_флаг
    type: string(3)
    required: false
  - name: курс
    type: float
    required: false
  - name: скорость_узлы
    type: float
    required: false
links:
  - type: обнаружена
    target: [Сенсор, АНПА, НБЭК, Придонная_станция]
    reverse: true

3.22 Подводный_объект

type: Подводный_объект
description: Объект на дне или в толще воды - мина, кабель, трубопровод, затонувшее судно
classification_default: С
extends: null
properties:
  - name: тип
    type: enum(мина, кабель, трубопровод, затонувшее, неопознанный, обломки, иное)
    required: true
    indexed: true
  - name: координаты
    type: geometry.point
    required: true
    indexed: true
  - name: глубина_м
    type: float
    required: true
  - name: размеры
    type: json
    required: false
    description: "{длина_м, ширина_м, высота_м}"
  - name: описание
    type: text
    required: false
  - name: опасность
    type: enum(высокая, средняя, низкая, нет)
    required: false
  - name: обнаружен_когда
    type: datetime
    required: false
  - name: обнаружен_чем
    type: reference(АНПА)
    required: false
  - name: статус
    type: enum(обнаружен, обследован, обезврежен, уничтожен, классифицирован)
    required: false
    indexed: true
links:
  - type: обнаружен
    target: [АНПА, Придонная_станция]
    reverse: true

3.23 Автономная_миссия

type: Автономная_миссия
description: Параметры автономной операции - геозона, ограничения, разрешённые типы целей
classification_default: С
extends: null
properties:
  - name: платформа_тип
    type: enum(рой_БПЛА, группа_НРТК, НБЭК, АНПА, единичная_платформа)
    required: true
    indexed: true
  - name: платформа
    type: json
    required: true
    description: "Ссылки на платформы: [{type, id}]"
  - name: геозона
    type: geometry.polygon
    required: true
    indexed: true
    description: Зона, в пределах которой разрешено действие
  - name: время_начала
    type: datetime
    required: true
  - name: время_окончания
    type: datetime
    required: true
    description: Автоматическое завершение по истечении
  - name: разрешённые_типы_целей
    type: list(string(100))
    required: false
    description: "[танк, БМП, БТР, грузовик, ...] - пустой = все типы"
  - name: запрещённые_типы_целей
    type: list(string(100))
    required: false
    description: "[гражданский_транспорт, здания, ...]"
  - name: мин_уверенность_CV
    type: float
    required: true
    default: 0.85
    description: "Минимальный порог уверенности CV для атаки: 0.0 - 1.0"
  - name: макс_побочный_ущерб
    type: int
    required: true
    default: 0
    description: Допустимое количество гражданских в радиусе поражения
  - name: макс_расход
    type: int
    required: false
    description: Максимальный расход боеприпасов (потом RTB)
  - name: связь_потеря_сек
    type: int
    required: false
    default: 30
    description: Потеря связи > N секунд = RTB
  - name: уровень_автономности
    type: enum(полуавтоматический, автоматический_с_подтверждением, автономный_с_ограничениями)
    required: true
  - name: утвердил
    type: reference(Персона)
    required: true
    description: Командир, утвердивший миссию
  - name: время_утверждения
    type: datetime
    required: true
  - name: статус
    type: enum(утверждена, выполняется, приостановлена, завершена, прервана, отменена)
    required: true
    indexed: true
  - name: лог_решений
    type: list(reference(Автономное_решение))
    required: false
    description: Журнал всех решений бортового ИИ
  - name: kill_switch_активирован
    type: boolean
    required: false
    default: false
links:
  - type: выполняется
    target: [Рой_БПЛА, Группа_НРТК, НБЭК, АНПА, НРТК, Ударный_БПЛА]
    reverse: true
  - type: утверждена
    target: [Персона]
    reverse: true
  - type: в_районе
    target: [Локация]

3.24 Автономное_решение

type: Автономное_решение
description: Запись единичного решения бортового ИИ - чёрный ящик автономного применения
classification_default: С
extends: null
properties:
  - name: миссия
    type: reference(Автономная_миссия)
    required: true
    indexed: true
  - name: платформа_id
    type: uuid
    required: true
    indexed: true
  - name: платформа_тип
    type: string(50)
    required: true
  - name: время
    type: datetime
    required: true
    indexed: true
  - name: цель_координаты
    type: geometry.point
    required: false
  - name: кадр_детекции
    type: binary
    required: false
    description: Полный кадр с bounding box
  - name: класс_цели
    type: string(100)
    required: false
  - name: уверенность
    type: float
    required: false
    description: "Уверенность CV-модели: 0.0 - 1.0"
  - name: проверка_геозона
    type: boolean
    required: false
    description: Цель внутри разрешённой геозоны?
  - name: проверка_тип_цели
    type: boolean
    required: false
    description: Тип цели в разрешённом списке?
  - name: проверка_уверенность
    type: boolean
    required: false
    description: Уверенность выше порога?
  - name: проверка_гражданские
    type: boolean
    required: false
    description: Нет гражданских в радиусе?
  - name: проверка_свои
    type: boolean
    required: false
    description: Нет своих в радиусе?
  - name: проверка_расход
    type: boolean
    required: false
    description: Расход не превышен?
  - name: решение
    type: enum(атаковать, игнорировать, отложить, запросить_оператора, RTB)
    required: true
    indexed: true
  - name: результат
    type: enum(поражена, промах, не_атаковано, отменено_оператором)
    required: false
  - name: все_проверки
    type: json
    required: false
    description: Полный лог всех проверок с результатами
links:
  - type: в_рамках
    target: [Автономная_миссия]
  - type: платформа
    target: [БПЛА, НРТК, НБЭК, АНПА]

3.25 Задача_минирования

type: Задача_минирования
description: Задача на установку минного заграждения
classification_default: С
extends: null
properties:
  - name: зона
    type: geometry.polygon
    required: true
    indexed: true
  - name: тип_мин
    type: enum(ПТМ, ППМ, смешанное, управляемое)
    required: true
  - name: модель_мин
    type: string(100)
    required: false
  - name: плотность
    type: float
    required: false
    description: Мин на погонный метр
  - name: средство_установки
    type: enum(ручное, механическое, ИСДМ, вертолёт, иное)
    required: false
  - name: подразделение
    type: reference(Подразделение)
    required: false
    indexed: true
  - name: время_установки
    type: datetime
    required: false
  - name: время_завершения
    type: datetime
    required: false
  - name: статус
    type: enum(запланирована, выполняется, выполнена, отменена)
    required: true
    indexed: true
  - name: результат
    type: reference(Минное_поле)
    required: false
    description: Созданное минное поле
links:
  - type: создаёт
    target: [Минное_поле]
  - type: выполняет
    target: [Подразделение]
    reverse: true

3.26 Задача_разминирования

type: Задача_разминирования
description: Задача на разминирование участка / проделывание прохода
classification_default: С
extends: null
properties:
  - name: зона
    type: geometry.polygon
    required: true
    indexed: true
  - name: минное_поле
    type: reference(Минное_поле)
    required: false
    indexed: true
  - name: средство
    type: enum(робот_сапёр, минный_трал, ручное, взрывной_способ, иное)
    required: false
  - name: подразделение
    type: reference(Подразделение)
    required: false
    indexed: true
  - name: прогресс_процент
    type: float
    required: false
    description: "Процент обезвреженной площади: 0-100"
  - name: обезврежено_шт
    type: int
    required: false
  - name: уничтожено_шт
    type: int
    required: false
  - name: время_начала
    type: datetime
    required: false
  - name: время_окончания
    type: datetime
    required: false
  - name: статус
    type: enum(запланирована, выполняется, выполнена, приостановлена, отменена)
    required: true
    indexed: true
  - name: проход
    type: geometry.linestring
    required: false
    description: Проделанный безопасный проход
  - name: ширина_прохода_м
    type: float
    required: false
links:
  - type: разминирует
    target: [Минное_поле]
  - type: выполняет
    target: [Подразделение]
    reverse: true

3.27 Автономный_транспорт

type: Автономный_транспорт
description: Автономный наземный транспорт - беспилотный грузовик, конвойная машина
classification_default: ДСП
extends: null
properties:
  - name: тип
    type: enum(грузовой, платформа, цистерна, тягач, иное)
    required: true
    indexed: true
  - name: модель
    type: string(200)
    required: false
  - name: грузоподъёмность_кг
    type: float
    required: false
  - name: текущий_груз_кг
    type: float
    required: false
  - name: тип_груза
    type: string(255)
    required: false
  - name: маршрут
    type: geometry.linestring
    required: false
  - name: координаты
    type: geometry.point
    required: true
    indexed: true
  - name: скорость_кмч
    type: float
    required: false
  - name: статус
    type: enum(готов, в_пути, загрузка, разгрузка, обслуживание, повреждён)
    required: true
    indexed: true
  - name: режим
    type: enum(автономный, конвой, follow, ручной)
    required: false
  - name: топливо_процент
    type: float
    required: false
  - name: подразделение
    type: reference(Подразделение)
    required: false
links:
  - type: перевозит_для
    target: [Подразделение]
  - type: следует_по
    target: [Маршрут_движения]

4. C2 / Боевое управление

4.1 Боевой_приказ

type: Боевой_приказ
description: Основной документ управления войсками - OPORD / FRAGO / WARNO
classification_default: СС
extends: Документ
properties:
  - name: тип_приказа
    type: enum(боевой_приказ, боевое_распоряжение, предварительное_распоряжение, оперативная_директива, иное)
    required: true
    indexed: true
  - name: номер_приказа
    type: string(50)
    required: true
    indexed: true
    unique: true
  - name: штаб
    type: reference(Подразделение)
    required: true
    indexed: true
  - name: командир
    type: reference(Персона)
    required: true
  - name: начальник_штаба
    type: reference(Персона)
    required: false
  - name: DTG
    type: datetime
    required: true
    indexed: true
  - name: ссылка_на_карту
    type: string(255)
    required: false
    description: "Лист карты, масштаб, издание"
  - name: обстановка_противник
    type: text
    required: false
  - name: обстановка_свои
    type: text
    required: false
  - name: задача
    type: text
    required: true
  - name: замысел
    type: text
    required: false
  - name: задачи_подчинённым
    type: json
    required: false
    description: "[{подразделение_ref, задача_текст, полоса_polygon, рубежи, время}]"
  - name: обеспечение
    type: json
    required: false
    description: "{связь, тыл, сигналы}"
  - name: графические_приложения
    type: json
    required: false
    description: Элементы на карте (решение командира)
  - name: статус
    type: enum(разработка, согласование, утверждён, разослан, исполняется, выполнен, отменён)
    required: true
    indexed: true
  - name: изменяет_приказ
    type: reference(Боевой_приказ)
    required: false
    description: Ссылка на изменяемый приказ (для FRAGO)
  - name: рассылка
    type: list(reference(Подразделение))
    required: false
  - name: подтверждения_получения
    type: json
    required: false
    description: "[{подразделение_ref, время_получения, подтвердил}]"
links:
  - type: издан
    target: [Подразделение]
    reverse: true
  - type: порождает_задачи
    target: [Боевая_задача]
  - type: для_операции
    target: [Операция]
  - type: изменяет
    target: [Боевой_приказ]
  - type: получен
    target: [Подразделение]
    reverse: true

4.2 Боевая_задача

type: Боевая_задача
description: Задача, поставленная подразделению в рамках боевого приказа
classification_default: С
extends: null
properties:
  - name: номер
    type: string(50)
    required: true
    indexed: true
  - name: приказ
    type: reference(Боевой_приказ)
    required: false
    indexed: true
  - name: тип
    type: enum(наступление, оборона, марш, разведка, огневое_поражение, инженерная, тыловая, охранение, блокирование, штурм, удержание, отход, иное)
    required: true
    indexed: true
  - name: формулировка
    type: text
    required: true
    description: "Кто, что, когда, где, зачем"
  - name: ближайшая_задача
    type: text
    required: false
  - name: дальнейшая_задача
    type: text
    required: false
  - name: исполнитель
    type: reference(Подразделение)
    required: true
    indexed: true
  - name: постановщик
    type: reference(Персона)
    required: false
  - name: полоса
    type: geometry.polygon
    required: false
    description: Полоса / район действий
  - name: рубежи
    type: list(reference(Рубеж))
    required: false
  - name: время_начала
    type: datetime
    required: false
  - name: время_завершения
    type: datetime
    required: false
  - name: время_готовности
    type: datetime
    required: false
    description: К какому времени задача должна быть выполнена
  - name: статус
    type: enum(создана, назначена, принята, выполняется, выполнена, частично_выполнена, не_выполнена, отменена)
    required: true
    indexed: true
  - name: выполнение_процент
    type: float
    required: false
    description: "Процент выполнения: 0-100"
  - name: результат
    type: text
    required: false
  - name: приоритет
    type: enum(главная, второстепенная, вспомогательная)
    required: false
  - name: время_подтверждения_получения
    type: datetime
    required: false
  - name: доклады
    type: json
    required: false
    description: "[{время, текст, автор}]"
links:
  - type: поставлена_по
    target: [Боевой_приказ]
  - type: исполняется
    target: [Подразделение]
    reverse: true
  - type: часть_операции
    target: [Операция]
  - type: уточняется
    target: [Боевая_задача]
    description: Уточнённая/изменённая версия задачи

4.3 Сигнал

type: Сигнал
description: Кодовое слово или сигнал для быстрой передачи типовых команд
classification_default: С
extends: null
properties:
  - name: кодовое_слово
    type: string(100)
    required: true
    indexed: true
    unique: true
  - name: значение
    type: text
    required: true
    description: Расшифровка действия
  - name: тип
    type: enum(начало_действий, прекращение, переход, смена_частот, опознавание, тревога, иное)
    required: true
    indexed: true
  - name: таблица
    type: reference(Кодовая_таблица)
    required: true
    indexed: true
  - name: автоматическое_действие
    type: json
    required: false
    description: "Действия системы при получении: [{action, params}]"
  - name: действует_с
    type: datetime
    required: true
  - name: действует_до
    type: datetime
    required: true
  - name: приоритет
    type: enum(немедленно, срочно, обычный)
    required: false
links:
  - type: принадлежит
    target: [Кодовая_таблица]
  - type: инициирует
    target: [Боевая_задача, Операция]

4.4 Разграничительная_линия

type: Разграничительная_линия
description: Линия разграничения ответственности между подразделениями
classification_default: С
extends: null
properties:
  - name: название
    type: string(255)
    required: false
  - name: геометрия
    type: geometry.linestring
    required: true
    indexed: true
  - name: подразделение_слева
    type: reference(Подразделение)
    required: false
  - name: подразделение_справа
    type: reference(Подразделение)
    required: false
  - name: установлена
    type: reference(Подразделение)
    required: false
    description: Кто установил (вышестоящий штаб)
  - name: действует_с
    type: datetime
    required: true
  - name: действует_до
    type: datetime
    required: false
  - name: ключевые_точки
    type: json
    required: false
    description: "[{название, координаты}]"
links:
  - type: разделяет
    target: [Подразделение]

4.5 FSCM

type: FSCM
description: Fire Support Coordination Measure - мера координации огневой поддержки
classification_default: С
extends: null
properties:
  - name: тип
    type: enum(NFA, RFA, FFA, CFL, FSCL, ACA, RFL, NFL, иное)
    required: true
    indexed: true
    description: "NFA - No Fire Area, RFA - Restricted Fire Area, FFA - Free Fire Area, CFL - Coordinated Fire Line, FSCL - Fire Support Coordination Line, ACA - Airspace Coordination Area"
  - name: название
    type: string(255)
    required: false
  - name: геометрия_полигон
    type: geometry.polygon
    required: false
    indexed: true
    description: Для площадных мер (NFA, RFA, FFA, ACA)
  - name: геометрия_линия
    type: geometry.linestring
    required: false
    indexed: true
    description: Для линейных мер (CFL, FSCL, RFL)
  - name: установлена
    type: reference(Подразделение)
    required: false
    description: Кто установил
  - name: утверждена
    type: reference(Персона)
    required: false
  - name: действует_с
    type: datetime
    required: true
  - name: действует_до
    type: datetime
    required: false
  - name: ограничения
    type: text
    required: false
    description: Дополнительные ограничения или исключения
  - name: статус
    type: enum(активна, снята, истекла)
    required: true
    indexed: true
links:
  - type: установлена
    target: [Подразделение]
    reverse: true
  - type: в_районе
    target: [Локация]

4.6 ACM

type: ACM
description: Airspace Control Measure - мера управления воздушным пространством
classification_default: С
extends: null
properties:
  - name: тип
    type: enum(ROZ, MOA, ADIZ, SAAFR, LLTR, BHL, HIDACZ, ACA, MRR, CADA, иное)
    required: true
    indexed: true
    description: "ROZ - Restricted Operations Zone, MOA - Military Operations Area, SAAFR - Standard Army Aviation Flight Route, LLTR - Low Level Transit Route..."
  - name: название
    type: string(255)
    required: true
  - name: геометрия
    type: geometry.polygon
    required: false
    indexed: true
  - name: маршрут
    type: geometry.linestring
    required: false
    indexed: true
    description: Для маршрутных ACM (SAAFR, LLTR)
  - name: высота_мин_м
    type: float
    required: false
  - name: высота_макс_м
    type: float
    required: false
  - name: действует_с
    type: datetime
    required: true
  - name: действует_до
    type: datetime
    required: false
  - name: пользователь
    type: string(255)
    required: false
    description: Кому разрешено использование
  - name: установлена
    type: reference(Подразделение)
    required: false
  - name: статус
    type: enum(активна, снята, планируемая)
    required: true
    indexed: true
links:
  - type: установлена
    target: [Подразделение]
    reverse: true
  - type: покрывает
    target: [Локация]

4.7 Доклад

type: Доклад
description: Формализованный доклад (SITREP, CASREP, INTREP, LOGREP, Air SITREP)
classification_default: С
extends: Документ
properties:
  - name: тип_доклада
    type: enum(SITREP, CASREP, INTREP, LOGREP, SPOTREP, SALUTE, Air_SITREP, Ground_SITREP, MEDEVAC_REQ, ШЕЛЬФ, иное)
    required: true
    indexed: true
  - name: подразделение_автор
    type: reference(Подразделение)
    required: true
    indexed: true
  - name: подразделение_получатель
    type: reference(Подразделение)
    required: false
    indexed: true
  - name: за_период_с
    type: datetime
    required: false
  - name: за_период_по
    type: datetime
    required: false
  - name: район
    type: geometry.polygon
    required: false
  - name: содержание_структурированное
    type: json
    required: true
    description: "Структурированные поля в зависимости от типа доклада"
  - name: автозаполненные_поля
    type: list(string(100))
    required: false
    description: Какие поля были заполнены автоматически из онтологии
  - name: подтверждён
    type: boolean
    required: false
    default: false
  - name: время_подготовки_мин
    type: float
    required: false
    description: Время подготовки доклада (для метрик ускорения)
links:
  - type: от_подразделения
    target: [Подразделение]
  - type: для_подразделения
    target: [Подразделение]
  - type: касается
    target: [Событие, Цель, Подразделение]

5. Тактические данные

5.1 Тактическое_сообщение

type: Тактическое_сообщение
description: Формализованное тактическое сообщение (VMF, USMTF, ADatP-3, Link 16, CoT)
classification_default: С
extends: null
properties:
  - name: формат
    type: enum(VMF, USMTF, ADatP3, Link16, CoT, OTH_Gold, собственный, иное)
    required: true
    indexed: true
  - name: код_типа
    type: string(20)
    required: true
    indexed: true
    description: "Код типа сообщения: Ф-01, Ф-02, J2.2, J3.2..."
  - name: наименование_типа
    type: string(255)
    required: false
  - name: приоритет
    type: enum(молния, срочно, обычный, несрочный)
    required: true
    indexed: true
  - name: DTG
    type: datetime
    required: true
    indexed: true
  - name: отправитель_позывной
    type: string(100)
    required: false
    indexed: true
  - name: отправитель
    type: reference(Подразделение)
    required: false
    indexed: true
  - name: получатель_позывной
    type: string(100)
    required: false
  - name: получатель
    type: reference(Подразделение)
    required: false
  - name: гриф
    type: enum(О, ДСП, С, СС, ОВ)
    required: true
  - name: тело_бинарное
    type: binary
    required: false
    description: Бинарное представление (для VMF, Link 16)
  - name: тело_текстовое
    type: text
    required: false
    description: Текстовое представление
  - name: тело_xml
    type: text
    required: false
    description: XML-представление (ADatP-3)
  - name: тело_структурированное
    type: json
    required: false
    description: Распарсенное содержание в JSON
  - name: направление
    type: enum(входящее, исходящее)
    required: true
    indexed: true
  - name: канал
    type: string(100)
    required: false
    description: Канал передачи (Link 16, VMF Radio, TCP/IP...)
  - name: доставлено
    type: boolean
    required: false
    default: false
  - name: подтверждение_получения
    type: datetime
    required: false
  - name: объекты_онтологии
    type: list(uuid)
    required: false
    description: Объекты онтологии, созданные/обновлённые из этого сообщения
links:
  - type: от_подразделения
    target: [Подразделение]
  - type: для_подразделения
    target: [Подразделение]
  - type: создал_объект
    target: [Цель, Событие, Подразделение]

5.2 Карточка_цели

type: Карточка_цели
description: Формализованный документ описания одной цели для поражения (Target Card)
classification_default: С
extends: Документ
properties:
  - name: цель
    type: reference(Цель)
    required: true
    indexed: true
  - name: номер_цели
    type: string(20)
    required: true
    indexed: true
  - name: наименование_цели
    type: string(255)
    required: true
  - name: тип_цели_текст
    type: string(255)
    required: false
    description: "Описание типа: Батарея 152 мм САУ"
  - name: координаты_WGS84
    type: geometry.point
    required: true
  - name: координаты_МГРС
    type: string(30)
    required: false
  - name: координаты_СК42
    type: json
    required: false
    description: "{X, Y}"
  - name: высота_м
    type: float
    required: false
  - name: размеры_м
    type: json
    required: false
    description: "{ширина, глубина}"
  - name: характер_цели
    type: string(100)
    required: false
    description: "Открытая, подвижная, укрытая..."
  - name: степень_укрытия
    type: string(100)
    required: false
  - name: достоверность_текст
    type: string(255)
    required: false
    description: "Подтверждена 2 источниками (БПЛА + РЛС)"
  - name: время_обнаружения
    type: datetime
    required: true
  - name: время_актуализации
    type: datetime
    required: false
  - name: назначенное_средство
    type: reference(Огневое_средство)
    required: false
  - name: тип_средства_текст
    type: string(255)
    required: false
  - name: подразделение_средства
    type: string(255)
    required: false
  - name: тип_боеприпаса
    type: string(100)
    required: false
  - name: расход_план
    type: int
    required: false
  - name: способ_стрельбы
    type: string(100)
    required: false
  - name: приоритет
    type: int
    required: false
    description: Числовой приоритет (1 - высший)
  - name: статус
    type: enum(подготовлена, назначена, поражается, поражена, закрыта)
    required: true
    indexed: true
  - name: BDA_результат
    type: text
    required: false
  - name: BDA_фото
    type: reference(Медиа)
    required: false
links:
  - type: для_цели
    target: [Цель]
  - type: назначено_средство
    target: [Огневое_средство, Средство_поражения]
  - type: огневая_задача
    target: [Огневая_задача]

5.3 Формуляр

type: Формуляр
description: Формуляр сопровождения объекта (ПВО, наземный, морской)
classification_default: С
extends: null
properties:
  - name: тип
    type: enum(ПВО, наземный, морской, космический, иное)
    required: true
    indexed: true
  - name: номер_трассы
    type: string(20)
    required: true
    indexed: true
    unique: true
    description: "Номер трассы: В-0087, Н-0142..."
  - name: время_обнаружения
    type: datetime
    required: true
    indexed: true
  - name: средство_обнаружения
    type: reference(Сенсор)
    required: false
  - name: средство_обнаружения_текст
    type: string(255)
    required: false
  - name: первичные_координаты
    type: geometry.point3d
    required: false
  - name: первичный_азимут
    type: float
    required: false
  - name: первичная_дальность_м
    type: float
    required: false
  - name: текущие_координаты
    type: geometry.point3d
    required: false
    indexed: true
  - name: курс
    type: float
    required: false
  - name: скорость_кмч
    type: float
    required: false
  - name: высота_м
    type: float
    required: false
  - name: вертикальная_скорость
    type: float
    required: false
    description: Скорость набора/снижения (м/с, отрицательная - снижение)
  - name: тип_цели
    type: string(100)
    required: false
    description: "Самолёт тактической авиации, БПЛА, КР..."
  - name: количество
    type: int
    required: false
    default: 1
  - name: IFF_ответ
    type: enum(свой, чужой, нет_ответа, неопределён)
    required: false
    indexed: true
  - name: BFT_идентификация
    type: boolean
    required: false
  - name: принадлежность
    type: enum(свой, чужой, нейтральный, неопределён)
    required: true
    indexed: true
  - name: действия
    type: text
    required: false
    description: Предпринятые действия (взят на сопровождение, назначена зона поражения...)
  - name: результат
    type: text
    required: false
  - name: история_трассы
    type: json
    required: false
    description: "[{время, координаты, курс, скорость, высота}]"
links:
  - type: обнаружена
    target: [Сенсор]
    reverse: true
  - type: является_целью
    target: [Цель]
  - type: перехвачена
    target: [Перехват]

5.4 Кодовая_таблица

type: Кодовая_таблица
description: Таблица кодовых слов и сигналов, действующая определённый период
classification_default: С
extends: null
properties:
  - name: номер
    type: string(50)
    required: true
    indexed: true
    unique: true
  - name: подразделение
    type: reference(Подразделение)
    required: true
    indexed: true
  - name: действует_с
    type: datetime
    required: true
  - name: действует_до
    type: datetime
    required: true
  - name: тип
    type: enum(сигналы, позывные, частоты, комбинированная)
    required: true
    indexed: true
  - name: сигналы
    type: list(reference(Сигнал))
    required: false
  - name: статус
    type: enum(действующая, истекла, отменена, заменена)
    required: true
    indexed: true
  - name: заменена_на
    type: reference(Кодовая_таблица)
    required: false
links:
  - type: принадлежит
    target: [Подразделение]
  - type: содержит
    target: [Сигнал, Позывной]
  - type: заменяет
    target: [Кодовая_таблица]

5.5 Позывной

type: Позывной
description: Назначенный позывной подразделения, должностного лица или средства
classification_default: С
extends: null
properties:
  - name: позывной
    type: string(100)
    required: true
    indexed: true
  - name: назначен_кому_тип
    type: enum(подразделение, должностное_лицо, средство, сеть_связи)
    required: true
    indexed: true
  - name: назначен_подразделению
    type: reference(Подразделение)
    required: false
    indexed: true
  - name: назначен_персоне
    type: reference(Персона)
    required: false
    indexed: true
  - name: таблица
    type: reference(Кодовая_таблица)
    required: false
    indexed: true
  - name: действует_с
    type: datetime
    required: true
  - name: действует_до
    type: datetime
    required: true
  - name: тип_связи
    type: enum(радио, цифровой, все)
    required: false
  - name: статус
    type: enum(действующий, истёк, отменён)
    required: true
    indexed: true
links:
  - type: назначен
    target: [Подразделение, Персона]
  - type: в_таблице
    target: [Кодовая_таблица]

6. Дополнительные военные сущности

6.1 Заражение

type: Заражение
description: Зона химического, радиационного или биологического заражения (РХБЗ)
classification_default: С
extends: null
properties:
  - name: тип
    type: enum(химическое, радиационное, биологическое, комбинированное)
    required: true
    indexed: true
  - name: вещество
    type: string(200)
    required: false
    description: "Тип отравляющего вещества / радионуклид / возбудитель"
  - name: зона
    type: geometry.polygon
    required: true
    indexed: true
    description: Текущие границы зоны заражения
  - name: прогноз_зоны
    type: geometry.polygon
    required: false
    description: Прогнозируемые границы через N часов
  - name: прогноз_время
    type: datetime
    required: false
  - name: концентрация
    type: float
    required: false
    description: Концентрация (мг/л, Бк/м3, ...)
  - name: ПДК_превышение
    type: float
    required: false
    description: Во сколько раз превышена ПДК
  - name: динамика
    type: enum(расширяется, стабильна, сокращается, рассеивается)
    required: false
  - name: источник
    type: geometry.point
    required: false
    description: Точка применения / источник заражения
  - name: время_обнаружения
    type: datetime
    required: true
    indexed: true
  - name: средство_обнаружения
    type: reference(Сенсор)
    required: false
  - name: опасность
    type: enum(смертельная, высокая, средняя, низкая)
    required: false
    indexed: true
  - name: средства_защиты
    type: text
    required: false
    description: Необходимые средства защиты
links:
  - type: в_районе
    target: [Локация]
  - type: обнаружено
    target: [Сенсор]
    reverse: true
  - type: угрожает
    target: [Подразделение, Объект]

6.2 Инженерное_сооружение

type: Инженерное_сооружение
description: Инженерное сооружение - переправа, мост, дорога, заграждение
classification_default: ДСП
extends: null
properties:
  - name: тип
    type: enum(мост, переправа, дорога, колонный_путь, заграждение, водная_преграда, ложная_позиция, маскировка, иное)
    required: true
    indexed: true
  - name: координаты
    type: geometry.point
    required: false
    indexed: true
  - name: линия
    type: geometry.linestring
    required: false
    description: Для линейных объектов (дороги, заграждения)
  - name: грузоподъёмность_т
    type: float
    required: false
    description: Для мостов и переправ
  - name: пропускная_способность
    type: string(100)
    required: false
    description: "Машин/час, человек/час"
  - name: ширина_м
    type: float
    required: false
  - name: длина_м
    type: float
    required: false
  - name: состояние
    type: enum(исправно, повреждено, разрушено, строится, демонтировано)
    required: false
    indexed: true
  - name: подразделение
    type: reference(Подразделение)
    required: false
    description: Кто построил / обслуживает
  - name: статус
    type: enum(действует, строится, планируется, свёрнуто, уничтожено)
    required: false
    indexed: true
links:
  - type: обслуживается
    target: [Подразделение]
    reverse: true
  - type: находится_в
    target: [Локация]
  - type: на_маршруте
    target: [Маршрут_движения]

6.3 Ложная_позиция

type: Ложная_позиция
description: Макет или ложная позиция для введения противника в заблуждение
classification_default: СС
extends: null
properties:
  - name: тип_имитации
    type: enum(техника, позиция, КП, склад, батарея, аэродром, иное)
    required: true
    indexed: true
  - name: координаты
    type: geometry.point
    required: true
    indexed: true
  - name: контур
    type: geometry.polygon
    required: false
  - name: имитируемый_объект
    type: string(255)
    required: false
    description: Что именно имитируется
  - name: средства_имитации
    type: json
    required: false
    description: "Макеты, уголковые отражатели, ИК-излучатели..."
  - name: ИК_сигнатура
    type: boolean
    required: false
    default: false
  - name: радиолокационная_сигнатура
    type: boolean
    required: false
    default: false
  - name: статус
    type: enum(развёрнута, демонтирована, обнаружена_противником)
    required: true
    indexed: true
  - name: подразделение
    type: reference(Подразделение)
    required: false
  - name: цель_дезинформации
    type: text
    required: false
    description: Какую информацию должен получить противник
links:
  - type: установлена
    target: [Подразделение]
    reverse: true
  - type: имитирует
    target: [Позиция, Объект, Подразделение]

6.4 Потери

type: Потери
description: Учётная запись о потерях личного состава
classification_default: С
extends: null
properties:
  - name: персона
    type: reference(Персона)
    required: true
    indexed: true
  - name: подразделение
    type: reference(Подразделение)
    required: true
    indexed: true
  - name: тип_потери
    type: enum(убит, ранен_тяжело, ранен_средне, ранен_легко, пропал_без_вести, пленный, небоевая_потеря, контужен)
    required: true
    indexed: true
  - name: время
    type: datetime
    required: true
    indexed: true
  - name: место
    type: geometry.point
    required: false
  - name: место_описание
    type: string(500)
    required: false
  - name: обстоятельства
    type: text
    required: false
  - name: причина
    type: enum(огнестрельное, осколочное, минно_взрывное, ожог, РХБЗ, болезнь, несчастный_случай, иное)
    required: false
  - name: эвакуирован
    type: boolean
    required: false
    default: false
  - name: эвакуирован_куда
    type: string(255)
    required: false
  - name: эвакуация_время
    type: datetime
    required: false
  - name: CASREP_номер
    type: string(50)
    required: false
    indexed: true
links:
  - type: пострадал
    target: [Персона]
  - type: из_подразделения
    target: [Подразделение]
  - type: в_результате
    target: [Событие]
  - type: задокументировано
    target: [Доклад]

6.5 Навигационная_точка

type: Навигационная_точка
description: Контрольная точка, ориентир, путевая точка для навигации
classification_default: ДСП
extends: null
properties:
  - name: название
    type: string(100)
    required: true
    indexed: true
  - name: тип
    type: enum(контрольная_точка, ориентир, waypoint, checkpoint, рандеву, посадочная, заправочная, иное)
    required: true
    indexed: true
  - name: координаты
    type: geometry.point
    required: true
    indexed: true
  - name: координаты_МГРС
    type: string(30)
    required: false
  - name: высота_м
    type: float
    required: false
  - name: магнитное_склонение
    type: float
    required: false
    description: Магнитное склонение в градусах (для GPS-denied)
  - name: описание_ориентиров
    type: text
    required: false
    description: Описание наземных ориентиров для навигации без GPS
links:
  - type: на_маршруте
    target: [Маршрут_движения]
  - type: в_районе
    target: [Локация]

6.6 ROE_правило

type: ROE_правило
description: Правило применения силы (Rules of Engagement) - юридическая рамка
classification_default: С
extends: null
properties:
  - name: номер
    type: string(30)
    required: true
    indexed: true
  - name: название
    type: string(500)
    required: true
  - name: описание
    type: text
    required: true
  - name: тип
    type: enum(разрешение, запрет, ограничение, процедура)
    required: true
    indexed: true
  - name: применимо_к
    type: list(string(100))
    required: false
    description: "Типы средств или ситуаций"
  - name: условие
    type: text
    required: false
    description: При каких условиях действует правило
  - name: утверждён
    type: reference(Персона)
    required: false
  - name: уровень_утверждения
    type: enum(тактический, оперативный, стратегический)
    required: false
  - name: действует_с
    type: datetime
    required: true
  - name: действует_до
    type: datetime
    required: false
  - name: статус
    type: enum(действует, отменён, заменён)
    required: true
    indexed: true
  - name: МГП_статья
    type: string(255)
    required: false
    description: Ссылка на статью МГП / ЖК
  - name: автопроверка
    type: boolean
    required: false
    default: false
    description: Автоматическая проверка при целеуказании
  - name: логика_проверки
    type: json
    required: false
    description: "Формализованная логика для автоматической проверки"
links:
  - type: действует_для
    target: [Операция, Подразделение]
  - type: проверяется_при
    target: [Огневая_задача, Задача_поражения, Автономная_миссия]

7. Справочные и служебные сущности

7.1 Пользователь_системы

type: Пользователь_системы
description: Учётная запись пользователя платформы Сфера
classification_default: ДСП
extends: null
properties:
  - name: login
    type: string(100)
    required: true
    indexed: true
    unique: true
  - name: персона
    type: reference(Персона)
    required: true
    indexed: true
  - name: роль
    type: enum(администратор, аналитик, оператор, командир, наблюдатель, аудитор)
    required: true
    indexed: true
  - name: допуск
    type: enum(О, ДСП, С, СС, ОВ)
    required: true
  - name: подразделение
    type: reference(Организация)
    required: false
    indexed: true
  - name: статус
    type: enum(активен, заблокирован, деактивирован)
    required: true
    indexed: true
  - name: последний_вход
    type: datetime
    required: false
  - name: сертификат_ID
    type: string(255)
    required: false
    description: ID клиентского сертификата (mTLS)
  - name: MFA_enabled
    type: boolean
    required: true
    default: true
  - name: Spoke_узлы
    type: list(string(100))
    required: false
    description: К каким Spoke-узлам имеет доступ
links:
  - type: является
    target: [Персона]
  - type: имеет_доступ_к
    target: [Организация]

7.2 Аудит_запись

type: Аудит_запись
description: Запись аудита - неизменяемый журнал всех действий в системе
classification_default: ДСП
extends: null
properties:
  - name: время
    type: datetime
    required: true
    indexed: true
  - name: пользователь
    type: reference(Пользователь_системы)
    required: true
    indexed: true
  - name: действие
    type: enum(создание, чтение, обновление, удаление, экспорт, печать, поиск, вход, выход, изменение_грифа, изменение_доступа, применение_оружия)
    required: true
    indexed: true
  - name: объект_id
    type: uuid
    required: false
    indexed: true
  - name: объект_тип
    type: string(100)
    required: false
    indexed: true
  - name: старое_значение
    type: json
    required: false
  - name: новое_значение
    type: json
    required: false
  - name: IP_адрес
    type: string(50)
    required: false
  - name: Spoke_узел
    type: string(100)
    required: false
    indexed: true
  - name: результат
    type: enum(успех, отказ, ошибка)
    required: true
    indexed: true
  - name: причина_отказа
    type: string(500)
    required: false
links: []

7.3 Алерт

type: Алерт
description: Автоматическое оповещение системы - обнаружение угрозы, нарушение зоны, отказ оборудования
classification_default: ДСП
extends: null
properties:
  - name: тип
    type: enum(обнаружение_цели, нарушение_зоны, потеря_связи, отказ_оборудования, исчерпание_БК, РХБЗ, пересечение_маршрута_мин_поле, приближение_к_НФА, friendly_fire_risk, дедлайн_задачи, деградация_GPS, иное)
    required: true
    indexed: true
  - name: приоритет
    type: enum(критический, высокий, средний, низкий)
    required: true
    indexed: true
  - name: текст
    type: text
    required: true
  - name: время
    type: datetime
    required: true
    indexed: true
  - name: объект
    type: uuid
    required: false
    indexed: true
    description: Объект, вызвавший алерт
  - name: объект_тип
    type: string(100)
    required: false
  - name: координаты
    type: geometry.point
    required: false
    indexed: true
  - name: получатели
    type: list(reference(Пользователь_системы))
    required: false
  - name: подтверждён
    type: boolean
    required: false
    default: false
  - name: подтверждён_кем
    type: reference(Пользователь_системы)
    required: false
  - name: подтверждён_когда
    type: datetime
    required: false
  - name: действие_предпринято
    type: text
    required: false
links:
  - type: касается
    target: [Цель, БПЛА, Подразделение, Маршрут_движения, Минное_поле, Средство_ПВО]
  - type: адресован
    target: [Пользователь_системы, Подразделение]

8. Индексы и производительность

Глобальные составные индексы

composite_indexes:
  - name: idx_entity_type_classification
    fields: [_type, _classification]
    description: Быстрая фильтрация по типу и грифу

  - name: idx_entity_org_type
    fields: [_org_unit, _type]
    description: Все объекты подразделения по типу

  - name: idx_spatial_type_affiliation
    fields: [координаты, _type, принадлежность]
    type: gist
    description: Пространственный поиск с фильтрацией по типу и принадлежности

  - name: idx_temporal_type
    fields: [_created_at, _type]
    description: Хронологическая выборка по типу

  - name: idx_target_status_priority
    fields: [статус, приоритет]
    entity: Цель
    description: Быстрый поиск активных целей по приоритету

  - name: idx_task_status_unit
    fields: [статус, исполнитель]
    entity: Боевая_задача
    description: Задачи подразделения по статусу

  - name: idx_uav_status_unit
    fields: [статус_полёта, подразделение]
    entity: БПЛА
    description: Активные БПЛА по подразделению

  - name: idx_alert_priority_time
    fields: [приоритет, время]
    entity: Алерт
    description: Алерты по приоритету и времени

  - name: idx_communication_time_type
    fields: [время_начала, тип]
    entity: Коммуникация
    description: Коммуникации по времени и типу

  - name: idx_audit_time_user
    fields: [время, пользователь]
    entity: Аудит_запись
    description: Аудит по времени и пользователю

Пространственные индексы (PostGIS GiST)

spatial_indexes:
  - entity: "*"
    field: координаты
    type: gist
    description: Все сущности с координатами

  - entity: Минное_поле
    field: границы
    type: gist

  - entity: Зона_ПВО
    field: центр
    type: gist

  - entity: Зона_подавления
    field: границы
    type: gist

  - entity: Зона_запрета_огня
    field: границы
    type: gist

  - entity: Маршрут_движения
    field: маршрут
    type: gist

  - entity: Рубеж
    field: геометрия
    type: gist

  - entity: Автономная_миссия
    field: геозона
    type: gist

Полнотекстовые индексы

fulltext_indexes:
  - entity: Документ
    fields: [название, содержание, аннотация]
    language: russian
    
  - entity: Разведсводка
    fields: [содержание, оценка_намерений]
    language: russian

  - entity: Событие
    fields: [описание, результат]
    language: russian

  - entity: Персона
    fields: [фио, приметы]
    language: russian

  - entity: Коммуникация
    fields: [содержание_текст]
    language: russian

9. Ограничения целостности

Referential Integrity

referential_constraints:
  - name: fk_target_sensor
    description: Цель обязана иметь хотя бы один источник обнаружения
    entity: Цель
    rule: "EXISTS link(обнаружена → Сенсор|БПЛА) OR источник_обнаружения IS NOT NULL"
    enforcement: warning

  - name: fk_fire_task_target
    description: Огневая задача обязана ссылаться на существующую цель
    entity: Огневая_задача
    rule: "цель REFERENCES Цель WHERE NOT _deleted"
    enforcement: error

  - name: fk_autonomous_approver
    description: Автономная миссия обязана быть утверждена лицом с соответствующими полномочиями
    entity: Автономная_миссия
    rule: "утвердил REFERENCES Персона WHERE допуск >= С"
    enforcement: error

  - name: fk_unit_hierarchy
    description: Подразделение не может подчиняться самому себе (циклы в иерархии)
    entity: Подразделение
    rule: "вышестоящее != id AND no_cycles(вышестоящее)"
    enforcement: error

  - name: fk_classification_propagation
    description: Гриф связи не может быть ниже грифа связанных объектов
    entity: "*_link"
    rule: "_classification >= MAX(source._classification, target._classification)"
    enforcement: auto_upgrade

Business Rules

business_rules:
  - name: br_nfa_check
    description: Огневая задача не может быть назначена в зону запрета огня (NFA)
    trigger: "ON INSERT/UPDATE Огневая_задача"
    rule: "NOT ST_Within(цель.координаты, ANY(Зона_запрета_огня.границы WHERE статус = 'активна'))"
    enforcement: error_with_override
    override_by: "Персона WHERE звание IN ('полковник', 'генерал-майор', ...)"

  - name: br_friendly_fire_check
    description: Проверка на friendly fire - нет своих в радиусе поражения
    trigger: "ON INSERT/UPDATE Огневая_задача, Задача_поражения"
    rule: "NOT EXISTS(Подразделение WHERE принадлежность = 'свой' AND ST_DWithin(дислокация, цель.координаты, радиус_поражения))"
    enforcement: warning_critical

  - name: br_minefields_route_check
    description: Маршрут движения не должен пересекать свои минные поля
    trigger: "ON INSERT/UPDATE Маршрут_движения"
    rule: "NOT ST_Intersects(маршрут, ANY(Минное_поле.границы WHERE принадлежность = 'свой' AND статус = 'установлено'))"
    enforcement: alert

  - name: br_autonomous_geofence
    description: Платформа в автономной миссии не должна выходить за геозону
    trigger: "ON UPDATE БПЛА.координаты, НРТК.координаты WHERE миссия.уровень_автономности = 'автономный_с_ограничениями'"
    rule: "ST_Within(координаты, миссия.геозона)"
    enforcement: kill_switch

  - name: br_ihp_target_check
    description: Цель не должна быть объектом, защищённым МГП
    trigger: "ON INSERT/UPDATE Цель, Огневая_задача"
    rule: "NOT EXISTS(Объект WHERE id = цель.id AND защищённый_МГП = true)"
    enforcement: error_with_legal_review

10. Каталог типов связей (полный)

link_types:
  # Структурные
  - name: владеет
    direction: directed
    from: [Персона, Организация]
    to: [Транспорт, Объект]
    description: Право собственности

  - name: входит_в
    direction: directed
    from: [Персона, Подразделение, Организация]
    to: [Организация, Подразделение, Группировка]
    description: Членство, структурная принадлежность

  - name: подчиняется
    direction: directed
    from: [Подразделение, Персона]
    to: [Подразделение, Персона]
    description: Иерархия подчинённости

  - name: приданно_к
    direction: directed
    from: [Подразделение]
    to: [Подразделение]
    description: Временное подчинение

  - name: поддерживает
    direction: directed
    from: [Подразделение]
    to: [Подразделение]
    description: Огневая / иная поддержка

  # Пространственные
  - name: находится_в
    direction: directed
    from: ["*"]
    to: [Локация, Объект]
    description: Текущее местоположение

  - name: перемещается_по
    direction: directed
    from: [Транспорт, Подразделение]
    to: [Маршрут_движения]
    description: Движение по маршруту

  - name: покрывает
    direction: directed
    from: [Сенсор, Зона_ПВО, Зона_подавления]
    to: [Локация]
    description: Зона покрытия

  - name: контролирует
    direction: directed
    from: [Зона_ПВО, Зона_РЭБ, Подразделение]
    to: [Локация]
    description: Контроль территории

  # Событийные
  - name: участвует_в
    direction: directed
    from: [Персона, Подразделение, Транспорт]
    to: [Событие, Операция, Дело]
    description: Участие в событии

  - name: обнаружил
    direction: directed
    from: [Сенсор, БПЛА, АНПА, Придонная_станция]
    to: [Цель, Персона, Транспорт, Объект, Морская_цель, Подводный_объект]
    description: Факт обнаружения

  - name: назначен_на
    direction: directed
    from: [Средство_поражения, Средство_ПВО, Огневое_средство, Ударный_БПЛА]
    to: [Цель]
    description: Назначение на задачу поражения

  # Управление
  - name: управляет
    direction: directed
    from: [Персона]
    to: [БПЛА, НРТК, НБЭК, Боевая_платформа]
    description: Оператор управляет платформой

  - name: выполняет
    direction: directed
    from: [Подразделение, БПЛА, НРТК, Рой_БПЛА]
    to: [Боевая_задача, Огневая_задача, Автономная_миссия]
    description: Исполнение задачи

  - name: утвердил
    direction: directed
    from: [Персона]
    to: [Боевой_приказ, Автономная_миссия, Огневая_задача]
    description: Утверждение (подпись)

  # Аналитические
  - name: связан_с
    direction: undirected
    from: ["*"]
    to: ["*"]
    description: Установленная связь (с типом и достоверностью)
    properties:
      - тип_связи: string(100)
      - достоверность: float

  - name: финансирует
    direction: directed
    from: [Персона, Организация]
    to: [Персона, Организация]
    description: Финансовая связь

  - name: угрожает
    direction: directed
    from: [Цель, Заражение, Кибер_угроза]
    to: [Объект, Подразделение, Локация]
    description: Источник угрозы

  # Документальные
  - name: автор
    direction: directed
    from: [Персона]
    to: [Документ, Разведсводка, Боевой_приказ]
    description: Авторство документа

  - name: касается
    direction: directed
    from: [Документ, Разведсводка, Доклад, Алерт]
    to: [Персона, Организация, Событие, Объект, Цель, Операция]
    description: О ком / о чём документ

  # Боевые
  - name: поразил
    direction: directed
    from: [Огневое_средство, Ударный_БПЛА, Средство_ПВО, Боевая_платформа]
    to: [Цель]
    description: Факт поражения цели

  - name: создаёт_зону
    direction: directed
    from: [Средство_РЭБ]
    to: [Зона_подавления, Зона_РЭБ]
    description: Средство создаёт зону подавления

  - name: перехватил
    direction: directed
    from: [Средство_ПВО]
    to: [Цель, БПЛА]
    description: Перехват воздушной цели

  # Логистические
  - name: снабжает
    direction: directed
    from: [Подразделение, Автономный_транспорт]
    to: [Подразделение]
    description: Снабжение / доставка

  - name: эвакуирован_в
    direction: directed
    from: [Персона]
    to: [Объект, Локация]
    description: Эвакуация раненого

11. Ограничения масштаба

scale_limits:
  max_objects_total: 10_000_000_000
  max_properties_per_type: 2000
  max_objects_per_transaction: 10_000
  max_links_per_object: 100_000
  max_concurrent_users: 25_000
  max_types: 500
  max_link_types: 200

  latency_targets:
    object_read: "< 10 ms (P99)"
    object_write: "< 50 ms (P99)"
    spatial_query_1km: "< 100 ms (P99)"
    graph_query_3_hops: "< 500 ms (P99)"
    fulltext_search: "< 200 ms (P99)"
    change_stream_propagation: "< 100 ms (P99)"

  storage:
    database: "PostgreSQL 15 + Apache AGE"
    spatial: "PostGIS 3.x, SRID 4326"
    fulltext: "pg_trgm + tsvector (Russian)"
    binary: "S3-compatible object storage"
    cache: "Redis 7 (hot objects, sessions)"
    message_queue: "Apache Kafka (change stream)"

Полная модель данных платформы «Сфера» — Часть 2

Гражданские ведомства и платформенные модули. Формат и соглашения — см. data-model.md.


8. МЧС (гражданская защита)

8.1 Зона_ЧС

type: Зона_ЧС
description: Зона чрезвычайной ситуации
classification_default: открыто
properties:
  - name: тип_чс
    type: enum(пожар, наводнение, землетрясение, техноген, радиационное, химическое, биологическое, оползень, ураган, цунами, эпидемия, комбинированное)
    required: true
    indexed: true
  - name: масштаб
    type: enum(локальный, муниципальный, межмуниципальный, региональный, межрегиональный, федеральный)
    required: true
  - name: границы
    type: geometry.polygon
    srid: 4326
    required: true
    indexed: true  # spatial
  - name: уровень_угрозы
    type: enum(низкий, средний, высокий, критический)
    required: true
    indexed: true
  - name: динамика
    type: enum(расширяется, стабильна, сокращается, ликвидирована)
    required: true
  - name: площадь_км2
    type: float
  - name: население_в_зоне
    type: int
    description: Оценка числа людей в зоне ЧС
  - name: время_начала
    type: datetime
    required: true
  - name: время_окончания
    type: datetime
  - name: ответственный_орган
    type: string(255)
  - name: решение_о_введении
    type: reference(Документ)
    description: Документ о введении режима ЧС
  - name: описание
    type: text
links:
  - type: находится_в
    target: [Локация]
  - type: включает
    target: [Опасный_объект, Разрушение, Пожар, Заражение, Водный_объект]
  - type: обслуживается
    target: [Спасательная_группа]

8.2 Спасательная_группа

type: Спасательная_группа
description: Группа спасателей МЧС
classification_default: ДСП
properties:
  - name: подразделение
    type: string(255)
    required: true
  - name: позывной
    type: string(50)
    indexed: true
  - name: состав
    type: int
    description: Количество человек
    required: true
  - name: оснащение
    type: list(string)
    description: Список основного оборудования
  - name: специализация
    type: list(enum(поисково-спасательная, пожарная, водолазная, горная, РХБЗ, медицинская, инженерная, кинологическая))
  - name: статус
    type: enum(на_базе, выдвигается, на_месте, работает, отдыхает, возвращается)
    required: true
    indexed: true
  - name: координаты
    type: geometry.point
    srid: 4326
    indexed: true
  - name: зона_ответственности
    type: geometry.polygon
    srid: 4326
  - name: контакт
    type: string(100)
links:
  - type: обслуживает
    target: [Зона_ЧС]
  - type: снабжается
    target: [Ресурс_МЧС]
  - type: эвакуирует_в
    target: [Пункт_эвакуации]

8.3 Пострадавший

type: Пострадавший
description: Пострадавший в ЧС
classification_default: ДСП
properties:
  - name: фио
    type: string(255)
  - name: возраст
    type: int
  - name: пол
    type: enum(мужской, женский)
  - name: статус
    type: enum(жив, ранен_легко, ранен_тяжело, погиб, пропал_без_вести, эвакуирован, госпитализирован)
    required: true
    indexed: true
  - name: координаты_обнаружения
    type: geometry.point
    srid: 4326
  - name: время_обнаружения
    type: datetime
  - name: мед_состояние
    type: text
    description: Описание травм / состояния
  - name: категория_тяжести
    type: enum(T1_немедленная, T2_отсроченная, T3_минимальная, T4_безнадёжная)
    description: Медицинская сортировка
  - name: эвакуирован
    type: boolean
    default: false
links:
  - type: эвакуирован_в
    target: [Пункт_эвакуации, Медучреждение]
  - type: обнаружен_в
    target: [Зона_ЧС]
  - type: спасён
    target: [Спасательная_группа]

8.4 Пункт_эвакуации

type: Пункт_эвакуации
description: Место сбора и эвакуации населения
classification_default: открыто
properties:
  - name: название
    type: string(255)
    required: true
  - name: адрес
    type: string(500)
  - name: координаты
    type: geometry.point
    srid: 4326
    required: true
    indexed: true
  - name: вместимость
    type: int
    required: true
  - name: заполненность
    type: int
    default: 0
  - name: статус
    type: enum(готов, работает, переполнен, закрыт, эвакуируется)
    required: true
  - name: тип
    type: enum(ПВР, ПДП, ПЭП)
    description: Пункт временного размещения / пункт длительного пребывания / пункт эвакуации пострадавших
  - name: маршруты_подъезда
    type: list(reference(Маршрут_эвакуации))
  - name: условия
    type: list(enum(отопление, вода, электричество, медпункт, питание, связь))
links:
  - type: принимает
    target: [Пострадавший]
  - type: обслуживается_маршрутом
    target: [Маршрут_эвакуации]

8.5 Укрытие

type: Укрытие
description: Убежище / укрытие гражданской обороны
classification_default: ДСП
properties:
  - name: тип
    type: enum(убежище, ПРУ, подвал, метро, быстровозводимое)
    required: true
  - name: адрес
    type: string(500)
  - name: координаты
    type: geometry.point
    srid: 4326
    required: true
    indexed: true
  - name: вместимость
    type: int
    required: true
  - name: запас_автономности_часов
    type: int
  - name: статус
    type: enum(готово, требует_ремонта, заполнено, закрыто)
    required: true
  - name: защита_от
    type: list(enum(взрывная_волна, радиация, химическое, биологическое))
  - name: фильтровентиляция
    type: boolean
  - name: запасы
    type: json
    description: "{вода_л: N, продовольствие_сутки: N, медикаменты: bool}"
links:
  - type: находится_в
    target: [Локация]

8.6 Опасный_объект

type: Опасный_объект
description: Потенциально опасный объект
classification_default: ДСП
properties:
  - name: тип
    type: enum(АЭС, ТЭС, ГЭС, химзавод, нефтебаза, газопровод, нефтепровод, склад_ВВ, склад_ГСМ, водозабор, плотина)
    required: true
    indexed: true
  - name: название
    type: string(255)
    required: true
  - name: координаты
    type: geometry.point
    srid: 4326
    required: true
    indexed: true
  - name: зона_поражения
    type: geometry.polygon
    srid: 4326
    description: Зона потенциального поражения при аварии
  - name: класс_опасности
    type: enum(I, II, III, IV)
  - name: статус
    type: enum(норма, повышенная_готовность, авария, разрушен)
    required: true
  - name: персонал
    type: int
  - name: население_в_зоне
    type: int
    description: Население в зоне потенциального поражения
  - name: вещества
    type: list(string)
    description: Перечень опасных веществ
links:
  - type: угрожает
    target: [Локация, Объект]
  - type: находится_в
    target: [Локация]

8.7 Маршрут_эвакуации

type: Маршрут_эвакуации
description: Путь эвакуации населения
classification_default: открыто
properties:
  - name: геометрия
    type: geometry.linestring
    srid: 4326
    required: true
  - name: начало
    type: string(255)
  - name: конец
    type: string(255)
  - name: длина_км
    type: float
  - name: состояние_дороги
    type: enum(хорошее, удовлетворительное, плохое, непроходимо)
    required: true
  - name: пропускная_способность
    type: int
    description: Авто/час
  - name: тип
    type: enum(основной, запасной)
  - name: ограничения
    type: list(string)
    description: "Мост грузоподъёмностью 20т, ширина 4м, и т.д."
links:
  - type: ведёт_в
    target: [Пункт_эвакуации]
  - type: пересекает
    target: [Зона_ЧС, Заражение]

8.8 Ресурс_МЧС

type: Ресурс_МЧС
description: Доступный ресурс МЧС
classification_default: ДСП
properties:
  - name: тип
    type: enum(техника, топливо, медикаменты, продовольствие, палатки, спальники, генераторы, насосы, инструмент)
    required: true
    indexed: true
  - name: наименование
    type: string(255)
    required: true
  - name: количество
    type: float
    required: true
  - name: единица_измерения
    type: string(20)
  - name: расположение
    type: geometry.point
    srid: 4326
    indexed: true
  - name: статус
    type: enum(доступно, в_использовании, в_пути, требует_ремонта, списано)
    required: true
  - name: принадлежность
    type: string(255)
    description: Подразделение МЧС
links:
  - type: снабжает
    target: [Спасательная_группа, Пункт_эвакуации]

8.9 Прогноз_обстановки

type: Прогноз_обстановки
description: Прогнозная модель развития ЧС
classification_default: ДСП
properties:
  - name: тип_чс
    type: enum(пожар, наводнение, землетрясение, химическое, радиационное, эпидемия)
    required: true
  - name: модель
    type: string(100)
    description: Название модели расчёта
  - name: время_прогноза
    type: datetime
    required: true
    description: На какой момент прогноз
  - name: горизонт_часов
    type: int
  - name: зона_воздействия
    type: geometry.polygon
    srid: 4326
  - name: вероятность
    type: float
    description: Вероятность реализации (0-1)
  - name: параметры_входные
    type: json
    description: Параметры модели (ветер, объём выброса и т.д.)
  - name: результат
    type: json
    description: Результаты моделирования
links:
  - type: относится_к
    target: [Зона_ЧС, Опасный_объект]

8.10 Разрушение

type: Разрушение
description: Разрушенный объект
classification_default: открыто
properties:
  - name: объект
    type: reference(Объект)
    required: true
  - name: степень
    type: enum(полное, сильное, среднее, слабое)
    required: true
  - name: завалы
    type: boolean
    default: false
  - name: объём_завалов_м3
    type: float
  - name: доступ
    type: enum(свободный, затруднён, невозможен)
  - name: потребность_в_технике
    type: list(string)
  - name: люди_под_завалами
    type: int
    description: Оценка числа людей под завалами
  - name: координаты
    type: geometry.point
    srid: 4326
    indexed: true
links:
  - type: результат
    target: [Зона_ЧС, Событие]

8.11 Водный_объект

type: Водный_объект
description: Река, водохранилище (для наводнений)
classification_default: открыто
properties:
  - name: название
    type: string(255)
    required: true
  - name: тип
    type: enum(река, водохранилище, озеро, пруд, канал)
    required: true
  - name: геометрия
    type: geometry.linestring
    srid: 4326
  - name: уровень_воды_м
    type: float
    description: Текущий уровень
  - name: критическая_отметка_м
    type: float
  - name: опасная_отметка_м
    type: float
  - name: скорость_подъёма_м_час
    type: float
  - name: прогноз_пика
    type: datetime
links:
  - type: угрожает
    target: [Локация, Объект]

8.12 Пожар

type: Пожар
description: Действующий пожар
classification_default: открыто
properties:
  - name: тип
    type: enum(лесной_низовой, лесной_верховой, степной, торфяной, техногенный, бытовой, промышленный)
    required: true
    indexed: true
  - name: площадь_га
    type: float
    required: true
  - name: границы
    type: geometry.polygon
    srid: 4326
    indexed: true
  - name: фронт
    type: geometry.linestring
    srid: 4326
    description: Кромка огня
  - name: направление_распространения
    type: float
    description: Азимут в градусах
  - name: скорость_распространения_м_мин
    type: float
  - name: высота_пламени_м
    type: float
  - name: задымление
    type: geometry.polygon
    srid: 4326
  - name: статус
    type: enum(действует, локализован, потушен)
    required: true
links:
  - type: угрожает
    target: [Объект, Локация]
  - type: тушит
    target: [Спасательная_группа]

9. МВД / Полиция / Росгвардия

9.1 Подозреваемый

type: Подозреваемый
extends: Персона
description: Разыскиваемое или подозреваемое лицо
classification_default: ДСП
properties:
  - name: приметы
    type: text
  - name: статус_розыска
    type: enum(местный, федеральный, международный, не_в_розыске)
    required: true
    indexed: true
  - name: статья_ук
    type: list(string)
  - name: последнее_местоположение
    type: geometry.point
    srid: 4326
    indexed: true
  - name: время_последнего_наблюдения
    type: datetime
  - name: опасность
    type: enum(не_опасен, опасен, вооружён, особо_опасен)
    required: true
  - name: фото
    type: list(reference(Медиа))
  - name: отпечатки
    type: boolean
    description: Есть ли в базе дактилоскопии
  - name: ДНК
    type: boolean
    description: Есть ли в базе ДНК
links:
  - type: фигурант
    target: [Дело]
  - type: входит_в
    target: [Группировка]
  - type: владеет
    target: [Транспорт_в_розыске]
  - type: замечен
    target: [Камера_наблюдения, Распознанное_лицо]

9.2 Дело

type: Дело
description: Уголовное / административное дело
classification_default: ДСП
properties:
  - name: номер
    type: string(50)
    required: true
    unique: true
    indexed: true
  - name: тип
    type: enum(уголовное, административное, розыскное, оперативное)
    required: true
  - name: статус
    type: enum(возбуждено, расследуется, приостановлено, направлено_в_суд, закрыто, прекращено)
    required: true
    indexed: true
  - name: статьи
    type: list(string)
    description: Статьи УК/КоАП
  - name: следователь
    type: reference(Персона)
  - name: дата_возбуждения
    type: datetime
    required: true
  - name: описание
    type: text
  - name: ущерб_руб
    type: float
links:
  - type: фигуранты
    target: [Подозреваемый, Персона]
    cardinality: many_to_many
  - type: доказательства
    target: [Вещдок, Медиа, Документ]
  - type: связано_с
    target: [Происшествие]

9.3 Происшествие

type: Происшествие
extends: Событие
description: Зафиксированное происшествие
classification_default: ДСП
properties:
  - name: тип
    type: enum(кража, грабёж, разбой, убийство, ДТП, нападение, хулиганство, мошенничество, наркотики, теракт, взрыв, массовые_беспорядки, другое)
    required: true
    indexed: true
  - name: ущерб_руб
    type: float
  - name: пострадавшие
    type: int
    default: 0
  - name: погибшие
    type: int
    default: 0
  - name: статус
    type: enum(зарегистрировано, проверяется, подтверждено, раскрыто, нераскрыто)
    required: true
  - name: координаты
    type: geometry.point
    srid: 4326
    required: true
    indexed: true
  - name: адрес
    type: string(500)
links:
  - type: привело_к
    target: [Дело]
  - type: участники
    target: [Персона, Подозреваемый]
  - type: зафиксировано
    target: [Камера_наблюдения, Патруль]

9.4 Патруль

type: Патруль
description: Патрульный наряд
classification_default: ДСП
properties:
  - name: позывной
    type: string(50)
    required: true
    indexed: true
  - name: состав
    type: int
    required: true
  - name: маршрут
    type: geometry.linestring
    srid: 4326
  - name: зона_ответственности
    type: geometry.polygon
    srid: 4326
  - name: статус
    type: enum(на_базе, патрулирует, вызов, происшествие, преследование, перерыв)
    required: true
    indexed: true
  - name: координаты
    type: geometry.point
    srid: 4326
    indexed: true
  - name: транспорт
    type: reference(Транспорт)
  - name: вооружение
    type: list(string)
  - name: смена_начало
    type: datetime
  - name: смена_конец
    type: datetime
links:
  - type: обслуживает
    target: [Зона_ответственности]
  - type: реагирует_на
    target: [Происшествие]

9.5 Камера_наблюдения

type: Камера_наблюдения
extends: Сенсор
description: Камера видеонаблюдения
classification_default: ДСП
properties:
  - name: тип
    type: enum(CCTV, ALPR, тепловизор, PTZ, панорамная, бодикамера)
    required: true
    indexed: true
  - name: разрешение
    type: string(20)
    description: "1920x1080, 4K и т.д."
  - name: угол_обзора
    type: float
    description: Градусы
  - name: направление
    type: float
    description: Азимут
  - name: ночной_режим
    type: boolean
  - name: запись
    type: boolean
    description: Ведётся ли запись
  - name: архив_дней
    type: int
    description: Глубина хранения
  - name: аналитика
    type: list(enum(движение, лица, номера, оставленные_предметы, подсчёт_людей, пересечение_линии))
links:
  - type: обнаружила
    target: [Распознанное_лицо, Транспорт_в_розыске]
  - type: покрывает
    target: [Локация]

9.6 Распознанное_лицо

type: Распознанное_лицо
description: Результат распознавания лица на камере
classification_default: ДСП
properties:
  - name: фото
    type: reference(Медиа)
    required: true
  - name: уверенность
    type: float
    required: true
    description: Процент совпадения (0-100)
  - name: время
    type: datetime
    required: true
    indexed: true
  - name: камера
    type: reference(Камера_наблюдения)
    required: true
  - name: персона
    type: reference(Персона)
    description: Привязка к известной персоне (если совпадение)
  - name: координаты
    type: geometry.point
    srid: 4326
    indexed: true
  - name: подтверждено_оператором
    type: boolean
    default: false
links:
  - type: совпадает_с
    target: [Персона, Подозреваемый]
  - type: обнаружен_камерой
    target: [Камера_наблюдения]

9.7 Транспорт_в_розыске

type: Транспорт_в_розыске
extends: Транспорт
description: Разыскиваемое транспортное средство
classification_default: ДСП
properties:
  - name: причина_розыска
    type: enum(угон, ДТП, преступление, розыск_владельца, контрабанда)
    required: true
  - name: дата_розыска
    type: datetime
    required: true
  - name: маршрут
    type: list(json)
    description: "История обнаружений: [{время, координаты, камера}]"
  - name: фото
    type: list(reference(Медиа))
links:
  - type: принадлежит
    target: [Подозреваемый, Персона]
  - type: зафиксирован
    target: [Камера_наблюдения]
  - type: связан_с
    target: [Дело]

9.8 Вещдок

type: Вещдок
description: Вещественное доказательство
classification_default: ДСП
properties:
  - name: тип
    type: enum(оружие, документ, электроника, одежда, транспорт, наркотики, деньги, биоматериал, другое)
    required: true
  - name: описание
    type: text
    required: true
  - name: место_обнаружения
    type: geometry.point
    srid: 4326
  - name: время_обнаружения
    type: datetime
  - name: статус_экспертизы
    type: enum(не_назначена, в_работе, завершена, дополнительная)
  - name: результат_экспертизы
    type: text
  - name: место_хранения
    type: string(255)
  - name: фото
    type: list(reference(Медиа))
links:
  - type: является_вещдоком
    target: [Дело]
  - type: изъят_у
    target: [Подозреваемый, Персона]

9.9 Группировка

type: Группировка
extends: Организация
description: Преступная / экстремистская группа
classification_default: секретно
properties:
  - name: тип
    type: enum(ОПГ, ОПС, экстремисты, террористы, банда, наркокартель, кибер)
    required: true
    indexed: true
  - name: численность_оценка
    type: int
  - name: территория
    type: geometry.polygon
    srid: 4326
  - name: лидер
    type: reference(Подозреваемый)
  - name: специализация
    type: list(string)
    description: "Наркотики, оружие, рэкет и т.д."
  - name: уровень_угрозы
    type: enum(низкий, средний, высокий, критический)
  - name: статус
    type: enum(активна, под_наблюдением, ликвидирована, реорганизована)
links:
  - type: участники
    target: [Подозреваемый, Персона]
    cardinality: many_to_many
  - type: контролирует
    target: [Локация]
  - type: связана_с
    target: [Группировка]

10. ФСБ / Разведка

10.1 Объект_наблюдения

type: Объект_наблюдения
description: Объект оперативного наблюдения
classification_default: секретно
properties:
  - name: тип_объекта
    type: enum(персона, организация, канал, сеть)
    required: true
  - name: персона
    type: reference(Персона)
  - name: организация
    type: reference(Организация)
  - name: статус_разработки
    type: enum(предварительная_проверка, оперативная_проверка, оперативная_разработка, реализация, архив)
    required: true
    indexed: true
  - name: куратор
    type: reference(Персона)
  - name: уровень_угрозы
    type: enum(потенциальная, реальная, непосредственная, критическая)
  - name: дата_постановки
    type: datetime
    required: true
  - name: основание
    type: reference(Документ)
links:
  - type: контактирует_с
    target: [Персона, Объект_наблюдения]
  - type: использует
    target: [Канал_связи, Сетевой_узел]
  - type: финансируется
    target: [Финансовая_операция]

10.2 Финансовая_операция

type: Финансовая_операция
description: Финансовая транзакция
classification_default: секретно
properties:
  - name: сумма
    type: float
    required: true
    indexed: true
  - name: валюта
    type: string(3)
    required: true
  - name: отправитель
    type: reference(Персона)
  - name: получатель
    type: reference(Персона)
  - name: банк_отправителя
    type: string(255)
  - name: банк_получателя
    type: string(255)
  - name: назначение
    type: string(500)
  - name: дата
    type: datetime
    required: true
    indexed: true
  - name: подозрительность
    type: float
    description: Оценка подозрительности (0-1), ML-скоринг
    indexed: true
  - name: признаки
    type: list(enum(дробление, транзит, кольцевая, офшор, крипто, нал, подставное_лицо))
links:
  - type: от
    target: [Персона, Организация]
  - type: к
    target: [Персона, Организация]
  - type: связана_с
    target: [Объект_наблюдения, Дело]

10.3 Кибер_угроза

type: Кибер_угроза
description: Киберугроза / инцидент
classification_default: секретно
properties:
  - name: тип
    type: enum(APT, фишинг, DDoS, малварь, ransomware, exploit, supply_chain, insider, MITM, data_breach)
    required: true
    indexed: true
  - name: источник_ip
    type: string(45)
    indexed: true
  - name: источник_домен
    type: string(255)
  - name: цель
    type: list(reference(Сетевой_узел))
  - name: ioc
    type: json
    description: "Indicators of Compromise: {hashes: [], ips: [], domains: [], urls: [], yara: []}"
  - name: статус
    type: enum(обнаружена, анализируется, подтверждена, нейтрализована, ложная)
    required: true
  - name: серьёзность
    type: enum(low, medium, high, critical)
    required: true
    indexed: true
  - name: tta_группа
    type: string(100)
    description: "Attributed threat actor (APT28, Lazarus и т.д.)"
  - name: mitre_attack
    type: list(string)
    description: "MITRE ATT&CK techniques: T1059, T1566 и т.д."
links:
  - type: атакует
    target: [Сетевой_узел, Организация]
  - type: атрибутируется
    target: [Организация, Персона]

10.4 Сетевой_узел

type: Сетевой_узел
description: Объект в киберпространстве
classification_default: ДСП
properties:
  - name: ip
    type: string(45)
    indexed: true
  - name: домен
    type: string(255)
    indexed: true
  - name: хостинг
    type: string(255)
  - name: страна
    type: string(2)
    description: ISO 3166-1 alpha-2
  - name: asn
    type: int
  - name: регистратор
    type: string(255)
  - name: дата_регистрации
    type: datetime
  - name: ssl_issuer
    type: string(255)
  - name: ssl_expiry
    type: datetime
  - name: активность
    type: enum(активен, неактивен, подозрителен, заблокирован)
    indexed: true
  - name: whois
    type: json
links:
  - type: связан_с
    target: [Сетевой_узел, Персона, Организация]
  - type: атакован
    target: [Кибер_угроза]

10.5 Информационная_операция

type: Информационная_операция
description: Информационное воздействие
classification_default: секретно
properties:
  - name: платформа
    type: list(enum(telegram, vk, youtube, tiktok, facebook, twitter, сми, радио, листовки, другое))
    required: true
  - name: нарратив
    type: text
    required: true
    description: Основной продвигаемый нарратив
  - name: целевая_аудитория
    type: list(string)
  - name: охват_оценка
    type: int
    description: Оценка количества людей, получивших информацию
  - name: источник
    type: string(255)
    description: Предполагаемый источник / заказчик
  - name: динамика
    type: enum(набирает_обороты, стабильна, угасает)
  - name: дата_обнаружения
    type: datetime
    required: true
  - name: контрмеры
    type: text
links:
  - type: продвигается_через
    target: [Сетевой_узел, Персона]
  - type: направлена_против
    target: [Организация, Персона, Локация]

11. Таможня / ФТС

11.1 Груз

type: Груз
description: Перемещаемый товар
classification_default: ДСП
properties:
  - name: описание
    type: text
    required: true
  - name: код_тн_вэд
    type: string(10)
    required: true
    indexed: true
  - name: вес_кг
    type: float
    required: true
  - name: стоимость
    type: float
  - name: валюта
    type: string(3)
  - name: страна_происхождения
    type: string(2)
    indexed: true
  - name: отправитель
    type: reference(Участник_ВЭД)
  - name: получатель
    type: reference(Участник_ВЭД)
  - name: транспорт
    type: reference(Транспорт)
  - name: контейнер
    type: string(20)
  - name: досмотрен
    type: boolean
    default: false
  - name: риск
    type: enum(низкий, средний, высокий, критический)
    indexed: true
links:
  - type: указан_в
    target: [Декларация]
  - type: перевозится
    target: [Транспорт]

11.2 Участник_ВЭД

type: Участник_ВЭД
extends: Организация
description: Участник внешнеэкономической деятельности
classification_default: ДСП
properties:
  - name: инн
    type: string(12)
    required: true
    unique: true
    indexed: true
  - name: рейтинг_риска
    type: float
    description: ML-скоринг (0-1)
    indexed: true
  - name: количество_операций
    type: int
  - name: нарушения
    type: int
    default: 0
  - name: статус
    type: enum(активен, под_контролем, заблокирован)
links:
  - type: отправляет
    target: [Груз]
  - type: получает
    target: [Груз]
  - type: связан_с
    target: [Персона, Организация]

12. Здравоохранение / Роспотребнадзор

12.1 Эпид_очаг

type: Эпид_очаг
description: Очаг эпидемии
classification_default: ДСП
properties:
  - name: заболевание
    type: string(255)
    required: true
    indexed: true
  - name: возбудитель
    type: string(255)
  - name: координаты
    type: geometry.point
    srid: 4326
    required: true
    indexed: true
  - name: радиус_км
    type: float
  - name: заболевших
    type: int
    required: true
  - name: госпитализировано
    type: int
  - name: умерло
    type: int
  - name: выздоровело
    type: int
  - name: R0
    type: float
    description: Базовое репродуктивное число
  - name: Rt
    type: float
    description: Текущее репродуктивное число
  - name: динамика
    type: enum(рост, стабилизация, снижение, ликвидирован)
    required: true
  - name: дата_первого_случая
    type: datetime
    required: true
links:
  - type: обслуживается
    target: [Медучреждение]
  - type: находится_в
    target: [Карантинная_зона]

12.2 Медучреждение

type: Медучреждение
extends: Объект
description: Больница, поликлиника
classification_default: открыто
properties:
  - name: тип
    type: enum(больница, поликлиника, ФАП, госпиталь, инфекционная, реанимация, полевой_медпункт)
    required: true
    indexed: true
  - name: койки_всего
    type: int
  - name: койки_свободно
    type: int
  - name: ИВЛ_всего
    type: int
  - name: ИВЛ_свободно
    type: int
  - name: персонал
    type: int
  - name: специализация
    type: list(string)
  - name: загрузка_процент
    type: float
links:
  - type: принимает_из
    target: [Эпид_очаг, Зона_ЧС]
  - type: находится_в
    target: [Локация]

13. Платформенные модули

13.1 Логистика

type: Склад
description: Склад / пункт хранения
classification_default: ДСП
properties:
  - name: название
    type: string(255)
    required: true
  - name: тип
    type: enum(центральный, региональный, полевой, передвижной)
    required: true
  - name: координаты
    type: geometry.point
    srid: 4326
    required: true
    indexed: true
  - name: вместимость_м3
    type: float
  - name: заполненность_процент
    type: float
  - name: принадлежность
    type: reference(Подразделение)
  - name: охрана
    type: boolean
  - name: маскировка
    type: boolean
links:
  - type: хранит
    target: [Запас]
  - type: снабжает
    target: [Подразделение]
type: Запас
description: Конкретный запас на складе
classification_default: ДСП
properties:
  - name: склад
    type: reference(Склад)
    required: true
  - name: категория
    type: enum(боеприпасы, ГСМ, продовольствие, медикаменты, запчасти, связь, БПЛА_расходники, инженерное, вещевое)
    required: true
    indexed: true
  - name: наименование
    type: string(255)
    required: true
  - name: количество
    type: float
    required: true
  - name: единица
    type: string(20)
    required: true
  - name: порог_минимальный
    type: float
    description: При достижении — автоматическая заявка
  - name: срок_годности
    type: datetime
  - name: партия
    type: string(100)
links:
  - type: расходуется
    target: [Применение_оружия, Огневая_задача]
type: MEDEVAC_запрос
description: Запрос на медицинскую эвакуацию
classification_default: ДСП
properties:
  - name: инициатор
    type: reference(Подразделение)
    required: true
  - name: координаты
    type: geometry.point
    srid: 4326
    required: true
  - name: количество_раненых
    type: int
    required: true
  - name: категории
    type: json
    description: "{T1: 2, T2: 3, T3: 1}"
  - name: безопасность_зоны
    type: enum(безопасная, условно_безопасная, под_огнём)
    required: true
  - name: маркировка_площадки
    type: enum(дым, панель, фонарь, ИК_маяк, нет)
  - name: транспорт
    type: reference(Транспорт)
    description: Назначенный транспорт эвакуации
  - name: медучреждение
    type: reference(Медучреждение)
    description: Куда эвакуировать
  - name: статус
    type: enum(запрошен, принят, транспорт_в_пути, погрузка, эвакуация, доставлен)
    required: true
  - name: приоритет
    type: enum(срочный, приоритетный, обычный)
    required: true
links:
  - type: эвакуирует
    target: [Пострадавший, Персона]
  - type: доставляет_в
    target: [Медучреждение]

13.2 Связь

type: Канал_связи_комм
description: Канал коммуникации между узлами
classification_default: ДСП
properties:
  - name: тип
    type: enum(спутниковый, тропосферный, радиорелейный, УКВ, ДМВ, КВ, mesh_wifi, mesh_900mhz, оптоволокно, курьерский, акустический_подводный)
    required: true
    indexed: true
  - name: узел_a
    type: reference(Узел_связи)
    required: true
  - name: узел_b
    type: reference(Узел_связи)
    required: true
  - name: пропускная_способность_кбит
    type: float
  - name: задержка_мс
    type: float
  - name: потери_пакетов_процент
    type: float
  - name: статус
    type: enum(активен, деградирован, подавлен, потерян, резервный)
    required: true
    indexed: true
  - name: шифрование
    type: enum(ГОСТ, AES256, нет)
  - name: ППРЧ
    type: boolean
    description: Псевдослучайная перестройка рабочей частоты
links:
  - type: соединяет
    target: [Узел_связи]
  - type: обслуживает
    target: [Подразделение]

13.3 Симуляция

type: Сценарий
description: Сценарий моделирования / what-if
classification_default: ДСП
properties:
  - name: название
    type: string(255)
    required: true
  - name: тип
    type: enum(what_if, военная_игра, оптимизация, прогноз, тренировочный)
    required: true
  - name: базовый_снимок
    type: string(100)
    description: ID снимка онтологии, от которого отходит сценарий
  - name: модификации
    type: json
    description: Что изменено относительно базового снимка
  - name: статус
    type: enum(черновик, готов, выполняется, завершён, отменён)
    required: true
  - name: результат
    type: json
  - name: автор
    type: reference(Персона)
  - name: время_создания
    type: datetime
  - name: время_завершения
    type: datetime
links:
  - type: порождает
    target: [Вариант_действий]
  - type: использует_данные
    target: [Операция, Подразделение]

13.4 Обучение

type: Сертификат
description: Сертификат оператора
classification_default: ДСП
properties:
  - name: оператор
    type: reference(Персона)
    required: true
  - name: роль
    type: enum(командир, аналитик, оператор_БПЛА, оператор_ПВО, оператор_огня, дежурный_МЧС, дежурный_полиция, администратор)
    required: true
  - name: уровень
    type: enum(новичок, базовый, продвинутый, эксперт)
    required: true
  - name: дата_выдачи
    type: datetime
    required: true
  - name: дата_истечения
    type: datetime
    required: true
  - name: балл_экзамена
    type: float
  - name: экзаменатор
    type: reference(Персона)
  - name: статус
    type: enum(действует, истёк, отозван)
    required: true
    indexed: true
links:
  - type: получен_по_результатам
    target: [Сессия_обучения]
  - type: даёт_доступ_к
    target: [Роль]

13.5 Отчёты

type: Отчёт
description: Формализованный отчёт
classification_default: ДСП
properties:
  - name: шаблон
    type: reference(Шаблон_отчёта)
    required: true
  - name: заголовок
    type: string(500)
    required: true
  - name: гриф
    type: enum(открыто, ДСП, секретно, совершенно_секретно)
    required: true
  - name: период_начало
    type: datetime
  - name: период_конец
    type: datetime
  - name: автор
    type: reference(Персона)
    required: true
  - name: статус
    type: enum(черновик, на_проверке, утверждён, отклонён, распространён, архив)
    required: true
    indexed: true
  - name: файл
    type: reference(Медиа)
    description: Сгенерированный PDF/DOCX
  - name: водяной_знак
    type: boolean
    default: true
  - name: номер_экземпляра
    type: int
links:
  - type: утверждён
    target: [Персона]
  - type: распространён_кому
    target: [Персона, Подразделение]
  - type: основан_на
    target: [Операция, Зона_ЧС, Дело]

13.6 Метео

type: Метеоданные
description: Метеорологические данные с поста
classification_default: открыто
properties:
  - name: метеопост
    type: reference(Метеопост)
    required: true
  - name: время
    type: datetime
    required: true
    indexed: true
  - name: температура_c
    type: float
  - name: давление_мм
    type: float
  - name: влажность_процент
    type: float
  - name: ветер_скорость_мс
    type: float
  - name: ветер_направление_град
    type: float
  - name: ветер_по_высотам
    type: json
    description: "{200: {скорость: 5, направление: 270}, 400: {...}, ...}"
  - name: видимость_м
    type: float
  - name: облачность_баллы
    type: int
    description: 0-10
  - name: осадки_тип
    type: enum(нет, дождь, снег, град, туман, морось)
  - name: осадки_интенсивность
    type: enum(нет, слабые, умеренные, сильные)
links:
  - type: измерено_на
    target: [Метеопост]
  - type: влияет_на
    target: [Огневая_задача, БПЛА, Операция]

13.7 Правовое

type: Защищённый_объект
description: Объект, защищённый МГП
classification_default: ДСП
properties:
  - name: тип
    type: enum(больница, школа, религиозный, культурный, ООН, красный_крест, лагерь_беженцев, водозабор, электростанция_гражданская, жилой_квартал)
    required: true
    indexed: true
  - name: название
    type: string(255)
  - name: координаты
    type: geometry.point
    srid: 4326
    required: true
    indexed: true
  - name: радиус_защиты_м
    type: float
    default: 500
    description: Буферная зона вокруг объекта
  - name: основание
    type: string(255)
    description: Конвенция / статья / приказ
  - name: подтверждён
    type: boolean
    default: false
    description: Подтверждён разведкой
  - name: статус
    type: enum(действующий, разрушен, эвакуирован, спорный)
  - name: источник
    type: string(255)
    description: Откуда получены данные (МККК, ООН, разведка)
links:
  - type: ограничивает
    target: [Зона_запрета_огня]
  - type: находится_в
    target: [Локация]
type: ROE_правило
description: Правило ведения огня
classification_default: секретно
properties:
  - name: код
    type: string(20)
    required: true
    unique: true
  - name: описание
    type: text
    required: true
  - name: условие
    type: text
    description: При каких условиях применяется
  - name: действие
    type: enum(разрешено, запрещено, требует_подтверждения)
    required: true
  - name: уровень_подтверждения
    type: enum(оператор, командир_роты, командир_батальона, командир_бригады, старший_начальник)
  - name: применимо_к
    type: list(enum(все, артиллерия, БПЛА, ПВО, стрелковое, РЭБ, НРТК, БЭК))
  - name: действует_с
    type: datetime
    required: true
  - name: действует_до
    type: datetime
  - name: утверждено
    type: reference(Персона)
    required: true
links:
  - type: ограничивает
    target: [Средство_поражения, Огневое_средство, Ударный_БПЛА]

14. Сводная таблица всех сущностей

# Сущность Модуль Полей Гриф по умолчанию
1 Персона Базовый 15 ДСП
2 Организация Базовый 10 ДСП
3 Транспорт Базовый 12 ДСП
4 Объект Базовый 8 открыто
5 Локация Базовый 6 открыто
6 Событие Базовый 10 ДСП
7 Документ Базовый 10 ДСП
8 Сенсор Базовый 9 ДСП
9 Медиа Базовый 8 ДСП
10 Коммуникация Базовый 10 секретно
11 Цель Военный 12 секретно
12 Средство_поражения Военный 8 секретно
13 Подразделение Военный 12 секретно
14 Боевой_порядок Военный 6 секретно
15 Маршрут_движения Военный 7 секретно
16 Зона_ПВО Военный 7 секретно
17 Зона_РЭБ Военный 7 секретно
18 Операция Военный 9 секретно
19 Разведсводка Военный 7 секретно
20 Огневая_задача Военный 12 секретно
21 Рубеж Военный 5 секретно
22 БПЛА Военный 14 секретно
23 Позиция Военный 6 секретно
24 Минное_поле Военный 10 секретно
25 Фортификация Военный 8 секретно
26 Средство_РЭБ Борьба 9 секретно
27 Задача_РЭБ Борьба 8 секретно
28 Зона_подавления Борьба 6 секретно
29 Средство_ПВО Борьба 10 секретно
30 Перехват Борьба 8 секретно
31 Огневое_средство Борьба 10 секретно
32 Ударный_БПЛА Борьба 11 секретно
33 Рой_БПЛА Борьба 10 секретно
34 Боевая_платформа Борьба 12 секретно
35 Применение_оружия Борьба 9 секретно
36 НРТК Робототехника 14 секретно
37 НБЭК Робототехника 14 секретно
38 АНПА Робототехника 12 секретно
39 Придонная_станция Робототехника 8 секретно
40 Автономная_миссия Робототехника 12 секретно
41 Автономное_решение Робототехника 12 секретно
42 Боевой_приказ C2 12 секретно
43 Боевая_задача C2 12 секретно
44 Сигнал C2 6 секретно
45 Разграничительная_линия C2 6 секретно
46 FSCM C2 8 секретно
47 Доклад C2 9 секретно
48 Тактическое_сообщение Тактический 8 секретно
49 Карточка_цели Тактический 14 секретно
50 Позывной Тактический 7 секретно
51 Зона_ЧС МЧС 13 открыто
52 Спасательная_группа МЧС 10 ДСП
53 Пострадавший МЧС 10 ДСП
54 Пункт_эвакуации МЧС 10 открыто
55 Укрытие МЧС 9 ДСП
56 Опасный_объект МЧС 10 ДСП
57 Маршрут_эвакуации МЧС 8 открыто
58 Ресурс_МЧС МЧС 8 ДСП
59 Прогноз_обстановки МЧС 8 ДСП
60 Разрушение МЧС 8 открыто
61 Водный_объект МЧС 8 открыто
62 Пожар МЧС 10 открыто
63 Подозреваемый МВД 12 ДСП
64 Дело МВД 9 ДСП
65 Происшествие МВД 9 ДСП
66 Патруль МВД 10 ДСП
67 Камера_наблюдения МВД 10 ДСП
68 Распознанное_лицо МВД 7 ДСП
69 Транспорт_в_розыске МВД 5 ДСП
70 Вещдок МВД 8 ДСП
71 Группировка МВД 8 секретно
72 Объект_наблюдения ФСБ 8 секретно
73 Финансовая_операция ФСБ 11 секретно
74 Кибер_угроза ФСБ 11 секретно
75 Сетевой_узел ФСБ 10 ДСП
76 Информационная_операция ФСБ 8 секретно
77 Груз ФТС 12 ДСП
78 Участник_ВЭД ФТС 6 ДСП
79 Эпид_очаг Здрав. 12 ДСП
80 Медучреждение Здрав. 8 открыто
81 Склад Логистика 9 ДСП
82 Запас Логистика 9 ДСП
83 MEDEVAC_запрос Логистика 11 ДСП
84 Канал_связи_комм Связь 11 ДСП
85 Сценарий Симуляция 9 ДСП
86 Сертификат Обучение 9 ДСП
87 Отчёт Отчёты 11 ДСП
88 Метеоданные Метео 13 открыто
89 Защищённый_объект Правовое 9 ДСП
90 ROE_правило Правовое 9 секретно

Итого: ~90 типов сущностей, ~900 полей


15. ER-диаграмма (ключевые связи)

                            ┌───────────────┐
                            │   Операция    │
                            └───────┬───────┘
                                    │ включает
                    ┌───────────────┼───────────────┐
                    │               │               │
             ┌──────▼──────┐ ┌─────▼──────┐ ┌──────▼──────┐
             │Подразделение│ │Боевой_приказ│ │Боевая_задача│
             └──────┬──────┘ └────────────┘ └──────┬──────┘
                    │ состоит_из                    │ назначена
          ┌─────────┼─────────┐              ┌─────▼─────┐
          │         │         │              │   Цель    │
     ┌────▼───┐ ┌───▼───┐ ┌──▼──┐          └─────┬─────┘
     │Персона │ │Транс- │ │БПЛА │                 │ поражается
     └────┬───┘ │порт   │ └──┬──┘           ┌─────▼──────┐
          │     └───────┘    │              │ Средство   │
          │                  │              │ поражения  │
          │     ┌────────────┘              └────────────┘
          │     │
     ┌────▼─────▼────┐
     │ Применение    │
     │ оружия        │
     └───────────────┘

  ┌──────────┐   обнаруживает   ┌──────────┐
  │  Сенсор  │─────────────────▶│   Цель   │
  └──────────┘                  └──────────┘

  ┌──────────┐   фиксирует     ┌───────────────┐
  │  Камера  │─────────────────▶│Распознанное   │──▶ Подозреваемый
  └──────────┘                  │лицо           │
                                └───────────────┘

  ┌──────────┐   входит_в     ┌───────────────┐
  │ Персона  │───────────────▶│  Организация  │
  └──────────┘                └───────────────┘
        │
        │ участвует_в
        ▼
  ┌──────────┐                ┌───────────────┐
  │ Событие  │───────────────▶│   Локация     │
  └──────────┘  находится_в   └───────────────┘

  ┌──────────┐   питает        ┌──────────┐   снабжает
  │  Склад   │────────────────▶│  Запас   │──────────▶ Подразделение
  └──────────┘                 └──────────┘

  ┌──────────┐   моделирует    ┌──────────┐
  │ Сценарий │────────────────▶│ Вариант  │
  └──────────┘                 │ действий │
                               └──────────┘