Руководство по 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)данетнет
Плотный асфальтобетон (ГОСТ 9128-2013)дадада

Пример запроса 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 на основе визуального осмотра.

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

- Применяется допуск ±10 мм по СП 78.13330.2012 п.16.11, прил.А, табл.А.1 - Если отклонение ≤ 10 мм → "соответствует" (со ссылкой на СП) - Если отклонение > 10 мм → "не соответствует"

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

- Если 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 мм, в пределах допуска ±10 мм) - НСП: 62 мм вместо 70 мм → соответствует (отклонение -8 мм, в пределах допуска ±10 мм), геосетка не найдена - ВСО: 76 мм вместо 90 мм → не соответствует (отклонение -14 мм, превышает допуск ±10 мм) - Количество слоёв: falseне соответствует (будет указано про геосетку) - Состав слоёв: trueсоответствует


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

{
  "conclusion": "Текст заключения...",
  "measurement_type": "1.7.5",
  "compliance": [
    {
      "layer": "ВСП",
      "layer_name": "Верхний слой покрытия",
      "thickness": true,
      "geogrid": null,
      "water_saturation_cores": null,
      "water_saturation_reformed": null,
      "compaction_coefficient": null
    }
  ]
}

Поле compliance — результаты проверки соответствия по слоям

Массив объектов, по одному на каждый слой. Каждый объект содержит:

ПолеТипОписание
layerстрокаКод слоя (ВСП, НСП, ВСО, НСО)
layer_nameстрокаНазвание слоя
thicknessbool/nullСоответствие толщины (только для 1.7.5)
geogridbool/nullНаличие геосетки (только для 1.7.5, если требуется по проекту)
water_saturation_coresbool/nullСоответствие водонасыщения кернов (только для 1.7.6)
water_saturation_reformedbool/nullСоответствие водонасыщения переформованных (только для 1.7.6)
compaction_coefficientbool/nullСоответствие коэффициента уплотнения (только для 1.7.6)

- true — значение соответствует нормам ГОСТа - false — значение НЕ соответствует нормам ГОСТа - null — параметр не применим к данному слою (например, коэффициент уплотнения не проверяется для ЩМА)

#### Пример ответа для 1.7.6

{
  "conclusion": "Верхний слой покрытия:\n1. Водонасыщение...",
  "measurement_type": "1.7.6",
  "compliance": [
    {
      "layer": "ВСП",
      "layer_name": "Верхний слой покрытия",
      "water_saturation_cores": true,
      "water_saturation_reformed": null,
      "compaction_coefficient": null
    },
    {
      "layer": "НСП",
      "layer_name": "Нижний слой покрытия",
      "water_saturation_cores": true,
      "water_saturation_reformed": true,
      "compaction_coefficient": true
    }
  ]
}

#### Пример ответа для 1.7.5

{
  "conclusion": "1. Фактическая толщина...",
  "measurement_type": "1.7.5",
  "compliance": [
    {
      "layer": "ВСП",
      "layer_name": "Верхний слой покрытия",
      "thickness": true
    },
    {
      "layer": "НСП",
      "layer_name": "Нижний слой покрытия",
      "thickness": true,
      "geogrid": false
    },
    {
      "layer": "ВСО",
      "layer_name": "Верхний слой основания",
      "thickness": false
    }
  ]
}


Примеры вызова через 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-спецификацию