formula

formula
/catalogs

Загрузка каталогов и аутентификация.

GET /catalogs/users/current
GET /catalogs/users/access-role
/users/current
GET /catalogs/users/current

Запрос для выполнения аутентификации.

Responses

200 OK
Body
Object
guid
string

ID текущего пользователя

Example:
00000000-0000-0000-0000-000000000001
name
string

Наименование текущего пользователя,

Example:
Иванов Иван Иванович
Example 1
GET /catalogs/users/current HTTP/1.1 

HTTP/1.1 200 OK 

Content-Type: application/json

{
    "guid": "00000000-0000-0000-0000-000000000001",
    "name": "Иванов Иван Иванович"
}
/users/access-role
GET /catalogs/users/access-role

Загрузка информация о роли и полномочиях.

Responses

200 OK
Body
Object
guid
string

ID записи о доступе. На данный момент совсем никак не используется в системе, может быть проигнорировано.

Example:
00000000-0000-0000-0000-000000000999
name
string

Наименование роли пользователя. Отображается под наименованием пользователя

Example:
Роль
actions
Array

Информация о доступных пользователю действиях. Если есть FULL_ACCESS_READ - сотрудник может просматривать страницы, если у сотрудника есть FULL_ACCESS_WRITE, то ему досчтупны интерактивные полномочия на страницах. Если это свойство пустое, то пользователю ничего не доступно. Ранее это была заготовка для более точного разграничения доступа по конкретным функциям, но она оказалась не востребована, и осталась в том же виде что и сейчас.

Example:
["FULL_ACCESS_WRITE","FULL_ACCESS_READ"]
string
Example:
FULL_ACCESS_WRITE
Example 1
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"
    ]
}
/list

Список каталогов (справочников), необходимых для функционирования системы. Необходимы для создания выпадающих списков (фильтрация, или выбор добавляемого объекта).

GET /catalogs/list/users
GET /catalogs/list/componentTypes
GET /catalogs/list/components
GET /catalogs/list/componentGroups
GET /catalogs/list/units
GET /catalogs/list/testMethods
GET /catalogs/list/indicators
GET /catalogs/list/venues
GET /catalogs/list/taskTypes
GET /catalogs/list/batchOfComponents
GET /catalogs/list/products
GET /catalogs/list/productTypes
GET /catalogs/list/specifications
GET /catalogs/list/normTechDoc
/users
GET /catalogs/list/users

Список пользователей информационной системы.

Responses

200 OK
Body
Array
Object
guid
string
Example:
00000000-0000-0000-0000-000000000001
name
string
Example:
Иванов Иван Иванович
Example 1
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": "Ильич Илья Ильич"
    }
]
/componentTypes
GET /catalogs/list/componentTypes

Каталог со списком наименований типов компонентов (номенклатур).

Responses

200 OK
Body
Array
Object
guid
string

ID типа компонента

Example:
00000000-0000-0000-0000-000000000004
name
string

Наименование типа компонента

Example:
Тип 1
isCalculated
boolean

Признак расчитываемости по типу компонента

Example:
true
Example 1
GET /catalogs/list/componentTypes HTTP/1.1 

HTTP/1.1 200 OK 

Content-Type: application/json

[
    {
        "guid": "00000000-0000-0000-0000-000000000004",
        "isCalculated": true,
        "name": "Тип 1"
    },
    {
        "guid": "00000000-0000-0000-0000-000000000005",
        "isCalculated": true,
        "name": "Тип 2"
    },
    {
        "guid": "00000000-0000-0000-0000-000000000006",
        "isCalculated": true,
        "name": "Тип 3"
    }
]
/components
GET /catalogs/list/components

Каталог со списком наименований компонентов (номенклатуры).

Responses

200 OK
Body
Array
Object
guid
string

ID компонента

Example:
00000000-0000-0000-0000-000000000007
name
string

Наименование компонента

Example:
Компонент 1
typeID
string

Ссылка на ID типа компонента

