formula
Загрузка каталогов и аутентификация.
Запрос для выполнения аутентификации.
Responses
Body
ID текущего пользователя
Наименование текущего пользователя,
GET /catalogs/users/current HTTP/1.1
HTTP/1.1 200 OK
Content-Type: application/json
{
"guid": "39581c94-6a5a-11ed-8a1b-00505692a275",
"name": "Иванов Иван Иванович"
}Загрузка информация о роли и полномочиях.
Responses
Body
ID записи о доступе. На данный момент совсем никак не используется в системе, может быть проигнорировано.
Наименование роли пользователя. Отображается под наименованием пользователя
Информация о доступных пользователю действиях. Если есть FULL_ACCESS_READ - сотрудник может просматривать страницы, если у сотрудника есть FULL_ACCESS_WRITE, то ему досчтупны интерактивные полномочия на страницах. Если это свойство пустое, то пользователю ничего не доступно. Ранее это была заготовка для более точного разграничения доступа по конкретным функциям, но она оказалась не востребована, и осталась в том же виде что и сейчас.
["FULL_ACCESS_WRITE","FULL_ACCESS_READ"]GET /catalogs/users/access-role HTTP/1.1
HTTP/1.1 200 OK
Content-Type: application/json
{
"guid": "00000000-0000-0000-0000-000000000001",
"name": "Роль",
"actions": [
"FULL_ACCESS_WRITE"
]
}Список каталогов (справочников), необходимых для функционирования системы. Необходимы для создания выпадающих списков (фильтрация, или выбор добавляемого объекта).
Список пользователей информационной системы.
Responses
Body
GET /catalogs/list/users HTTP/1.1
HTTP/1.1 200 OK
Content-Type: application/json
[
{
"guid": "00000000-0000-0000-0000-000000000001",
"name": "Иванов Иван Иванович"
},
{
"guid": "00000000-0000-0000-0000-000000000002",
"name": "Петров Петр Петрович"
},
{
"guid": "00000000-0000-0000-0000-000000000003",
"name": "Ильич Илья Ильич"
}
]Каталог со списком наименований типов компонентов (номенклатур).
Responses
Body
ID типа компонента
Наименование типа компонента
GET /catalogs/list/componentTypes HTTP/1.1
HTTP/1.1 200 OK
Content-Type: application/json
[
{
"guid": "00000000-0000-0000-0000-000000000004",
"name": "Тип 1"
},
{
"guid": "00000000-0000-0000-0000-000000000005",
"name": "Тип 2"
},
{
"guid": "00000000-0000-0000-0000-000000000006",
"name": "Тип 3"
}
]Каталог со списком наименований компонентов (номенклатуры).
Responses
Body
ID компонента
Наименование компонента
Ссылка на ID типа компонента
Признак расчитываемости
GET /catalogs/list/components HTTP/1.1
HTTP/1.1 200 OK
Content-Type: application/json
[
{
"guid": "00000000-0000-0000-0000-000000000007",
"name": "Компонент 1",
"isCalculated": true,
"type_id": "00000000-0000-0000-0000-000000000004"
},
{
"guid": "00000000-0000-0000-0000-000000000008",
"name": "Компонент 2",
"isCalculated": true,
"type_id": "00000000-0000-0000-0000-000000000004"
},
{
"guid": "00000000-0000-0000-0000-000000000009",
"name": "Компонент 3",
"isCalculated": true,
"type_id": "00000000-0000-0000-0000-000000000005"
},
{
"guid": "00000000-0000-0000-0000-000000000010",
"name": "Компонент 4",
"isCalculated": true,
"type_id": "00000000-0000-0000-0000-000000000005"
},
{
"guid": "00000000-0000-0000-0000-000000000011",
"name": "Компонент 5",
"isCalculated": false,
"type_id": "00000000-0000-0000-0000-000000000006"
},
{
"guid": "00000000-0000-0000-0000-000000000012",
"name": "Компонент 6",
"isCalculated": false,
"type_id": "00000000-0000-0000-0000-000000000006"
}
]
Каталог со списком наименований групп компонентов. Не нужно путать с типом компонентов. У групп нет ссылочной связи с компонентами. Группы используют как информационные аналитики при создании проектов НИЦ с типом исследования.
Responses
Body
ID группы
Наименование группы
GET /catalogs/list/componentGroups HTTP/1.1
HTTP/1.1 200 OK
Content-Type: application/json
[
{
"guid": "00000000-0000-0000-0000-000000000013",
"name": "Группа 1"
},
{
"guid": "00000000-0000-0000-0000-000000000014",
"name": "Группа 2"
},
{
"guid": "00000000-0000-0000-0000-000000000015",
"name": "Группа 3"
}
]Каталог со списком наименований единиц измерений.
Responses
Body
ID единицы измерения
Наименование единицы измерения
GET /catalogs/list/units HTTP/1.1
HTTP/1.1 200 OK
Content-Type: application/json
[
{
"guid": "00000000-0000-0000-0000-000000000016",
"name": "Измерение 1"
},
{
"guid": "00000000-0000-0000-0000-000000000017",
"name": "Измерение 2"
},
{
"guid": "00000000-0000-0000-0000-000000000018",
"name": "Измерение 3"
}
]Каталог со списком наименований методов испытания (ТУ, ГОСТ).
Responses
Body
ID метода измерения
Наименование метода измерения
GET /catalogs/list/testMethods HTTP/1.1
HTTP/1.1 200 OK
Content-Type: application/json
[
{
"guid": "00000000-0000-0000-0000-000000000019",
"name": "Метод 1"
},
{
"guid": "00000000-0000-0000-0000-000000000020",
"name": "Метод 2"
},
{
"guid": "00000000-0000-0000-0000-000000000021",
"name": "Метод 3"
}
]Каталог со списком показателей, и их атрибутами.
Responses
Body
ID показателя
Наименование показателя
Краткое наименование показателя
Ссылка на ID единицы измерения (units)
Ссылка на ID метода измерения (testMethods)
Признак, определяющий, является ли данный показатель группой, или единичным показателем. Если true, по показатель - это группа в который включено несколько единичных показателей,
Ссылка на ID показателя, который является родителем (группой) для текущего
Порядковый номер показателя, реквизит для упорядочивания порядка вывода показателей в списке.
Признак отображения в выпадающем списке. Если exclude равно false, показатель отображается в списке, если exclude равно true - показатель не отображется. Признак был введен для тех показателей, которые, например, не могут существовать отдельно, вне группы.
Массив типов продукт для которых умеет рассчитывать данный показатель. Ключевое поле для связки продуктов и рассчитываемых показателей
PGGET /catalogs/list/indicators HTTP/1.1
HTTP/1.1 200 OK
Content-Type: application/json
[
{
"guid": "00000000-0000-0000-0000-000000000022",
"name": "Показатель 1",
"shortName": "П1",
"unit": "00000000-0000-0000-0000-000000000016",
"testMethod": "00000000-0000-0000-0000-000000000019",
"group": false,
"type": "SIMPLE",
"parentIndicator": "",
"ordinal": 1,
"exclude": false,
"productTypes": ["PG"]
},
{
"guid": "00000000-0000-0000-0000-000000000023",
"name": "Показатель 2",
"shortName": "П2",
"unit": "00000000-0000-0000-0000-000000000016",
"testMethod": "00000000-0000-0000-0000-000000000019",
"ordinal": 2,
"parentIndicator": "",
"group": false,
"type": "SIMPLE",
"exclude": false,
"productTypes": ["PG"]
},
{
"guid": "00000000-0000-0000-0000-000000000024",
"name": "Показатель 3",
"shortName": "П3",
"unit": "00000000-0000-0000-0000-000000000016",
"testMethod": "00000000-0000-0000-0000-000000000019",
"ordinal": 3,
"parentIndicator": "",
"group": false,
"type": "SIMPLE",
"exclude": false,
"productTypes": ["PG", "ПБВ"]
},
{
"guid": "00000000-0000-0000-0000-000000000025",
"name": "Показатель 4",
"shortName": "П4",
"unit": "00000000-0000-0000-0000-000000000017",
"testMethod": "00000000-0000-0000-0000-000000000020",
"ordinal": 4,
"parentIndicator": "",
"group": false,
"type": "SIMPLE",
"exclude": false,
"productTypes": ["Тест", "ПБВ"]
},
{
"guid": "00000000-0000-0000-0000-000000000026",
"name": "Показатель 5",
"shortName": "П5",
"unit": "00000000-0000-0000-0000-000000000017",
"testMethod": "00000000-0000-0000-0000-000000000020",
"ordinal": 5,
"parentIndicator": "",
"group": false,
"type": "SIMPLE",
"exclude": false,
"productTypes": ["ПБВ"]
},
{
"guid": "00000000-0000-0000-0000-000000000027",
"name": "Показатель 6",
"shortName": "П6",
"unit": "00000000-0000-0000-0000-000000000017",
"testMethod": "00000000-0000-0000-0000-000000000020",
"ordinal": 6,
"parentIndicator": "",
"group": false,
"type": "SIMPLE",
"exclude": false,
"productTypes": ["Тест", "ПБВ"]
},
{
"guid": "00000000-0000-0000-0000-000000000028",
"name": "Показатель 7",
"shortName": "П7",
"unit": "00000000-0000-0000-0000-000000000018",
"testMethod": "00000000-0000-0000-0000-000000000021",
"ordinal": 7,
"parentIndicator": "",
"group": false,
"type": "SIMPLE",
"exclude": false,
"productTypes": ["Тест"]
},
{
"guid": "00000000-0000-0000-0000-000000000029",
"name": "Показатель 8",
"shortName": "П8",
"unit": "00000000-0000-0000-0000-000000000018",
"testMethod": "00000000-0000-0000-0000-000000000021",
"ordinal": 8,
"parentIndicator": "",
"group": false,
"type": "SIMPLE",
"exclude": false,
"productTypes": ["PG"]
},
{
"guid": "00000000-0000-0000-0000-000000000030",
"name": "Показатель 9",
"shortName": "П9",
"unit": "00000000-0000-0000-0000-000000000018",
"testMethod": "00000000-0000-0000-0000-000000000021",
"ordinal": 9,
"parentIndicator": "",
"group": false,
"type": "SIMPLE",
"exclude": false,
"productTypes": ["ПБВ"]
}
]
Каталог со списком наименований площадок.
Responses
Body
ID площадки
Наименование площадки
Признак “Основаная площадка”. Если он равен true - в выпадающим списке площадка отображается в первой в списке.
GET /catalogs/list/venues HTTP/1.1
HTTP/1.1 200 OK
Content-Type: application/json
[
{
"guid": "00000000-0000-0000-0000-000000000031",
"name": "Площадка 1",
"main": false
},
{
"guid": "00000000-0000-0000-0000-000000000032",
"name": "Площадка 2",
"main": false
},
{
"guid": "00000000-0000-0000-0000-000000000033",
"name": "Площадка 3",
"main": false
}
]Каталог со списком наименований типов задач.
Responses
Body
ID типа задачи
Наименование типа задачи
GET /catalogs/list/taskTypes HTTP/1.1
HTTP/1.1 200 OK
Content-Type: application/json
[
{
"guid": "00000000-0000-0000-0000-000000000034",
"name": "Тип задачи 1"
},
{
"guid": "00000000-0000-0000-0000-000000000035",
"name": "Тип задачи 2"
},
{
"guid": "00000000-0000-0000-0000-000000000036",
"name": "Тип задачи 3"
}
]Каталог партий компонентов. Устаревший, используется для рецептур НИЦ. Должен быть заменен. Атрибутный состав не указывается, так ОН НЕ АКТУАЛЕН ДЛЯ ТЕКУЩЕГО РЕШЕНИЯ. Должен быть переделан в слечае получения партий по интеграции.
Responses
Коталог с наименованиями продуктов
Responses
Body
Наименование типа продукта. Ключ, по которому будет определяться, умеет ли для данного типа проекта рассчитываться определенный показатель.
GET /catalogs/list/products HTTP/1.1
HTTP/1.1 200 OK
Content-Type: application/json
[
{
"guid": "00000000-0000-0000-0000-000000000037",
"name": "Продукт 1",
"productType": "PG"
},
{
"guid": "00000000-0000-0000-0000-000000000038",
"name": "Продукт 2",
"productType": "ПБВ"
},
{
"guid": "00000000-0000-0000-0000-000000000039",
"name": "Продукт 3",
"productType": "Тест"
}
]Каталог с наименованием спецификаций продуктов (атрибут шаблонов)
Responses
Body
ID спецификации
Наименование спецификации
Ссылка на ID продукта (products)
GET /catalogs/list/specifications HTTP/1.1
HTTP/1.1 200 OK
Content-Type: application/json
[
{
"guid": "00000000-0000-0000-0000-000000000040",
"productID": "00000000-0000-0000-0000-000000000037",
"name": "Спецификация 1"
},
{
"guid": "00000000-0000-0000-0000-000000000041",
"productID": "00000000-0000-0000-0000-000000000037",
"name": "Спецификация 2"
},
{
"guid": "00000000-0000-0000-0000-000000000042",
"productID": "00000000-0000-0000-0000-000000000037",
"name": "Спецификация 3"
}
]
Каталог наименований шаблонов для продуктов. Пока неивестно, нужен ли он, или вместо него будут НТД.
Responses
Body
ID шаблона
Наименование шаблона
Ссылка на ID продукта (products)
Ссылка на ID спецификации (specifications)
GET /catalogs/list/requirementsTemplates HTTP/1.1
HTTP/1.1 200 OK
Content-Type: application/json
[
{
"guid": "00000000-0000-0000-0000-000000000043",
"name": "Шаблон 1",
"productID": "00000000-0000-0000-0000-000000000037",
"specificationID": "00000000-0000-0000-0000-000000000040"
},
{
"guid": "00000000-0000-0000-0000-000000000044",
"name": "Шаблон 2",
"productID": "00000000-0000-0000-0000-000000000037",
"specificationID": "00000000-0000-0000-0000-000000000040"
},
{
"guid": "00000000-0000-0000-0000-000000000045",
"name": "Шаблон 3",
"productID": "00000000-0000-0000-0000-000000000038",
"specificationID": "00000000-0000-0000-0000-000000000041"
},
{
"guid": "00000000-0000-0000-0000-000000000046",
"name": "Шаблон 4",
"productID": "00000000-0000-0000-0000-000000000039",
"specificationID": "00000000-0000-0000-0000-000000000042"
},
{
"guid": "00000000-0000-0000-0000-000000000047",
"name": "Шаблон 5",
"productID": "00000000-0000-0000-0000-000000000039",
"specificationID": "00000000-0000-0000-0000-000000000042"
}
]
Responses
Body
GET /catalogs/list/normTechDoc HTTP/1.1
HTTP/1.1 200 OK
Content-Type: application/json
[
{
"guid": "00000000-0000-0000-0000-000000000048",
"name": "НТД 1",
"productID": "00000000-0000-0000-0000-000000000037"
}
]Корневой URL для управлением расчетов технологов
Запрос для получения списка расчетов. В теле запроса передаются параметры поиска, фильтрации, и пагинации.
Request body
Текстовое поле для передачи значения полнотекстового поиска. Не передается исли полнотекстовый поиск не выполняется.
Массив содержащий ссылки на продукты по которым выполняется фильтраци. Не передается если нет фильтрации по продуктам
["00000000-0000-0000-0000-000000000037"]Массив содержащий ссылки на спецификации по которым выполняется фильтраци. Не передается если нет фильтрации по спецификациям
["00000000-0000-0000-0000-000000000040"]Массив содержащий ссылки на шаблоны по которым выполняется фильтраци. Не передается если нет фильтрации по шаблонам
["00000000-0000-0000-0000-000000000043"]00000000-0000-0000-0000-000000000001Массив содержащий ссылки на пользователей (создателей расчетов) по которым выполняется фильтраци. Не передается если нет фильтрации по пользователю
["00000000-0000-0000-0000-000000000001"]Фильтра по дате создание, критерий “от даты”. Не передается, если подобая фильтрация не выполняется.
Фильтра по дате создание, критерий “по дату”. Не передается, если подобая фильтрация не выполняется.
Критерий для пагинации. Определяет, какой должен быть порядковый номер расчета, начиная с которого необходимо передавать список запросов. Передается всегда не зависит от наличия/отсутствия фильтрации.
Критерий для пагинации. Определяет, какое количество расчетов необходимо передать с бека на фронт, начиная с расчета определенного по критерию currentQuantity. То есть если для отображения на странице выбрано 20 запросов, то на первой странице currentQuantity будет 0, на второй 21, на третий 41, на третьей 61, и так далее.Передается всегда не зависит от наличия/отсутствия фильтрации.
Responses
Body
Содержит общее количество всех расчетов, которые были отобраны по результатам поиска и фильтрации, или без них, если поиск и и фильтрация не применялись. Критерии для пагинации.
Массив со списком расчетов которые должны быть отображены на странице
ID записи рачета
Содержит ID автора расчета. Содержит GUID, так как если нам преидется определять может ли человек редактировать свой/не свой расчет то нужно как то отделять свои расчеты от чужих.
Содержит номер расчета. Не содержит guid, так как на экране расчетов не нужно ими управлять и редактировать.
Содержит дату создания расчета.
Содержит текст комменатрия расчета
Содержит наименование продукта в расчете. Не содержит guid, так как на экране расчетов не нужно ими управлять и редактировать. Если передается пустым как “”, для отображения его необходимо заменить на “Не выбран”.
Содержит наименование спецификации в расчете. Не содержит guid, так как на экране расчетов не нужно ими управлять и редактировать. Если передается пустым как “”, для отображения его необходимо заменить на “-”.
Содержит наименование шаблона в расчете. Не содержит guid, так как на экране расчетов не нужно ими управлять и редактировать. Если передается пустым как “”, для отображения его необходимо заменить на “-”.
Содержит наименование НТД в расчете. Не содержит guid, так как на экране расчетов не нужно ими управлять и редактировать. Если передается пустым как “”, для отображения его необходимо заменить на “-”.
POST /calculations/list HTTP/1.1
Content-Type: application/json
{
"search": "текст",
"productIDs": [
"00000000-0000-0000-0000-000000000037"
],
"specificationIDs": [
"00000000-0000-0000-0000-000000000040"
],
"requirementsTemplateIDs": [
"00000000-0000-0000-0000-000000000043"
],
"userIDs": [
"00000000-0000-0000-0000-000000000001"
],
"create_date_start": "2025-07-14T14:05:16Z",
"create_date_end": "2025-07-29T14:05:16Z",
"currentQuantity": 1,
"defaultQuantity": 50
}
HTTP/1.1 200 Created
Content-Type: application/json
{
"itemsCount": 1703,
"calculations": [
{
"guid": "00000000-0000-0000-0000-000000000100",
"user": "00000000-0000-0000-0000-000000000001",
"number": "2025-0001",
"create_date": "2025-07-14T14:05:16Z",
"comment": "Текст комментария",
"product": "Продукт 1",
"specification": "Спецификация 1",
"normTechDoc": "НТД 1",
"requirementsTemplate": "Шаблон 1"
},
{
"guid": "00000000-0000-0000-0000-000000000101",
"user": "00000000-0000-0000-0000-000000000001",
"number": "2025-0002",
"create_date": "2025-07-14T14:05:16Z",
"comment": "Текст комментария",
"product": "Продукт 1",
"specification": "Спецификация 1",
"normTechDoc": "НТД 1",
"requirementsTemplate": "Шаблон 1"
}
]
}
Запрос для редактирования комменатрия к конкретному расчету
Request parameters
ID расчета для которого редактируется комментарий
Request body
Содержит новый текст комменатрия
Responses
Body
Содержит весь измененный расчет, с новым комменатрием который записался на бек. Но не в массиве, а единичный
POST /calculations/write HTTP/1.1
Content-Type: application/json
{
"comment": "Текст комменатрия 2"
}
HTTP/1.1 201 Created
Content-Type: application/json
{
"calculation": {
"guid": "00000000-0000-0000-0000-000000000100",
"user": "Иванов Иван Иванович",
"number": "2025-0001",
"create_date": "2025-07-14T14:05:16Z",
"comment": "Текст комментария 2",
"product": "Продукт 1",
"specification": "Спецификация 1",
"requirementsTemplate": "Шаблон 1"
}
}
Запрос отправляется для создания нового расчета. Наверно его нужно как-то отличать от других запросов, которые в будущем могут появится, так что давайте добавим в него пока бесполезное свойство calculation с значением NEW. В ответе будет содержать пустые значения для отображения
Request body
Атрибут, по которому определяется что надо выполнить создание нового расчета. Всегда должен содержать значение NEW (других пока не прибумали)