---
title: 'Модель Evidence и корреляция'
description: 'Неизменяемая модель Evidence с оценкой качества и корреляция, связывающая родственные симптомы с вероятной первопричиной с явным уровнем уверенности.'
section: 'Operations Center'
weight: 6
related:
  - detectors-and-canons
  - massive-incidents
---

## Модель Evidence

### Что такое Evidence

`Evidence` — структурированное доказательство, на основании которого система создаёт, обновляет или верифицирует Issue.

Evidence может быть:

- автоматически рассчитанным;
- полученным от устройства;
- импортированным из внешней системы;
- добавленным пользователем;
- сформированным профильным отчётом;
- приложенным в виде документа, фото или комментария.

### Структура Evidence

```yaml
evidence_id: EVD-830129
issue_id: OHM-2026-001842
type: detector_finding
source:
  provider: analyze_station
  detector_id: archive.tail_gap.v3
  detector_version: '3.2.1'
observed_at: '2026-07-23T04:00:00Z'
created_at: '2026-07-23T04:03:12Z'

payload:
  missing_hours: 73
  coverage_valid: 0.91
  last_valid_hour: '2026-07-20T03:00:00Z'

quality:
  completeness: 1.0
  freshness: 0.98
  consistency: 0.96
  confidence: 0.98

links:
  report: '/reports/analyze-station/5690'
```

### Типы Evidence

| Тип                       | Пример                        |
| ------------------------- | ----------------------------- |
| `detector_finding`        | результат детектора           |
| `telemetry_sample`        | фрагмент телеметрии           |
| `archive_window`          | сводка по архивному периоду   |
| `event_log`               | журнал событий устройства     |
| `configuration_snapshot`  | снимок конфигурации           |
| `operator_comment`        | комментарий диспетчера        |
| `field_report`            | акт или отчёт полевой бригады |
| `photo`                   | фотография оборудования       |
| `external_ticket`         | ссылка на внешнюю заявку      |
| `verification_result`     | подтверждение устранения      |
| `root_cause_confirmation` | подтверждение первопричины    |
| `knowledge_application`   | применение статьи базы знаний |

### Качество Evidence

Для каждого Evidence рассчитывается качество:

$$
Q_{evidence} =
w_c C +
w_f F +
w_s S +
w_t T
$$

где:

- $C$ — completeness, полнота;
- $F$ — freshness, актуальность;
- $S$ — consistency, согласованность;
- $T$ — trust, доверие к источнику;
- $w_c + w_f + w_s + w_t = 1$.

Рекомендуемые базовые веса:

| Компонент                   |  Вес |
| --------------------------- | ---: |
| $w_c$ — полнота             | 0.30 |
| $w_f$ — актуальность        | 0.25 |
| $w_s$ — согласованность     | 0.25 |
| $w_t$ — доверие к источнику | 0.20 |

Результат нормируется в диапазон от `0` до `1`.

### Неизменяемость Evidence

Исходное Evidence не редактируется задним числом. Исправление создаёт новую версию или отдельное корректирующее Evidence.

Это обеспечивает:

- аудит;
- воспроизводимость;
- защиту истории;
- корректный разбор спорных случаев;
- возможность повторного расчёта.

## Корреляция событий и Root Cause

### Задача корреляции

Корреляция предотвращает создание множества независимых Issues на одну и ту же техническую причину.

Система анализирует:

- совпадение актива;
- временную близость;
- топологическую зависимость;
- общую прошивку;
- общий шлюз;
- общего оператора связи;
- общий регион;
- общую серверную очередь;
- последовательность симптомов;
- исторические связи;
- подтверждённые root causes прошлых случаев.

### Уровни корреляции

#### Внутри одного актива

Несколько симптомов объединяются вокруг главного канона.

```mermaid
flowchart TD
  A["stale_communication"] --> C{"Корреляция внутри актива"}
  B["no_hourly_archive"] --> C
  D["battery_unknown"] --> C
  C --> R["Главный Issue stale_communication"]
  C --> S1["Вторичный сигнал no_hourly_archive"]
  C --> S2["Вторичный сигнал battery_unknown"]
```

#### Между активами

Похожие проблемы группируются в массовый инцидент.