Example:
00000000-0000-0000-0000-000000000004
isCalculated
boolean

Признак расчитываемости

Example:
true
Example 1
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"
    }
]
/componentGroups
GET /catalogs/list/componentGroups

Каталог со списком наименований групп компонентов. Не нужно путать с типом компонентов. У групп нет ссылочной связи с компонентами. Группы используют как информационные аналитики при создании проектов НИЦ с типом исследования.

Responses

200 OK
Body
Array
Object
guid
string

ID группы

Example:
00000000-0000-0000-0000-000000000013
name
string

Наименование группы

Example:
Группа 1
Example 1
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"
    }
]
/units
GET /catalogs/list/units

Каталог со списком наименований единиц измерений.

Responses

200 OK
Body
Array
Object
guid
string

ID единицы измерения

Example:
00000000-0000-0000-0000-000000000016
name
string

Наименование единицы измерения

Example:
Измерение 1
Example 1
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"
    }
]
/testMethods
GET /catalogs/list/testMethods

Каталог со списком наименований методов испытания (ТУ, ГОСТ).

Responses

200 OK
Body
Array
Object
guid
string

ID метода измерения

Example:
00000000-0000-0000-0000-000000000019
name
string

Наименование метода измерения

Example:
Метод 1
Example 1
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"
    }
]
/indicators
GET /catalogs/list/indicators

Каталог со списком показателей, и их атрибутами.

Responses

200 OK
Body
Array
Object
guid
string

ID показателя

Example:
00000000-0000-0000-0000-000000000022
name
string

Наименование показателя

Example:
Показатель 1
shortName
string

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

Example:
П1
unitID
string

Ссылка на ID единицы измерения (units)

Example:
00000000-0000-0000-0000-000000000016
testMethodID
string

Ссылка на ID метода измерения (testMethods)

Example:
00000000-0000-0000-0000-000000000019
group
boolean

Признак, определяющий, является ли данный показатель группой, или единичным показателем. Если true, по показатель - это группа в который включено несколько единичных показателей,

Example:
false
type
string

Тип показателя. Если SIMPLE - он одиночный, если GROUP - это группа, если CHILD то дочерний в группе

Example:
SIMPLE
parentIndicatorID
string

Ссылка на ID показателя, который является родителем (группой) для текущего

ordinal
integer

Порядковый номер показателя, реквизит для упорядочивания порядка вывода показателей в списке.

Example:
1
exclude
boolean

Признак отображения в выпадающем списке. Если exclude равно false, показатель отображается в списке, если exclude равно true - показатель не отображется. Признак был введен для тех показателей, которые, например, не могут существовать отдельно, вне группы.

Example:
false
productTypeIDs
Array of string

Массив типов продукт для которых умеет рассчитывать данный показатель. Ключевое поле для связки продуктов и рассчитываемых показателей

Example:
00000000-0000-0000-0000-000000000801
Example 1
GET /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": ["ПБВ"]
    }
]
/venues
GET /catalogs/list/venues

Каталог со списком наименований площадок.

Responses

200 OK
Body
Array
Object
guid
string

ID площадки

Example:
00000000-0000-0000-0000-000000000031
name
string

Наименование площадки

Example:
Площадка 1
main
boolean

Признак “Основаная площадка”. Если он равен true - в выпадающим списке площадка отображается в первой в списке.

Example:
false
Example 1
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
    }
]
/taskTypes
GET /catalogs/list/taskTypes

Каталог со списком наименований типов задач.

Responses

200 OK
Body
Array
Object
guid
string

ID типа задачи

Example:
00000000-0000-0000-0000-000000000034
name
string

Наименование типа задачи

Example:
Тип задачи 1
Example 1
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"
    }
]
/batchOfComponents
GET /catalogs/list/batchOfComponents

Каталог партий компонентов. Устаревший, используется для рецептур НИЦ. Должен быть заменен. Атрибутный состав не указывается, так ОН НЕ АКТУАЛЕН ДЛЯ ТЕКУЩЕГО РЕШЕНИЯ. Должен быть переделан в слечае получения партий по интеграции.

