баг при смене страницы
This commit is contained in:
332
verification-conditions-api.md
Normal file
332
verification-conditions-api.md
Normal file
@@ -0,0 +1,332 @@
|
||||
# API для элемента "Условия поверки"
|
||||
|
||||
## Базовый URL
|
||||
|
||||
```
|
||||
/api/v1/verification-conditions
|
||||
```
|
||||
|
||||
## Эндпоинты
|
||||
|
||||
### 1. Лаборатории
|
||||
|
||||
#### GET /laboratories
|
||||
|
||||
Получить список всех лабораторий
|
||||
|
||||
```json
|
||||
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
|
||||
|
||||
Создать новую лабораторию
|
||||
|
||||
```json
|
||||
Request:
|
||||
{
|
||||
"name": "Новая лаборатория",
|
||||
"code": "NEW_LAB",
|
||||
"description": "Описание",
|
||||
"address": "Адрес"
|
||||
}
|
||||
```
|
||||
|
||||
#### PUT /laboratories/:id
|
||||
|
||||
Обновить лабораторию
|
||||
|
||||
#### DELETE /laboratories/:id
|
||||
|
||||
Удалить лабораторию
|
||||
|
||||
### 2. Типы условий
|
||||
|
||||
#### GET /condition-types
|
||||
|
||||
Получить все доступные типы условий
|
||||
|
||||
```json
|
||||
Response 200:
|
||||
[
|
||||
{
|
||||
"id": 1,
|
||||
"name": "Температура",
|
||||
"unit": "°C",
|
||||
"dataType": "number",
|
||||
"description": "Температура окружающей среды"
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
#### POST /condition-types
|
||||
|
||||
Создать новый тип условия
|
||||
|
||||
```json
|
||||
Request:
|
||||
{
|
||||
"name": "Новое условие",
|
||||
"unit": "единица",
|
||||
"dataType": "number",
|
||||
"description": "Описание"
|
||||
}
|
||||
```
|
||||
|
||||
### 3. Настройка условий для лабораторий
|
||||
|
||||
#### GET /laboratories/:labId/condition-types
|
||||
|
||||
Получить настроенные типы условий для лаборатории
|
||||
|
||||
#### POST /laboratories/:labId/condition-types
|
||||
|
||||
Добавить тип условия к лаборатории
|
||||
|
||||
```json
|
||||
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
|
||||
```
|
||||
|
||||
```json
|
||||
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
|
||||
|
||||
Создать/обновить условия для дня
|
||||
|
||||
```json
|
||||
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)
|
||||
```
|
||||
|
||||
```json
|
||||
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
|
||||
|
||||
Сохранить условия из элемента формы
|
||||
|
||||
```json
|
||||
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
|
||||
|
||||
```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` - Внутренняя ошибка сервера
|
||||
Reference in New Issue
Block a user