```mermaid
flowchart TD
  A["38 устройств"] --> G{"Группировка"}
  B["Одна версия firmware"] --> G
  C["Один временной интервал"] --> G
  D["Один тип сбоя"] --> G
  G --> M["Massive Incident firmware_regression"]
```

#### По зависимости

Проблемы дочерних устройств связываются с отказом общего компонента.

```mermaid
flowchart TD
  A["Gateway-17 недоступен"] --> B["12 корректоров без связи"]
  B --> C["12 архивов не доставлены"]
  C --> D["Один dependency incident"]
```

### Оценка связи (Correlation Score)

Для оценки силы связи используется объяснимая модель:

$$
S_{corr} =
w_a A +
w_t T +
w_p P +
w_c C +
w_h H
$$

где:

- $A$ — совпадение актива или зависимости;
- $T$ — временная близость;
- $P$ — совпадение паттерна;
- $C$ — общий контекст;
- $H$ — историческая подтверждённость связи.

Пример весов:

| Фактор                                  |  Вес |
| --------------------------------------- | ---: |
| $A$ — совпадение актива или зависимости | 0.30 |
| $T$ — временная близость                | 0.20 |
| $P$ — совпадение паттерна               | 0.20 |
| $C$ — общий контекст                    | 0.15 |
| $H$ — историческая подтверждённость     | 0.15 |

Порог объединения задаётся по классу проблемы. Для критичных security-сигналов допускается более консервативный порог.

### Классы Root Cause

OHM использует управляемый справочник первопричин:

| Класс          | Примеры                                 |
| -------------- | --------------------------------------- |
| Power          | батарея, питание, преобразователь       |
| Communication  | сеть, SIM, сигнал, оператор             |
| Firmware       | регрессия, несовместимость              |
| Configuration  | ошибочный параметр                      |
| Registry       | дубль, ghost, неверная привязка         |
| Sensor         | отказ, дрейф, залипание                 |
| Metering       | метрологическая проблема                |
| Infrastructure | сервер, очередь, шлюз                   |
| Integration    | API, формат, mapping                    |
| Human          | ошибка действия или процесса            |
| Environment    | температура, влага, внешнее воздействие |
| Security       | нарушение целостности или доступа       |
| External       | сторонняя система или поставщик         |
| Unknown        | недостаточно данных                     |

### Статусы Root Cause

| Статус                | Значение                                             |
| --------------------- | ---------------------------------------------------- |
| `hypothesis`          | автоматически предложенная гипотеза                  |
| `under_investigation` | гипотеза проверяется                                 |
| `probable`            | подтверждена несколькими независимыми признаками     |
| `confirmed`           | подтверждена уполномоченным пользователем и Evidence |
| `rejected`            | гипотеза отклонена                                   |
| `unknown`             | первопричина не установлена                          |

### Уверенность в Root Cause

Уверенность в гипотезе рассчитывается по совокупности доказательств:

$$
C_{root} =
\frac{
\sum_{i=1}^{n} r_i q_i a_i
}{
\sum_{i=1}^{n} r_i
}
\cdot K_{independence}
$$

где:

- $r_i$ — надёжность детектора или источника;
- $q_i$ — качество Evidence;
- $a_i$ — согласованность Evidence с гипотезой;
- $K_{independence}$ — коэффициент независимости источников.

Если несколько Evidence происходят из одного и того же исходного набора данных, они не считаются полностью независимыми.

### Операционная уверенность (Operational Confidence)

`Operational Confidence` показывает, насколько система уверена, что Issue является реальной и правильно классифицированной проблемой.

$$
C_{issue} =
w_d D +
w_e E +
w_r R +
w_h H -
w_x X
$$

где:

- $D$ — надёжность детекторов;
- $E$ — качество Evidence;
- $R$ — согласованность корреляции;
- $H$ — историческая подтверждаемость;
- $X$ — штраф за противоречия и недостаток данных.

Интерпретация:

| Confidence | Уровень      | Действие                                                |
| ---------: | ------------ | ------------------------------------------------------- |
|     ≥ 0.85 | высокий      | автоматическое создание actionable Issue                |
|  0.65–0.85 | достаточный  | создание Issue с обычным triage                         |
|  0.40–0.65 | ограниченный | требуется проверка                                      |
|  &lt; 0.40 | низкий       | аналитический сигнал, автоматические действия запрещены |