Responses

200 OK
/products
GET /catalogs/list/products

Коталог с наименованиями продуктов

Responses

200 OK
Body
Array
Object
guid
string
Example:
00000000-0000-0000-0000-000000000037
name
string
Example:
Продукт 1
productTypeID
string

Ссылка на ID типа продукта (productTypes)

Example:
00000000-0000-0000-0000-000000000801
Example 1
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": "Тест"
    }
]
/productTypes
GET /catalogs/list/productTypes

Коталог с наименованиями продуктов

Responses

200 OK
Body
Array
Object
guid
string

ID

Example:
00000000-0000-0000-0000-000000000801
name
string

Наименование

Example:
Тип продукта
Example 1
GET /catalogs/list/products HTTP/1.1 

HTTP/1.1 200 OK 

Content-Type: application/json

[
    {
        "guid": "00000000-0000-0000-0000-000000000801",
        "name": "Продукт 1"
    },
    {
        "guid": "00000000-0000-0000-0000-000000000802",
        "name": "ПБВ"
    },
]
/specifications
GET /catalogs/list/specifications

Каталог с наименованием спецификаций продуктов (атрибут шаблонов)

Responses

200 OK
Body
Array
Object
guid
string

ID спецификации

Example:
00000000-0000-0000-0000-000000000040
name
string

Наименование спецификации

Example:
Спецификация 1
productID
string

Ссылка на ID продукта (products)

Example:
00000000-0000-0000-0000-000000000037
Example 1
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"
    }
]
/normTechDoc
GET /catalogs/list/normTechDoc

Responses

200 OK
Body
Array
Object
guid
string
Example:
00000000-0000-0000-0000-000000000048
name
string
Example:
НТД 1
productID
string
Example:
00000000-0000-0000-0000-000000000037
Example 1
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"
    }
]
/calculations

Корневой URL для управлением расчетов технологов

POST /calculations/list
DELETE /calculations/delete
/list
POST /calculations/list

Запрос для получения списка расчетов. В теле запроса передаются параметры поиска, фильтрации, и пагинации.

Request body

Object
search
string

Текстовое поле для передачи значения полнотекстового поиска. Не передается исли полнотекстовый поиск не выполняется.

Example:
текст
productIDs
Array

Массив содержащий ссылки на продукты по которым выполняется фильтраци. Не передается если нет фильтрации по продуктам

Example:
["00000000-0000-0000-0000-000000000037"]
string
Example:
00000000-0000-0000-0000-000000000037
specificationIDs
Array

Массив содержащий ссылки на спецификации по которым выполняется фильтраци. Не передается если нет фильтрации по спецификациям

Example:
["00000000-0000-0000-0000-000000000040"]
string
Example:
00000000-0000-0000-0000-000000000040
normTechDocIDs
Array of string
Example:
00000000-0000-0000-0000-000000000001
userIDs
Array

Массив содержащий ссылки на пользователей (создателей расчетов) по которым выполняется фильтраци. Не передается если нет фильтрации по пользователю

Example:
["00000000-0000-0000-0000-000000000001"]
string
Example:
00000000-0000-0000-0000-000000000001
create_date_start
string

Фильтра по дате создание, критерий “от даты”. Не передается, если подобая фильтрация не выполняется.

Example:
2025-07-14T14:05:16Z
create_date_end
string

Фильтра по дате создание, критерий “по дату”. Не передается, если подобая фильтрация не выполняется.

Example:
2025-07-29T14:05:16Z
currentQuantity
integer

Критерий для пагинации. Определяет, какой должен быть порядковый номер расчета, начиная с которого необходимо передавать список запросов. Передается всегда не зависит от наличия/отсутствия фильтрации.

Example:
0
defaultQuantity
integer

