# BPMN 2.0 — справочник нотации и рендер в mermaid

mermaid не имеет нативного BPMN-рендера. BPMN-модель выражается через mermaid
`flowchart` (swimlane через `subgraph` = дорожки) или `stateDiagram-v2`.

## Элементы BPMN → mermaid

| BPMN | Смысл | mermaid-выражение |
|---|---|---|
| Pool / Lane | организация / роль | `subgraph Роль ... end` |
| Task | действие | прямоугольник `id[Текст]` |
| Sub-process | свёрнутый поток | `id[[Текст]]` |
| Start event | старт | `id((Старт))` |
| End event | конец | `id((Конец))` |
| Exclusive gateway (XOR) | один путь | ромб `id{Условие?}` + подписи на рёбрах |
| Parallel gateway (AND) | все пути | ромб `id{И}` с несколькими исходящими |
| Sequence flow | порядок | `-->` |
| Message flow | между pool | `-.->` |

## Шаблон swimlane

```mermaid
flowchart TD
  subgraph Менеджер
    A((Старт)) --> B[Принять лид]
    B --> C{Лид валиден?}
  end
  subgraph Система
    C -->|да| D[Создать сделку]
    C -->|нет| E((Отклонён))
    D --> F((Сделка создана))
  end
```

## State-машина

Для конечных автоматов (воронка сделок — 14 статусов из `db/schema.sql`)
использовать `stateDiagram-v2`:

```mermaid
stateDiagram-v2
  [*] --> new
  new --> in_progress
  in_progress --> won
  in_progress --> lost
  won --> [*]
  lost --> [*]
```

Статус-слаги — из `db/schema.sql` (источник истины воронки), не выдумывать.

## Правила

- Один gateway — один вопрос; каждое исходящее ребро подписано условием.
- Каждый путь оканчивается end-событием (нет «висящих» задач).
- Исключения (timer/error) моделировать явно, не прятать в «happy path».
