6.8 KiB
6.8 KiB
API для элемента "Условия поверки"
Базовый URL
/api/v1/verification-conditions
Эндпоинты
1. Лаборатории
GET /laboratories
Получить список всех лабораторий
Response 200:
[
{
"id": 1,
"name": "Лаборатория температуры",
"code": "TEMP_LAB",
"description": "Лаборатория поверки температурных приборов",
"address": "ул. Примерная, 1",
"conditionTypes": [
{
"id": 1,
"name": "Температура",
"unit": "°C",
"isRequired": true,
"defaultValue": "20",
"minValue": 15,
"maxValue": 30
}
]
}
]
GET /laboratories/:id
Получить лабораторию по ID с настройками условий
POST /laboratories
Создать новую лабораторию
Request:
{
"name": "Новая лаборатория",
"code": "NEW_LAB",
"description": "Описание",
"address": "Адрес"
}
PUT /laboratories/:id
Обновить лабораторию
DELETE /laboratories/:id
Удалить лабораторию
2. Типы условий
GET /condition-types
Получить все доступные типы условий
Response 200:
[
{
"id": 1,
"name": "Температура",
"unit": "°C",
"dataType": "number",
"description": "Температура окружающей среды"
}
]
POST /condition-types
Создать новый тип условия
Request:
{
"name": "Новое условие",
"unit": "единица",
"dataType": "number",
"description": "Описание"
}
3. Настройка условий для лабораторий
GET /laboratories/:labId/condition-types
Получить настроенные типы условий для лаборатории
POST /laboratories/:labId/condition-types
Добавить тип условия к лаборатории
Request:
{
"conditionTypeId": 1,
"isRequired": true,
"defaultValue": "20",
"minValue": 15,
"maxValue": 30
}
PUT /laboratories/:labId/condition-types/:typeId
Обновить настройки типа условия для лаборатории
DELETE /laboratories/:labId/condition-types/:typeId
Удалить тип условия из лаборатории
4. Условия по дням (основная функциональность)
GET /daily-conditions
Получить условия по дням с фильтрацией
Query параметры:
- laboratoryId: ID лаборатории
- dateFrom: дата начала (YYYY-MM-DD)
- dateTo: дата окончания (YYYY-MM-DD)
- date: конкретная дата (YYYY-MM-DD)
Примеры:
GET /daily-conditions?laboratoryId=1&dateFrom=2024-01-01&dateTo=2024-01-31
GET /daily-conditions?laboratoryId=1&date=2024-01-15
Response 200:
[
{
"id": 1,
"laboratoryId": 1,
"date": "2024-01-15",
"conditions": {
"temperature": 23.5,
"humidity": 45.2,
"atmosphericPressure": 101.3
},
"createdAt": "2024-01-15T10:30:00Z",
"updatedAt": "2024-01-15T10:30:00Z",
"createdBy": "user@example.com"
}
]
GET /daily-conditions/:id
Получить условия для конкретного дня по ID
POST /daily-conditions
Создать/обновить условия для дня
Request:
{
"laboratoryId": 1,
"date": "2024-01-15",
"conditions": {
"temperature": 23.5,
"humidity": 45.2,
"atmosphericPressure": 101.3
}
}
PUT /daily-conditions/:id
Обновить условия для дня
DELETE /daily-conditions/:id
Удалить запись условий
5. Специальные эндпоинты для элемента
GET /daily-conditions/for-element
Получить условия для использования в элементе формы
Query параметры:
- laboratoryId: ID лаборатории (обязательный)
- date: дата (обязательный, YYYY-MM-DD)
Response 200:
{
"laboratoryId": 1,
"laboratoryName": "Лаборатория температуры",
"date": "2024-01-15",
"conditions": [
{
"typeId": 1,
"typeName": "Температура",
"unit": "°C",
"value": 23.5,
"isRequired": true,
"minValue": 15,
"maxValue": 30
},
{
"typeId": 2,
"typeName": "Влажность",
"unit": "%",
"value": 45.2,
"isRequired": true,
"minValue": 30,
"maxValue": 80
}
],
"hasUnsavedChanges": false
}
POST /daily-conditions/save-for-element
Сохранить условия из элемента формы
Request:
{
"laboratoryId": 1,
"date": "2024-01-15",
"conditions": {
"temperature": 23.5,
"humidity": 45.2,
"atmosphericPressure": 101.3
}
}
Response 200:
{
"id": 1,
"success": true,
"message": "Условия сохранены"
}
Типы данных TypeScript
interface Laboratory {
id: number
name: string
code: string
description?: string
address?: string
conditionTypes?: LaboratoryConditionType[]
createdAt: string
updatedAt: string
}
interface ConditionType {
id: number
name: string
unit?: string
dataType: 'number' | 'string' | 'boolean'
description?: string
createdAt: string
}
interface LaboratoryConditionType {
id: number
laboratoryId: number
conditionTypeId: number
conditionType?: ConditionType
isRequired: boolean
defaultValue?: string
minValue?: number
maxValue?: number
createdAt: string
}
interface DailyConditions {
id: number
laboratoryId: number
laboratory?: Laboratory
date: string // YYYY-MM-DD
conditions: Record<string, any> // JSON объект
createdAt: string
updatedAt: string
createdBy?: string
}
interface ConditionValue {
typeId: number
typeName: string
unit?: string
value: any
isRequired: boolean
minValue?: number
maxValue?: number
}
interface ElementConditionsData {
laboratoryId: number
laboratoryName: string
date: string
conditions: ConditionValue[]
hasUnsavedChanges: boolean
}
Коды ошибок
400- Неверные параметры запроса404- Лаборатория/условия не найдены409- Конфликт (условия для этой даты уже существуют)422- Ошибка валидации (значения не в допустимом диапазоне)500- Внутренняя ошибка сервера