Критерий для пагинации. Определяет, какое количество расчетов необходимо передать с бека на фронт, начиная с расчета определенного по критерию currentQuantity. То есть если для отображения на странице выбрано 20 запросов, то на первой странице currentQuantity будет 0, на второй 21, на третий 41, на третьей 61, и так далее.Передается всегда не зависит от наличия/отсутствия фильтрации.

Example:
50

Responses

200 OK
Body
Object
itemsCount
integer

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

Example:
1703
calculations
Array

Массив со списком расчетов которые должны быть отображены на странице

Object
guid
string

ID записи рачета

Example:
00000000-0000-0000-0000-000000000100
userID
string

Содержит ID автора расчета. Содержит GUID, так как если нам преидется определять может ли человек редактировать свой/не свой расчет то нужно как то отделять свои расчеты от чужих.

Example:
00000000-0000-0000-0000-000000000001
number
string

Содержит номер расчета. Не содержит guid, так как на экране расчетов не нужно ими управлять и редактировать.

Example:
2025-0001
create_date
string

Содержит дату создания расчета.

Example:
2025-07-14T14:05:16Z
comment
string

Содержит текст комменатрия расчета

Example:
Текст комментария
product
string

Содержит наименование продукта в расчете. Не содержит guid, так как на экране расчетов не нужно ими управлять и редактировать. Если передается пустым как “”, для отображения его необходимо заменить на “Не выбран”.

Example:
Продукт 1
specification
string

Содержит наименование спецификации в расчете. Не содержит guid, так как на экране расчетов не нужно ими управлять и редактировать. Если передается пустым как “”, для отображения его необходимо заменить на “-”.

Example:
Спецификация 1
normTechDoc
string

Содержит наименование НТД в расчете. Не содержит guid, так как на экране расчетов не нужно ими управлять и редактировать. Если передается пустым как “”, для отображения его необходимо заменить на “-”.

Example:
НТД 1
Example 1
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"
        }
    ]
}
/writeOnlist (при комментрировании)
POST /calculations/writeOnlist

Запрос для редактирования комменатрия к конкретному расчету

Request parameters

guid
string optional

ID расчета для которого редактируется комментарий

Example:
00000000-0000-0000-0000-000000000100

Request body

Object
comment
string

Содержит новый текст комменатрия

Example:
Текст комменатрия 2

Responses

200 OK
Body
Object
calculation
Object

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

guid
string
Example:
00000000-0000-0000-0000-000000000100
userID
string
Example:
Иванов Иван Иванович
number
string
Example:
2025-0001
create_date
string
Example:
2025-07-14T14:05:16Z
comment
string
Example:
Текст комментария 2
product
string
Example:
Продукт 1
specification
string
Example:
Спецификация 1
requirementsTemplate
string
Example:
Шаблон 1
Example 1
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"
    }
}
/delete
DELETE /calculations/delete

Удаление строки расчета. При успешном удалении просто возращается код 200

Request parameters

guid
string optional

ID удаляемого расчета

Responses

200 OK
/write (при создании/копировании расчета)
POST /calculations/write

Запрос отправляется для создания нового расчета. Наверно его нужно как-то отличать от других запросов, которые в будущем могут появится, так что давайте добавим в него пока бесполезное свойство calculation с значением NEW. В ответе будет содержать пустые значения для отображения

Request body

Object
guid
string

Передается если редактируется уже существующий расчет

status
string

Атрибут, по которому определяется что надо выполнить создание или копирование нового расчета. Если происходит создание - равен NEW. Если происходит копирование - равен NEW. Если редактируем продукт, НТД и спецификацию, передаем статус

Example:
COPY
calculationID
string

Передается в случае, если выполняется копирование. Содержит ID расчета который нужно скопировать.

Example:
00000000-0000-0000-0000-000000000100
productID
string

Передается если редактируется продукт в модалке

Example:
00000000-0000-0000-0000-000000000037
specificationID
string

Передается если редактируется спецификация в модалке

Example:
00000000-0000-0000-0000-000000000040
normTechDocID
string

Передается если редактируется НТД в модалке

