Руководство по API генератора заключений

URL: https://conclusion-generator.ru

Авторизация

Все запросы к API требуют заголовок X-API-Key:

X-API-Key: ваш-api-ключ


Эндпоинты

МетодURLОписание
GET/api/v1/healthПроверка работоспособности (без авторизации)
POST/api/v1/conclusions/generate/1.7.6Генерация заключения по водонасыщению
POST/api/v1/conclusions/generate/1.7.5Генерация заключения по толщине слоёв
POST/api/v1/conclusions/generateУниверсальный эндпоинт (определяет тип по полю measurement_type)


1.7.6 — Водонасыщение и коэффициент уплотнения

Что подаётся на вход

{
  "measurement_type": "1.7.6",
  "project": { ... },
  "design_requirements": [ ... ],
  "test_results": [ ... ]
}

Описание полей

#### project — информация о проекте

ПолеТипОбязательноОписание
numberстрокадаНомер проекта, например "ИМ-20-502-П-3Э-ТКР1.1-ГЧ"
stageстрокадаСтадия проекта: "П" (проектная) или "Р" (рабочая)
sheetстрокадаНомер листа, например "4"
construction_typeстроканетТип конструкции, например "тип 1"

#### design_requirements — проектные требования по слоям (массив)

ПолеТипОбязательноОписание
layerстрокадаКод слоя: "ВСП", "НСП", "ВСО", "НСО"
layer_nameстрокадаНазвание: "Верхний слой покрытия", "Нижний слой покрытия" и т.д.
materialстрокадаМатериал, например "Щебеночно-мастичный асфальтобетон ЩМА-20"
gostстрокадаГОСТ материала: "ГОСТ 31015-2002" или "ГОСТ 9128-2013"
thickness_mmчислонетПроектная толщина в мм

#### test_results — результаты испытаний по слоям (массив)

ПолеТипОбязательноОписание
layerстрокадаКод слоя (должен совпадать с design_requirements)
water_saturation_cores_percentчислонетВодонасыщение кернов, % (например 2.6)
water_saturation_reformed_percentчислонетВодонасыщение переформованных образцов, %
compaction_coefficientчислонетКоэффициент уплотнения (например 1.01)

Какие измерения для каких материалов

МатериалВодонасыщение керновВодонасыщение переформ.Коэф. уплотнения
ЩМА (ГОСТ 31015-2002)да (до 3,5%)нетнет
Высокоплотный (ГОСТ 9128-2013)да (до 3,0%)да (1,0%-3,5%)да (≥0,99)
Плотный тип А/Б/В/Г/Д (ГОСТ 9128-2013)да (до 4,5%)да (1,0%-4,0%)да (≥0,99)
Пористый (ГОСТ 9128-2013)да (до 10,0%)нетнет
Высокопористый (ГОСТ 9128-2013)да (до 12,0%)нетнет
Холодный тип Бх/Вх/Гх/Дх (ГОСТ 9128-2013)да (5,0%-9,0%)нетнет

Примечание: Система автоматически определяет тип материала по полю material и gost в запросе.

Пример запроса 1.7.6

{
  "measurement_type": "1.7.6",
  "project": {
    "number": "ИМ-20-502-П-3Э-ТКР1.1-ГЧ",
    "stage": "П",
    "sheet": "4",
    "construction_type": "тип 1"
  },
  "normative_reference": "СП 78.13330.2012",
  "design_requirements": [
    {
      "layer": "ВСП",
      "layer_name": "Верхний слой покрытия",
      "material": "Щебеночно-мастичный асфальтобетон ЩМА-20",
      "gost": "ГОСТ 31015-2002",
      "thickness_mm": 50
    },
    {
      "layer": "НСП",
      "layer_name": "Нижний слой покрытия",
      "material": "Крупнозернистый плотный асфальтобетон тип Б марка II",
      "gost": "ГОСТ 9128-2013",
      "thickness_mm": 70
    }
  ],
  "test_results": [
    {
      "layer": "ВСП",
      "water_saturation_cores_percent": 2.6
    },
    {
      "layer": "НСП",
      "water_saturation_cores_percent": 1.1,
      "water_saturation_reformed_percent": 3.7,
      "compaction_coefficient": 1.01
    }
  ]
}


1.7.5 — Толщина слоёв дорожной одежды

Что подаётся на вход

{
  "measurement_type": "1.7.5",
  "project": { ... },
  "design_requirements": [ ... ],
  "test_results": [ ... ],
  "layers_match_project": true/false,
  "composition_match_project": true/false
}

Описание полей

#### project — информация о проекте

Аналогично 1.7.6 (см. выше).

#### design_requirements — проектные требования по слоям (массив)

