# Расход материалов

`GET /v1/conversations/{id}/bom`

Считается из **той же геометрии**, из которой выходят детали заказа, поэтому
разойтись со сборкой не может: площадь берётся с габарита детали, кромка —
с торцов, которым назначена лента, фурнитура — со списка изделий.

```json
{ "ok": true, "order_id": "кухня-иванов", "turn": 3, "bom": {
  "sheets": [
    { "material": "ldsp16", "name": "ЛДСП 16 мм", "parts": 78, "area_mm2": 15253450 },
    { "material": "mdf16",  "name": "МДФ 16 мм",  "parts": 18, "area_mm2": 4822264 }
  ],
  "linear": [
    { "key": "alu-frame", "name": "Профиль рамки", "parts": 8, "length_mm": 9600 }
  ],
  "edges": [
    { "edge": "pvc1carcass", "name": "Кромка корпуса", "length_mm": 70164 }
  ],
  "pieces": [
    { "article": "LEG-ADJ-100",  "name": "Опора регулируемая 100",   "qty": 22 },
    { "article": "RUN-BALL-500", "name": "Направляющая шариковая 500", "qty": 5 }
  ] } }
```

| Раздел | Единица | Что там |
|---|---|---|
| `sheets` | мм² (`area_mm2`) | Листовое: ЛДСП, МДФ, ХДФ. `parts` — сколько деталей |
| `linear` | мм (`length_mm`) | Погонное: профиль рамки, труба штанги, лента подсветки. `parts` — сколько отрезков |
| `edges` | мм (`length_mm`) | Кромка по видам ленты |
| `pieces` | штуки (`qty`) | Покупные изделия: опоры, направляющие, газлифты, фланцы |

## Листовое считается ПЛОЩАДЬЮ, а не листами

Листов в ответе нет, и это отказ, а не недоделка. Число листов зависит
от формата плиты, а формат у каждого цеха свой: «нужно 6 листов» читалось бы
как утверждение про вашу плиту, хотя посчитано по чужой. Площадь же ни от чьего
формата не зависит и делится на любой лист вами.

Настоящий раскрой с картами, поворотом детали и остатками считает Базис
на стороне мебельной компании.

## Чего в расходе нет вовсе

**Цен.** Прайса нет ни в одном файле сервиса. То, что вы получаете, — это
себестоимость в материалах; наценку, работу и монтаж считаете вы у себя.
Показывать этот расход клиенту нельзя.

**Крепежа и петель.** Сколько конфирматов, минификсов и петель встанет,
решает схема присадки конкретного цеха, и считает их Базис по тому, что
реально стоит в модели. Наша цифра рядом была бы вторым, другим ответом
на тот же вопрос.

**Столешницы в погонных метрах поставщика.** Столешница считается как деталь
своей площадью; во сколько кусков её резать из чьей заготовки — вопрос
снабжения, а не геометрии.

## Как этим пользоваться

Для вилки «от и до» в чате обычно хватает двух чисел:

```
площадь плиты = Σ sheets[].area_mm2 / 1e6   → м²
длина кромки  = Σ edges[].length_mm / 1000  → м
```

Плюс `pieces` штуками — по ним видно, сколько ящиков и подъёмников в кухне,
то есть где на самом деле лежат деньги.

Ответ считается на каждый запрос заново (это доли секунды) и всегда
соответствует последнему ходу: `turn` в ответе говорит, какому именно.