Example:
00000000-0000-0000-0000-000000000048

Responses

200 OK
Body
Object
guid
string

ID расчета

Example:
00000000-0000-0000-0000-000000000100
userID
string

ID автора расчета (users)

Example:
00000000-0000-0000-0000-000000000001
number
string

Номер расчета

Example:
2025-0001
create_date
string

Дата создания расчета

Example:
2025-06-26T09:43:01Z
comment
string

Комменатрий к расчету

productID
string

Ссылка на ID продукта (products)

Example:
00000000-0000-0000-0000-000000000037
specificationID
string

Ссылка на ID спецификации (specifications)

Example:
00000000-0000-0000-0000-000000000040
normTechDocID
string

Ссылка на ID НТД (normTechDoc)

Example:
00000000-0000-0000-0000-000000000048
components
Array
Object
id
string

ID конкретной записи компонента в расчете

Example:
00000000-0000-0000-0000-000000000201
componentID
string

Ссылка на ID компонента (components)

Example:
00000000-0000-0000-0000-000000000007
componentTypeID
string

Ссылка на ID типа компонента (components)

Example:
00000000-0000-0000-0000-000000000004
view
string

Вариант отображения компонента. Если “COMPONENT” - то это конкретный компонент (components). Если “TYPE” то это тип компаонента (componentTypes)

Example:
COMPONENT
type
string

Правило сравнения процента ввода массы. Если “EQUAL” то ТОЧНО, если “RANGE” то ИНТЕРВАЛ, если “GREATER” значит БОЛЬШЕ, если “GREATER_OR_EQUAL” значит БОЛЬШЕ ИЛИ РОВНО, если “LESS” значит МЕНЬШЕ, если “LESS_OR_EQUAL” значит МЕНЬШЕ ИЛИ РОВНО.

Example:
EQUAL
massPercent
number

Процент ввода

Example:
90.6
massPercentMax
number

Процент ввода максимальный, при type = RANGE

Example:
95
massPercentForecast
string

Прогнозный процент ввода

Example:
90
massPercentFact
number

Процент ввода массы фактический

Example:
93
comment
string

Комментарий к показателю

Example:
Комментарий
indicators
Array

Массив показателей у компонента

Object
id
string

ID конкретной записи показателя компонента в расчете

Example:
00000000-0000-0000-0000-000000000301
indicatorID
string

Ссылка на ID показателя (indicators)

Example:
00000000-0000-0000-0000-000000000022
type
string

Тип обязательности заполнения, если MANDATORY - обязательный, если REFERENCE - справочный.

Example:
MANDATORY
value
number

Значение показателя

Example:
138
technicalRequirements
Array

Технические требования

Object
id
string

ID конкретной записи техтребований в расчете

Example:
00000000-0000-0000-0000-000000000401
indicatorID
string

Ссылка на ID показателя (indicators)

Example:
00000000-0000-0000-0000-000000000022
standardValueMin
number

Значение ОТ

Example:
0.1
standardValueMax
number

Значение ДО

Example:
10
comment
string

Комментарий

Example:
Комментарий
decimalPlaces
number

Точность (количество знаков после запятой) по умолчанию для данного показателя

Example:
3
forecastValue
number

Прогнозное значение (из расчета)

Example:
32.53
factValue
number

Фактическое значение показателя

parentIndicator
string

Ссылка на ID показателя, который является родителем (группой) для текущего

group
boolean

Признак, определяющий, является ли данный показатель группой, или единичным показателем. Если true, по показатель - это группа в который включено несколько единичных показателей,

type
string

Тип показателя. Если SIMPLE - он одиночный, если GROUP - это группа, если CHILD то дочерний в группе

Example:
SIMPLE
Example 1
POST /calculations/write HTTP/1.1 

Content-Type: application/json

{
    "status": "COPY",
    "calculationID": "00000000-0000-0000-0000-000000000100"
}
/get (получить данные о расчете)
GET /calculations/write

При открытии экрана уже заполненого расчета (не путать с созданием и копирование)