ПолеТипОбязательноОписание
layerстрокадаКод слоя: "ВСП", "НСП", "ВСО", "НСО"
layer_nameстрокадаНазвание слоя
materialстрокадаМатериал слоя
gostстрокадаГОСТ материала
design_thickness_mmчислодаПроектная толщина в мм
geogrid_requiredbooleanнетТребуется ли геосетка по проекту (true/false)

#### test_results — результаты испытаний по слоям (массив)

ПолеТипОбязательноОписание
layerстрокадаКод слоя
measurements_mmмассив чиселдаВсе измерения толщины, например [50, 52]
average_mmчислодаСредняя толщина (рассчитывается оператором)
total_mmчислонетСуммарная толщина (для составных слоёв из нескольких фрагментов)
geogrid_foundbooleanнетОбнаружена ли геосетка при осмотре (true/false)
noteстроканетПримечание, например "Слой состоит из двух фрагментов"

#### Дополнительные поля (экспертная оценка оператора)

ПолеТипОбязательноОписание
layers_match_projectbooleanдаКоличество слоёв соответствует проекту?
composition_match_projectbooleanдаСостав слоёв соответствует проекту?

Важно: Эти два поля определяют пункты заключения о количестве и составе слоёв. Оператор ставит true или false на основе визуального осмотра.

Логика проверки толщины

- Если average_mm равно design_thickness_mm → "соответствует" - Если average_mm отличается хоть на 1 мм → "не соответствует"

Логика проверки геосетки

- Если geogrid_required: true и geogrid_found: false → в заключении будет отмечено отсутствие геосетки - Если geogrid_required: false — проверка геосетки не выполняется

Пример запроса 1.7.5

{
  "measurement_type": "1.7.5",
  "project": {
    "number": "14-4001-Б-1.3-ТКР-1.1-АД",
    "stage": "П",
    "sheet": "11",
    "construction_type": "Тип 1а"
  },
  "design_requirements": [
    {
      "layer": "ВСП",
      "layer_name": "Верхний слой покрытия",
      "material": "Щебеночно-мастичный асфальтобетон ЩМА-20",
      "gost": "ГОСТ 31015-2002",
      "design_thickness_mm": 50,
      "geogrid_required": false
    },
    {
      "layer": "НСП",
      "layer_name": "Нижний слой покрытия",
      "material": "Крупнозернистый асфальтобетон плотный тип Б марки II",
      "gost": "ГОСТ 9128-2013",
      "design_thickness_mm": 70,
      "geogrid_required": true
    },
    {
      "layer": "ВСО",
      "layer_name": "Верхний слой основания",
      "material": "Крупнозернистый асфальтобетон плотный тип Б марки II",
      "gost": "ГОСТ 9128-2013",
      "design_thickness_mm": 90,
      "geogrid_required": false
    }
  ],
  "test_results": [
    {
      "layer": "ВСП",
      "measurements_mm": [50, 52],
      "average_mm": 51
    },
    {
      "layer": "НСП",
      "measurements_mm": [62, 61],
      "average_mm": 62,
      "geogrid_found": false
    },
    {
      "layer": "ВСО",
      "measurements_mm": [75, 77],
      "average_mm": 76
    }
  ],
  "layers_match_project": false,
  "composition_match_project": true
}

В этом примере: - ВСП: 51 мм вместо 50 мм → не соответствует (отклонение +1 мм) - НСП: 62 мм вместо 70 мм → не соответствует, геосетка не найдена - ВСО: 76 мм вместо 90 мм → не соответствует - Количество слоёв: falseне соответствует (будет указано про геосетку) - Состав слоёв: trueсоответствует


Формат ответа

{
  "conclusion": "Текст заключения...",
  "measurement_type": "1.7.5"
}


Примеры вызова через curl

Проверка работоспособности

curl https://conclusion-generator.ru/api/v1/health

Генерация заключения 1.7.6

curl -X POST https://conclusion-generator.ru/api/v1/conclusions/generate/1.7.6 \
  -H "Content-Type: application/json" \
  -H "X-API-Key: ваш-ключ" \
  -d '{
    "measurement_type": "1.7.6",
    "project": { "number": "...", "stage": "П", "sheet": "4" },
    ...
  }'


Коды ошибок

КодОписание
200Успех
400Неверный формат запроса или неподдерживаемый тип измерения
401Отсутствует или неверный API-ключ
422Ошибка валидации данных (неверные типы полей)
429Превышен лимит запросов к LLM
500Внутренняя ошибка сервера
502Ошибка LLM-сервиса
503LLM-сервис недоступен


Интерактивная документация

Swagger UI доступен по адресу: https://conclusion-generator.ru/api/docs

Там можно: - Посмотреть все эндпоинты - Попробовать запросы прямо в браузере - Скачать OpenAPI-спецификацию