---
name: forecast-engine
description: Прогнозирование сроков завершения и итоговой стоимости проекта. Используй когда пользователь говорит "когда закончим", "прогноз", "EAC", "ETC", "прогноз бюджета", "прогноз сроков", "сценарный анализ".
---

# Forecast Engine — Прогнозирование проекта

## Назначение

Прогнозирование ключевых параметров проекта:
- Срок завершения (EAC Date)
- Итоговая стоимость (EAC Cost)
- Остаток работ (ETC)
- Сценарный анализ "что если"
- Вероятность завершения в срок/бюджет

## Методы прогнозирования

### 1. EVM-based (Earned Value)

**EAC (Estimate at Completion) — Прогноз итоговой стоимости:**

| Метод | Формула | Когда использовать |
|-------|---------|-------------------|
| Типичный | EAC = BAC / CPI | Текущая эффективность сохранится |
| Атипичный | EAC = AC + (BAC - EV) | Отклонение разовое, дальше по плану |
| Комбинированный | EAC = AC + (BAC - EV) / (CPI × SPI) | Отклонения и по срокам, и по стоимости |

**ETC (Estimate to Complete) — Сколько осталось:**
```
ETC = EAC - AC
```

### 2. Trend-based (По тренду)

Анализ скорости выполнения за последние N периодов:

```
Средняя скорость = Σ(Выполнено за период) / N периодов
Остаток работ = 100% - Текущий %
Прогноз завершения = Сегодня + (Остаток / Скорость)
```

### 3. Monte Carlo (Вероятностный)

Симуляция 1000+ сценариев с учётом:
- Разброса длительностей (оптимист/пессимист)
- Корреляции между задачами
- Вероятности рисков

Результат: распределение вероятностей завершения

## Workflow

### Шаг 1: Сбор данных

Из progress-tracker получаем:
- Плановые показатели (PV, BAC)
- Фактические показатели (EV, AC)
- Историю выполнения (тренд)

### Шаг 2: Расчёт прогнозов

```python
# Базовые расчёты EVM
BAC = 10_000_000  # Бюджет
AC = 4_800_000   # Фактические затраты
EV = 4_500_000   # Освоенный объём

CPI = EV / AC  # 0.9375
SPI = EV / PV  # 0.90

# Прогноз стоимости (типичный)
EAC = BAC / CPI  # 10_666_667 ₽

# Прогноз остатка
ETC = EAC - AC  # 5_866_667 ₽

# Отклонение от бюджета
VAC = BAC - EAC  # -666_667 ₽ (перерасход)
```

### Шаг 3: Прогноз сроков

```python
# На основе SPI
плановый_срок = 180  # дней
прошло = 90  # дней
выполнено = 45%  # по факту

# Прогноз при текущем темпе
оставшийся_срок = (100% - 45%) / (45% / 90 дней)
# = 55% / 0.5%/день = 110 дней

прогноз_завершения = сегодня + 110 дней
отклонение = (90 + 110) - 180 = +20 дней
```

### Шаг 4: Сценарный анализ

Три сценария:
- **Оптимистичный:** Темп увеличится на 20%
- **Базовый:** Текущий темп сохранится
- **Пессимистичный:** Темп снизится на 20%

## Визуализация прогнозов

### S-кривая с прогнозом

```
     %
 100 │                        ╱╱╱ Оптимистичный
     │                    ╱╱╱╱
  75 │               ╱╱╱╱╱──────── Базовый
     │          ╱╱╱╱╱   ╲╲╲
  50 │     ████╱╱           ╲╲╲── Пессимистичный
     │    █████  ← Факт
  25 │   ████
     │  ███
   0 └────────────────────────────
       Янв  Фев  Мар  Апр  Май  Июн
```

### Воронка прогноза (Monte Carlo)

```
Вероятность завершения к дате:

01.05.2026: ████░░░░░░ 40%
15.05.2026: ██████░░░░ 60%
01.06.2026: ████████░░ 80%
15.06.2026: █████████░ 90%
01.07.2026: ██████████ 99%

Наиболее вероятная дата: 20.05.2026 (P50)
```

## Примеры использования

### Пример 1: Базовый прогноз
```
Пользователь: Когда закончим проект "Мост №5"?

Claude:
📊 ПРОГНОЗ ЗАВЕРШЕНИЯ: Проект "Мост №5"

**Текущий статус (26.01.2026):**
- Выполнено: 45%
- Плановое выполнение: 50%
- SPI = 0.90 (отстаём)

**Прогноз сроков:**
| Сценарий | Дата завершения | Отклонение |
|----------|-----------------|------------|
| Оптимистичный | 25.05.2026 | +10 дней |
| Базовый | 05.06.2026 | +21 день |
| Пессимистичный | 20.06.2026 | +36 дней |

**Прогноз бюджета:**
- BAC (бюджет): 10 000 000 ₽
- EAC (прогноз): 10 666 667 ₽
- Перерасход: 666 667 ₽ (+6.7%)

**Рекомендации:**
1. Добавить вторую смену на бетонные работы
2. Ускорить поставку металлоконструкций
3. При сохранении темпа — уведомить заказчика о рисках
```

### Пример 2: Сценарный анализ
```
Пользователь: Что будет если добавим ещё одну бригаду?

Claude:
📈 СЦЕНАРНЫЙ АНАЛИЗ: +1 бригада

**Исходные данные:**
- Текущий темп: 0.5% в день
- Остаток работ: 55%

**Сценарий: +1 бригада (+30% производительность)**
- Новый темп: 0.65% в день
- Остаток дней: 55% / 0.65% = 85 дней (было 110)
- Экономия: 25 дней

**Затраты на ускорение:**
- Доп. ФОТ: 1 500 000 ₽
- Доп. техника: 500 000 ₽
- Итого: 2 000 000 ₽

**Выгода:**
- Избежание неустойки (25 дней × 0.1%): 2 500 000 ₽
- Чистая выгода: 500 000 ₽

**Рекомендация:** ✅ Целесообразно
```

### Пример 3: Вероятностный прогноз
```
Пользователь: Какова вероятность закончить в срок?

Claude:
🎲 ВЕРОЯТНОСТНЫЙ АНАЛИЗ (Monte Carlo, 10000 симуляций)

**Плановая дата:** 15.05.2026

**Распределение вероятностей:**
```
P10 (90% вероятность): 01.06.2026
P50 (50% вероятность): 20.05.2026
P90 (10% вероятность): 08.05.2026
```

**Вероятность завершения к плановой дате:**
████░░░░░░ 35%

**Факторы неопределённости:**
1. Погода (влияние на бетонные работы): ±10 дней
2. Поставка металла: ±7 дней
3. Производительность бригад: ±15%

**Для достижения P80:**
- Необходим запас: +15 дней
- Рекомендуемый срок: 30.05.2026
```

## Интеграция

- **progress-tracker** — исходные данные (PV, EV, AC)
- **risk-analyzer** — вероятности рисков для Monte Carlo
- **gantt-planner** — обновление графика по прогнозам
- **executive-dashboard** — прогнозы в отчёты руководству
- **deviation-alert** — алерты при ухудшении прогноза

## Автоматический пересчёт

Прогнозы пересчитываются:
- Еженедельно (планово)
- При изменении факта >5%
- При срабатывании риска
- По запросу пользователя

## Выходные документы

1. **Прогноз_[проект]_[дата].xlsx** — детальный прогноз
2. **Сценарии_[проект].xlsx** — сценарный анализ
3. **Monte_Carlo_[проект].xlsx** — вероятностный анализ
4. **Тренд_[проект].xlsx** — исторический тренд с экстраполяцией