Request parameters

guid
string optional

ID загружаемого расчета

Example:
00000000-0000-0000-0000-000000000100

Responses

200 OK
Body
Object
guid
string

ID расчета

Example:
00000000-0000-0000-0000-000000000100
userID
string

ID автора расчета (users)

Example:
00000000-0000-0000-0000-000000000001
number
string

Номер расчета

Example:
2025-0001
create_date
string

Дата создания расчета

Example:
2025-06-26T09:43:01Z
comment
string

Комменатрий к расчету

productID
string

Ссылка на ID продукта (products)

Example:
00000000-0000-0000-0000-000000000037
specificationID
string

Ссылка на ID спецификации (specifications)

Example:
00000000-0000-0000-0000-000000000040
normTechDocID
string

Ссылка на ID НТД (normTechDoc)

Example:
00000000-0000-0000-0000-000000000048
components
Array
Object
id
string

ID конкретной записи компонента в расчете

Example:
00000000-0000-0000-0000-000000000201
componentID
string

Ссылка на ID компонента (components)

Example:
00000000-0000-0000-0000-000000000007
componentTypeID
string

Ссылка на ID типа компонента (components)

Example:
00000000-0000-0000-0000-000000000004
view
string

Вариант отображения компонента. Если “COMPONENT” - то это конкретный компонент (components). Если “TYPE” то это тип компаонента (componentTypes)

Example:
COMPONENT
type
string

Правило сравнения процента ввода массы. Если “EQUAL” то ТОЧНО, если “RANGE” то ИНТЕРВАЛ, если “GREATER” значит БОЛЬШЕ, если “GREATER_OR_EQUAL” значит БОЛЬШЕ ИЛИ РОВНО, если “LESS” значит МЕНЬШЕ, если “LESS_OR_EQUAL” значит МЕНЬШЕ ИЛИ РОВНО.

Example:
EQUAL
massPercent
number

Процент ввода

Example:
90.6
massPercentMax
number

Процент ввода максимальный, при type = RANGE

Example:
95
massPercentForecast
string

Прогнозный процент ввода

Example:
90
massPercentFact
number

Процент ввода массы фактический

Example:
93
comment
string

Комментарий к показателю

Example:
Комментарий
indicators
Array

Массив показателей у компонента

Object
id
string

ID конкретной записи показателя компонента в расчете

Example:
00000000-0000-0000-0000-000000000301
indicatorID
string

Ссылка на ID показателя (indicators)

Example:
00000000-0000-0000-0000-000000000022
type
string

Тип обязательности заполнения, если MANDATORY - обязательный, если REFERENCE - справочный.

Example:
MANDATORY
value
number

Значение показателя

Example:
138
technicalRequirements
Array

Технические требования

Object
id
string

ID конкретной записи техтребований в расчете

Example:
00000000-0000-0000-0000-000000000401
indicatorID
string

Ссылка на ID показателя (indicators)

Example:
00000000-0000-0000-0000-000000000022
standardValueMin
number

Значение ОТ

Example:
0.1
standardValueMax
number

Значение ДО

Example:
10
comment
string

Комментарий

Example:
Комментарий
decimalPlaces
number

Точность (количество знаков после запятой) по умолчанию для данного показателя

Example:
3
forecastValue
number

Прогнозное значение (из расчета)

Example:
32.53
factValue
number

Фактическое значение показателя

parentIndicator
string

Ссылка на ID показателя, который является родителем (группой) для текущего

group
boolean

Признак, определяющий, является ли данный показатель группой, или единичным показателем. Если true, по показатель - это группа в который включено несколько единичных показателей,

type
string

Тип показателя. Если SIMPLE - он одиночный, если GROUP - это группа, если CHILD то дочерний в группе

Example:
SIMPLE
Example 1
POST /calculations/write HTTP/1.1 

Content-Type: application/json

{
    "status": "COPY",
    "calculationID": "00000000-0000-0000-0000-000000000100"
}